MADT table parser\r
\r
Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.\r
+ Copyright (c) 2022, AMD Incorporated. All rights reserved.\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
@par Reference(s):\r
{ L"Flags", 2, 8, L"0x%x", NULL, NULL, NULL, NULL }\r
};\r
\r
+STATIC CONST ACPI_PARSER LocalApicFlags[] = {\r
+ { L"Enabled", 1, 0, L"%d", NULL, NULL, NULL, NULL },\r
+ { L"Online Capable", 1, 1, L"%d", NULL, NULL, NULL, NULL },\r
+ { L"Reserved", 30, 2, L"%d", NULL, NULL, NULL, NULL }\r
+};\r
+\r
+/**\r
+ This function traces Bit Flags fields.\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
+VOID\r
+EFIAPI\r
+DumpLocalApicBitFlags (\r
+ IN CONST CHAR16 *Format OPTIONAL,\r
+ IN UINT8 *Ptr\r
+ )\r
+{\r
+ if (Format != NULL) {\r
+ Print (Format, *(UINT32 *)Ptr);\r
+ return;\r
+ }\r
+\r
+ Print (L"0x%X\n", *(UINT32 *)Ptr);\r
+ ParseAcpiBitFields (\r
+ TRUE,\r
+ 2,\r
+ NULL,\r
+ Ptr,\r
+ 4,\r
+ PARSER_PARAMS (LocalApicFlags)\r
+ );\r
+}\r
+\r
+/**\r
+ An ACPI_PARSER array describing the Processor Local APIC Structure.\r
+ **/\r
+STATIC CONST ACPI_PARSER ProcessorLocalApic[] = {\r
+ { L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL },\r
+\r
+ { L"ACPI Processor UID", 1, 2, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"APIC ID", 1, 3, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"Flags", 4, 4, NULL, DumpLocalApicBitFlags, NULL, NULL, NULL }\r
+};\r
+\r
/**\r
An ACPI_PARSER array describing the Processor Local x2APIC Structure.\r
**/\r
STATIC CONST ACPI_PARSER ProcessorLocalX2Apic[] = {\r
- { L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL },\r
- { L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL },\r
- { L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL },\r
+ { L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL },\r
\r
- { L"X2APIC ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL },\r
- { L"Flags", 4, 8, L"0x%x", NULL, NULL, NULL, NULL },\r
- { L"ACPI Processor UID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL }\r
+ { L"X2APIC ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL },\r
+ { L"Flags", 4, 8, NULL, DumpLocalApicBitFlags, NULL, NULL, NULL },\r
+ { L"ACPI Processor UID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL }\r
};\r
\r
/**\r
);\r
break;\r
}\r
-\r
+ case EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC:\r
+ {\r
+ ParseAcpi (\r
+ TRUE,\r
+ 2,\r
+ "PROCESSOR LOCAL APIC",\r
+ InterruptContollerPtr,\r
+ *MadtInterruptControllerLength,\r
+ PARSER_PARAMS (ProcessorLocalApic)\r
+ );\r
+ break;\r
+ }\r
case EFI_ACPI_6_3_PROCESSOR_LOCAL_X2APIC:\r
{\r
ParseAcpi (\r