-/**\r
+/** @file\r
ACPI parser\r
\r
Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.\r
STATIC UINT32 mTableErrorCount;\r
STATIC UINT32 mTableWarningCount;\r
\r
-/** This function resets the ACPI table error counter to Zero.\r
-*/\r
+STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;\r
+\r
+/**\r
+ An ACPI_PARSER array describing the ACPI header.\r
+**/\r
+STATIC CONST ACPI_PARSER AcpiHeaderParser[] = {\r
+ PARSE_ACPI_HEADER (&AcpiHdrInfo)\r
+};\r
+\r
+/**\r
+ This function resets the ACPI table error counter to Zero.\r
+**/\r
VOID\r
ResetErrorCount (\r
VOID\r
mTableErrorCount = 0;\r
}\r
\r
-/** This function returns the ACPI table error count.\r
+/**\r
+ This function returns the ACPI table error count.\r
\r
@retval Returns the count of errors detected in the ACPI tables.\r
-*/\r
+**/\r
UINT32\r
GetErrorCount (\r
VOID\r
return mTableErrorCount;\r
}\r
\r
-/** This function resets the ACPI table warning counter to Zero.\r
-*/\r
+/**\r
+ This function resets the ACPI table warning counter to Zero.\r
+**/\r
VOID\r
ResetWarningCount (\r
VOID\r
mTableWarningCount = 0;\r
}\r
\r
-/** This function returns the ACPI table warning count.\r
+/**\r
+ This function returns the ACPI table warning count.\r
\r
@retval Returns the count of warning detected in the ACPI tables.\r
-*/\r
+**/\r
UINT32\r
GetWarningCount (\r
VOID\r
return mTableWarningCount;\r
}\r
\r
-/** This function increments the ACPI table error counter.\r
-*/\r
+/**\r
+ This function increments the ACPI table error counter.\r
+**/\r
VOID\r
EFIAPI\r
IncrementErrorCount (\r
mTableErrorCount++;\r
}\r
\r
-/** This function increments the ACPI table warning counter.\r
-*/\r
+/**\r
+ This function increments the ACPI table warning counter.\r
+**/\r
VOID\r
EFIAPI\r
IncrementWarningCount (\r
mTableWarningCount++;\r
}\r
\r
-/** This function verifies the ACPI table checksum.\r
+/**\r
+ This function verifies the ACPI table checksum.\r
\r
This function verifies the checksum for the ACPI table and optionally\r
prints the status.\r
\r
@retval TRUE The checksum is OK.\r
@retval FALSE The checksum failed.\r
-*/\r
+**/\r
BOOLEAN\r
EFIAPI\r
VerifyChecksum (\r
IN UINT32 Length\r
)\r
{\r
- UINTN ByteCount = 0;\r
- UINT8 Checksum = 0;\r
+ UINTN ByteCount;\r
+ UINT8 Checksum;\r
UINTN OriginalAttribute;\r
\r
+ ByteCount = 0;\r
+ Checksum = 0;\r
+\r
while (ByteCount < Length) {\r
Checksum += *(Ptr++);\r
ByteCount++;\r
return (Checksum == 0);\r
}\r
\r
-/** This function performs a raw data dump of the ACPI table.\r
+/**\r
+ This function performs a raw data dump of the ACPI table.\r
\r
@param [in] Ptr Pointer to the start of the table buffer.\r
@param [in] Length The length of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpRaw (\r
IN UINT32 Length\r
)\r
{\r
- UINTN ByteCount = 0;\r
+ UINTN ByteCount;\r
UINTN PartLineChars;\r
- UINTN AsciiBufferIndex = 0;\r
+ UINTN AsciiBufferIndex;\r
CHAR8 AsciiBuffer[17];\r
\r
+ ByteCount = 0;\r
+ AsciiBufferIndex = 0;\r
+\r
Print (L"Address : 0x%p\n", Ptr);\r
Print (L"Length : %d\n", Length);\r
\r
Print (L" %a", AsciiBuffer);\r
}\r
\r
-/** This function traces 1 byte of data as specified in the\r
- format string.\r
+/**\r
+ This function traces 1 byte of data as specified in the format string.\r
\r
@param [in] Format The format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpUint8 (\r
Print (Format, *Ptr);\r
}\r
\r
-/** This function traces 2 bytes of data as specified in the\r
- format string.\r
+/**\r
+ This function traces 2 bytes of data as specified in the format string.\r
\r
@param [in] Format The format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpUint16 (\r
Print (Format, *(UINT16*)Ptr);\r
}\r
\r
-/** This function traces 4 bytes of data as specified in the\r
- format string.\r
+/**\r
+ This function traces 4 bytes of data as specified in the format string.\r
\r
@param [in] Format The format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpUint32 (\r
Print (Format, *(UINT32*)Ptr);\r
}\r
\r
-/** This function traces 8 bytes of data as specified by the\r
- format string.\r
+/**\r
+ This function traces 8 bytes of data as specified by the format string.\r
\r
@param [in] Format The format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpUint64 (\r
// Some fields are not aligned and this causes alignment faults\r
// on ARM platforms if the compiler generates LDRD instructions.\r
// Perform word access so that LDRD instructions are not generated.\r
- UINT64 Val = *(UINT32*)(Ptr + sizeof (UINT32));\r
+ UINT64 Val;\r
+\r
+ Val = *(UINT32*)(Ptr + sizeof (UINT32));\r
+\r
Val <<= 32;\r
Val |= *(UINT32*)Ptr;\r
\r
Print (Format, Val);\r
}\r
\r
-/** This function traces 3 characters which can be optionally\r
- formated using the format string if specified.\r
+/**\r
+ This function traces 3 characters which can be optionally\r
+ formated using the format string if specified.\r
\r
If no format string is specified the Format must be NULL.\r
\r
@param [in] Format Optional format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
Dump3Chars (\r
);\r
}\r
\r
-/** This function traces 4 characters which can be optionally\r
- formated using the format string if specified.\r
+/**\r
+ This function traces 4 characters which can be optionally\r
+ formated using the format string if specified.\r
\r
If no format string is specified the Format must be NULL.\r
\r
@param [in] Format Optional format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
Dump4Chars (\r
);\r
}\r
\r
-/** This function traces 6 characters which can be optionally\r
- formated using the format string if specified.\r
+/**\r
+ This function traces 6 characters which can be optionally\r
+ formated using the format string if specified.\r
\r
If no format string is specified the Format must be NULL.\r
\r
@param [in] Format Optional format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
Dump6Chars (\r
);\r
}\r
\r
-/** This function traces 8 characters which can be optionally\r
- formated using the format string if specified.\r
+/**\r
+ This function traces 8 characters which can be optionally\r
+ formated using the format string if specified.\r
\r
If no format string is specified the Format must be NULL.\r
\r
@param [in] Format Optional format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
Dump8Chars (\r
);\r
}\r
\r
-/** This function indents and prints the ACPI table Field Name.\r
+/**\r
+ This function indents and prints the ACPI table Field Name.\r
\r
@param [in] Indent Number of spaces to add to the global table indent.\r
The global table indent is 0 by default; however\r
Therefore the total indent in the output is\r
dependent on from where this function is called.\r
@param [in] FieldName Pointer to the Field Name.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
PrintFieldName (\r
);\r
}\r
\r
-/** This function is used to parse an ACPI table buffer.\r
+/**\r
+ This function is used to parse an ACPI table buffer.\r
\r
The ACPI table buffer is parsed using the ACPI table parser information\r
specified by a pointer to an array of ACPI_PARSER elements. This parser\r
@param [in] ParserItems Number of items in the ACPI_PARSER array.\r
\r
@retval Number of bytes parsed.\r
-*/\r
+**/\r
UINT32\r
EFIAPI\r
ParseAcpi (\r
)\r
{\r
UINT32 Index;\r
- UINT32 Offset = 0;\r
+ UINT32 Offset;\r
+ BOOLEAN HighLight;\r
+ UINTN OriginalAttribute;\r
+\r
+ Offset = 0;\r
\r
// Increment the Indent\r
gIndent += Indent;\r
\r
if (Trace && (AsciiName != NULL)){\r
- BOOLEAN HighLight = GetColourHighlighting ();\r
- UINTN OriginalAttribute;\r
+ HighLight = GetColourHighlighting ();\r
\r
if (HighLight) {\r
OriginalAttribute = gST->ConOut->Mode->Attribute;\r
IncrementErrorCount ();\r
Print (\r
L"\nERROR: %a: Offset Mismatch for %s\n"\r
- "CurrentOffset = %d FieldOffset = %d\n",\r
+ L"CurrentOffset = %d FieldOffset = %d\n",\r
AsciiName,\r
Parser[Index].NameStr,\r
Offset,\r
return Offset;\r
}\r
\r
-/** An array describing the ACPI Generic Address Structure.\r
+/**\r
+ An array describing the ACPI Generic Address Structure.\r
The GasParser array is used by the ParseAcpi function to parse and/or trace\r
the GAS structure.\r
-*/\r
+**/\r
STATIC CONST ACPI_PARSER GasParser[] = {\r
{L"Address Space ID", 1, 0, L"0x%x", NULL, NULL, NULL, NULL},\r
{L"Register Bit Width", 1, 1, L"0x%x", NULL, NULL, NULL, NULL},\r
{L"Address", 8, 4, L"0x%lx", NULL, NULL, NULL, NULL}\r
};\r
\r
-/** This function indents and traces the GAS structure as described\r
- by the GasParser.\r
+/**\r
+ This function indents and traces the GAS structure as described by the GasParser.\r
\r
@param [in] Ptr Pointer to the start of the buffer.\r
@param [in] Indent Number of spaces to indent the output.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpGasStruct (\r
);\r
}\r
\r
-/** This function traces the GAS structure as described by the GasParser.\r
+/**\r
+ This function traces the GAS structure as described by the GasParser.\r
\r
@param [in] Format Optional format string for tracing the data.\r
@param [in] Ptr Pointer to the start of the buffer.\r
-*/\r
+**/\r
VOID\r
EFIAPI\r
DumpGas (\r
DumpGasStruct (Ptr, 2);\r
}\r
\r
-/** This function traces the ACPI header as described by the AcpiHeaderParser.\r
+/**\r
+ This function traces the ACPI header as described by the AcpiHeaderParser.\r
\r
@param [in] Ptr Pointer to the start of the buffer.\r
\r
@retval Number of bytes parsed.\r
-*/\r
+**/\r
UINT32\r
EFIAPI\r
DumpAcpiHeader (\r
IN UINT8* Ptr\r
)\r
{\r
- ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;\r
- ACPI_PARSER AcpiHeaderParser[] = {\r
- PARSE_ACPI_HEADER (&AcpiHdrInfo)\r
- };\r
-\r
return ParseAcpi (\r
TRUE,\r
0,\r
);\r
}\r
\r
-/** This function parses the ACPI header as described by the AcpiHeaderParser.\r
+/**\r
+ This function parses the ACPI header as described by the AcpiHeaderParser.\r
\r
This function optionally returns the signature, length and revision of the\r
ACPI table.\r
@param [out] Revision Gets location of the revision of the ACPI table.\r
\r
@retval Number of bytes parsed.\r
-*/\r
+**/\r
UINT32\r
EFIAPI\r
ParseAcpiHeader (\r
)\r
{\r
UINT32 BytesParsed;\r
- ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;\r
- ACPI_PARSER AcpiHeaderParser[] = {\r
- PARSE_ACPI_HEADER (&AcpiHdrInfo)\r
- };\r
\r
BytesParsed = ParseAcpi (\r
FALSE,\r