mirror of https://github.com/acidanthera/audk.git
These libraries moved to ArmPkg, but did not get deleted. Fixing that issue.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10862 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2e4c2a049b
commit
18bd7f34e9
|
@ -1,246 +0,0 @@
|
||||||
/** @file
|
|
||||||
UEFI Debug Library that uses PrintLib to send messages to STDERR.
|
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
|
||||||
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
|
||||||
This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
|
|
||||||
#include <Uefi.h>
|
|
||||||
#include <Library/DebugLib.h>
|
|
||||||
#include <Library/PrintLib.h>
|
|
||||||
#include <Library/PcdLib.h>
|
|
||||||
#include <Library/BaseLib.h>
|
|
||||||
#include <Library/BaseMemoryLib.h>
|
|
||||||
#include <Library/SemihostLib.h>
|
|
||||||
|
|
||||||
//
|
|
||||||
// Define the maximum debug and assert message length that this library supports
|
|
||||||
//
|
|
||||||
#define MAX_DEBUG_MESSAGE_LENGTH 0x100
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Prints a debug message to the debug output device if the specified error level is enabled.
|
|
||||||
|
|
||||||
If any bit in ErrorLevel is also set in PcdDebugPrintErrorLevel, then print
|
|
||||||
the message specified by Format and the associated variable argument list to
|
|
||||||
the debug output device.
|
|
||||||
|
|
||||||
If Format is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param ErrorLevel The error level of the debug message.
|
|
||||||
@param Format Format string for the debug message to print.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
EFIAPI
|
|
||||||
DebugPrint (
|
|
||||||
IN UINTN ErrorLevel,
|
|
||||||
IN CONST CHAR8 *Format,
|
|
||||||
...
|
|
||||||
)
|
|
||||||
{
|
|
||||||
CHAR8 AsciiBuffer[MAX_DEBUG_MESSAGE_LENGTH];
|
|
||||||
VA_LIST Marker;
|
|
||||||
|
|
||||||
//
|
|
||||||
// If Format is NULL, then ASSERT().
|
|
||||||
//
|
|
||||||
ASSERT (Format != NULL);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check driver debug mask value and global mask
|
|
||||||
//
|
|
||||||
if ((ErrorLevel & PcdGet32(PcdDebugPrintErrorLevel)) == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Convert the DEBUG() message to a Unicode String
|
|
||||||
//
|
|
||||||
VA_START (Marker, Format);
|
|
||||||
AsciiVSPrint (AsciiBuffer, sizeof (AsciiBuffer), Format, Marker);
|
|
||||||
VA_END (Marker);
|
|
||||||
|
|
||||||
SemihostWriteString (AsciiBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Prints an assert message containing a filename, line number, and description.
|
|
||||||
This may be followed by a breakpoint or a dead loop.
|
|
||||||
|
|
||||||
Print a message of the form "ASSERT <FileName>(<LineNumber>): <Description>\n"
|
|
||||||
to the debug output device. If DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED bit of
|
|
||||||
PcdDebugProperyMask is set then CpuBreakpoint() is called. Otherwise, if
|
|
||||||
DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED bit of PcdDebugProperyMask is set then
|
|
||||||
CpuDeadLoop() is called. If neither of these bits are set, then this function
|
|
||||||
returns immediately after the message is printed to the debug output device.
|
|
||||||
DebugAssert() must actively prevent recusrsion. If DebugAssert() is called while
|
|
||||||
processing another DebugAssert(), then DebugAssert() must return immediately.
|
|
||||||
|
|
||||||
If FileName is NULL, then a <FileName> string of "(NULL) Filename" is printed.
|
|
||||||
|
|
||||||
If Description is NULL, then a <Description> string of "(NULL) Description" is printed.
|
|
||||||
|
|
||||||
@param FileName Pointer to the name of the source file that generated the assert condition.
|
|
||||||
@param LineNumber The line number in the source file that generated the assert condition
|
|
||||||
@param Description Pointer to the description of the assert condition.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
EFIAPI
|
|
||||||
DebugAssert (
|
|
||||||
IN CONST CHAR8 *FileName,
|
|
||||||
IN UINTN LineNumber,
|
|
||||||
IN CONST CHAR8 *Description
|
|
||||||
)
|
|
||||||
{
|
|
||||||
CHAR8 AsciiBuffer[MAX_DEBUG_MESSAGE_LENGTH];
|
|
||||||
|
|
||||||
//
|
|
||||||
// Generate the ASSERT() message in Unicode format
|
|
||||||
//
|
|
||||||
AsciiSPrint (AsciiBuffer, sizeof (AsciiBuffer), "ASSERT %a(%d): %a\n", FileName, LineNumber, Description);
|
|
||||||
|
|
||||||
SemihostWriteString (AsciiBuffer);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Generate a Breakpoint, DeadLoop, or NOP based on PCD settings
|
|
||||||
//
|
|
||||||
if ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED) != 0) {
|
|
||||||
CpuBreakpoint ();
|
|
||||||
} else if ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED) != 0) {
|
|
||||||
CpuDeadLoop ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Fills a target buffer with PcdDebugClearMemoryValue, and returns the target buffer.
|
|
||||||
|
|
||||||
This function fills Length bytes of Buffer with the value specified by
|
|
||||||
PcdDebugClearMemoryValue, and returns Buffer.
|
|
||||||
|
|
||||||
If Buffer is NULL, then ASSERT().
|
|
||||||
|
|
||||||
If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
|
|
||||||
|
|
||||||
@param Buffer Pointer to the target buffer to fill with PcdDebugClearMemoryValue.
|
|
||||||
@param Length Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue.
|
|
||||||
|
|
||||||
@return Buffer
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
DebugClearMemory (
|
|
||||||
OUT VOID *Buffer,
|
|
||||||
IN UINTN Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// If Buffer is NULL, then ASSERT().
|
|
||||||
//
|
|
||||||
ASSERT (Buffer != NULL);
|
|
||||||
|
|
||||||
//
|
|
||||||
// SetMem() checks for the the ASSERT() condition on Length and returns Buffer
|
|
||||||
//
|
|
||||||
return SetMem (Buffer, Length, PcdGet8(PcdDebugClearMemoryValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Returns TRUE if ASSERT() macros are enabled.
|
|
||||||
|
|
||||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of
|
|
||||||
PcdDebugProperyMask is set. Otherwise FALSE is returned.
|
|
||||||
|
|
||||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is set.
|
|
||||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is clear.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
DebugAssertEnabled (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Returns TRUE if DEBUG()macros are enabled.
|
|
||||||
|
|
||||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of
|
|
||||||
PcdDebugProperyMask is set. Otherwise FALSE is returned.
|
|
||||||
|
|
||||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is set.
|
|
||||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is clear.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
DebugPrintEnabled (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Returns TRUE if DEBUG_CODE()macros are enabled.
|
|
||||||
|
|
||||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of
|
|
||||||
PcdDebugProperyMask is set. Otherwise FALSE is returned.
|
|
||||||
|
|
||||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set.
|
|
||||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is clear.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
DebugCodeEnabled (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Returns TRUE if DEBUG_CLEAR_MEMORY()macro is enabled.
|
|
||||||
|
|
||||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_CLEAR_MEMORY_ENABLED bit of
|
|
||||||
PcdDebugProperyMask is set. Otherwise FALSE is returned.
|
|
||||||
|
|
||||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is set.
|
|
||||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is clear.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
DebugClearMemoryEnabled (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
#/** @file
|
|
||||||
# Debug Library for UEFI drivers
|
|
||||||
#
|
|
||||||
# Library to abstract Framework extensions that conflict with UEFI 2.0 Specification
|
|
||||||
# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
|
|
||||||
#
|
|
||||||
# This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#**/
|
|
||||||
|
|
||||||
[Defines]
|
|
||||||
INF_VERSION = 0x00010005
|
|
||||||
BASE_NAME = SemiHostingDebugLib
|
|
||||||
FILE_GUID = 2A8D3FC4-8DB1-4D27-A3F3-780AF03CF848
|
|
||||||
MODULE_TYPE = BASE
|
|
||||||
VERSION_STRING = 1.0
|
|
||||||
LIBRARY_CLASS = DebugLib|BASE SEC DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
|
|
||||||
|
|
||||||
|
|
||||||
[Sources.common]
|
|
||||||
DebugLib.c
|
|
||||||
|
|
||||||
|
|
||||||
[Packages]
|
|
||||||
MdePkg/MdePkg.dec
|
|
||||||
ArmPkg/ArmPkg.dec
|
|
||||||
|
|
||||||
[LibraryClasses]
|
|
||||||
BaseMemoryLib
|
|
||||||
BaseLib
|
|
||||||
PcdLib
|
|
||||||
PrintLib
|
|
||||||
SemihostLib
|
|
||||||
|
|
||||||
[Pcd.common]
|
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel
|
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
|
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
#/** @file
|
|
||||||
# Semihosting serail port lib
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008, Apple Inc. All rights reserved.<BR>
|
|
||||||
#
|
|
||||||
# This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#**/
|
|
||||||
|
|
||||||
[Defines]
|
|
||||||
INF_VERSION = 0x00010005
|
|
||||||
BASE_NAME = SemiHostingSerialPortLib
|
|
||||||
FILE_GUID = E9FB2D1E-05D9-421C-8C35-6100BB0093B7
|
|
||||||
MODULE_TYPE = BASE
|
|
||||||
VERSION_STRING = 1.0
|
|
||||||
LIBRARY_CLASS = SerialPortLib
|
|
||||||
|
|
||||||
|
|
||||||
[Sources.common]
|
|
||||||
SerialPortLib.c
|
|
||||||
|
|
||||||
|
|
||||||
[Packages]
|
|
||||||
MdePkg/MdePkg.dec
|
|
||||||
ArmPkg/ArmPkg.dec
|
|
||||||
|
|
||||||
[LibraryClasses]
|
|
||||||
SemihostLib
|
|
|
@ -1,145 +0,0 @@
|
||||||
/** @file
|
|
||||||
Serial I/O Port library functions with no library constructor/destructor
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
|
||||||
|
|
||||||
This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#include <Uefi.h>
|
|
||||||
#include <Library/DebugLib.h>
|
|
||||||
#include <Library/SemihostLib.h>
|
|
||||||
#include <Library/SerialPortLib.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Programmed hardware of Serial port.
|
|
||||||
|
|
||||||
@return Always return EFI_UNSUPPORTED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
RETURN_STATUS
|
|
||||||
EFIAPI
|
|
||||||
SerialPortInitialize (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if (SemihostConnectionSupported ()) {
|
|
||||||
return RETURN_SUCCESS;
|
|
||||||
} else {
|
|
||||||
return RETURN_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Write data to serial device.
|
|
||||||
|
|
||||||
@param Buffer Point of data buffer which need to be writed.
|
|
||||||
@param NumberOfBytes Number of output bytes which are cached in Buffer.
|
|
||||||
|
|
||||||
@retval 0 Write data failed.
|
|
||||||
@retval !0 Actual number of bytes writed to serial device.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#define PRINT_BUFFER_SIZE 512
|
|
||||||
#define PRINT_BUFFER_THRESHOLD (PRINT_BUFFER_SIZE - 4)
|
|
||||||
|
|
||||||
UINTN
|
|
||||||
EFIAPI
|
|
||||||
SerialPortWrite (
|
|
||||||
IN UINT8 *Buffer,
|
|
||||||
IN UINTN NumberOfBytes
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT8 PrintBuffer[PRINT_BUFFER_SIZE];
|
|
||||||
UINTN SourceIndex = 0;
|
|
||||||
UINTN DestinationIndex = 0;
|
|
||||||
UINT8 CurrentCharacter;
|
|
||||||
|
|
||||||
while (SourceIndex < NumberOfBytes)
|
|
||||||
{
|
|
||||||
CurrentCharacter = Buffer[SourceIndex++];
|
|
||||||
|
|
||||||
switch (CurrentCharacter)
|
|
||||||
{
|
|
||||||
case '\r':
|
|
||||||
continue;
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
PrintBuffer[DestinationIndex++] = ' ';
|
|
||||||
// fall through
|
|
||||||
|
|
||||||
default:
|
|
||||||
PrintBuffer[DestinationIndex++] = CurrentCharacter;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DestinationIndex > PRINT_BUFFER_THRESHOLD)
|
|
||||||
{
|
|
||||||
PrintBuffer[DestinationIndex] = '\0';
|
|
||||||
SemihostWriteString ((CHAR8 *) PrintBuffer);
|
|
||||||
|
|
||||||
DestinationIndex = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DestinationIndex > 0)
|
|
||||||
{
|
|
||||||
PrintBuffer[DestinationIndex] = '\0';
|
|
||||||
SemihostWriteString ((CHAR8 *) PrintBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read data from serial device and save the datas in buffer.
|
|
||||||
|
|
||||||
@param Buffer Point of data buffer which need to be writed.
|
|
||||||
@param NumberOfBytes Number of output bytes which are cached in Buffer.
|
|
||||||
|
|
||||||
@retval 0 Read data failed.
|
|
||||||
@retval !0 Aactual number of bytes read from serial device.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINTN
|
|
||||||
EFIAPI
|
|
||||||
SerialPortRead (
|
|
||||||
OUT UINT8 *Buffer,
|
|
||||||
IN UINTN NumberOfBytes
|
|
||||||
)
|
|
||||||
{
|
|
||||||
*Buffer = SemihostReadCharacter ();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Check to see if any data is avaiable to be read from the debug device.
|
|
||||||
|
|
||||||
@retval TRUE At least one byte of data is avaiable to be read
|
|
||||||
@retval FALS No data is avaiable to be read
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
SerialPortPoll (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
// Since SemiHosting read character is blocking always say we have a char ready?
|
|
||||||
return SemihostConnectionSupported ();
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue