Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame] | 1 | /** @file
|
| 2 |
|
| 3 | Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
| 4 | This program and the accompanying materials
|
| 5 | are licensed and made available under the terms and conditions of the BSD License
|
| 6 | which accompanies this distribution. The full text of the license may be found at
|
| 7 | http://opensource.org/licenses/bsd-license.php
|
| 8 |
|
| 9 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 10 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 11 |
|
| 12 | Module Name:
|
| 13 | Debug.c
|
| 14 |
|
| 15 | Abstract:
|
| 16 |
|
| 17 | Revision History:
|
| 18 |
|
| 19 | **/
|
| 20 |
|
| 21 | #include "DxeIpl.h"
|
| 22 | #include <Library/SerialPortLib.h>
|
| 23 | #include "SerialStatusCode.h"
|
| 24 | #include "Debug.h"
|
| 25 |
|
| 26 | UINT8 *mCursor;
|
| 27 | UINT8 mHeaderIndex = 10;
|
| 28 |
|
| 29 |
|
| 30 | VOID
|
| 31 | PrintHeader (
|
| 32 | CHAR8 Char
|
| 33 | )
|
| 34 | {
|
| 35 | *(UINT8 *)(UINTN)(0x000b8000 + mHeaderIndex) = Char;
|
| 36 | mHeaderIndex += 2;
|
| 37 | }
|
| 38 |
|
| 39 | VOID
|
| 40 | ClearScreen (
|
| 41 | VOID
|
| 42 | )
|
| 43 | {
|
| 44 | UINT32 Index;
|
| 45 |
|
| 46 | mCursor = (UINT8 *)(UINTN)(0x000b8000 + 160);
|
| 47 | for (Index = 0; Index < 80 * 49; Index++) {
|
| 48 | *mCursor = ' ';
|
| 49 | mCursor += 2;
|
| 50 | }
|
| 51 | mCursor = (UINT8 *)(UINTN)(0x000b8000 + 160);
|
| 52 | }
|
| 53 |
|
| 54 | VOID
|
| 55 | PrintString (
|
| 56 | IN CONST CHAR8 *FormatString,
|
| 57 | ...
|
| 58 | )
|
| 59 | {
|
| 60 | UINTN Index;
|
| 61 | CHAR8 PrintBuffer[1000];
|
| 62 | VA_LIST Marker;
|
| 63 |
|
| 64 | VA_START (Marker, FormatString);
|
| 65 | AsciiVSPrint (PrintBuffer, sizeof (PrintBuffer), FormatString, Marker);
|
| 66 | VA_END (Marker);
|
| 67 |
|
| 68 | for (Index = 0; PrintBuffer[Index] != 0; Index++) {
|
| 69 | if (PrintBuffer[Index] == '\n') {
|
| 70 | mCursor = (UINT8 *) (UINTN) (0xb8000 + (((((UINTN)mCursor - 0xb8000) + 160) / 160) * 160));
|
| 71 | } else {
|
| 72 | *mCursor = (UINT8) PrintBuffer[Index];
|
| 73 | mCursor += 2;
|
| 74 | }
|
| 75 | }
|
| 76 |
|
| 77 | //
|
| 78 | // All information also output to serial port.
|
| 79 | //
|
| 80 | SerialPortWrite ((UINT8 *) PrintBuffer, Index);
|
| 81 | }
|
| 82 |
|