38 #ifndef __ARCH_X86_BIOS_ACPI_HH__
39 #define __ARCH_X86_BIOS_ACPI_HH__
43 #include <type_traits>
48 #include "debug/ACPI.hh"
49 #include "params/X86ACPIMadt.hh"
50 #include "params/X86ACPIMadtIOAPIC.hh"
51 #include "params/X86ACPIMadtIntSourceOverride.hh"
52 #include "params/X86ACPIMadtLAPIC.hh"
53 #include "params/X86ACPIMadtLAPICOverride.hh"
54 #include "params/X86ACPIMadtNMI.hh"
55 #include "params/X86ACPIMadtRecord.hh"
56 #include "params/X86ACPIRSDP.hh"
57 #include "params/X86ACPIRSDT.hh"
58 #include "params/X86ACPISysDescTable.hh"
59 #include "params/X86ACPIXSDT.hh"
105 uint8_t checksum = 0;
107 uint8_t revision = 0;
108 uint32_t rsdtAddress = 0;
110 static_assert(std::is_trivially_copyable_v<MemR0>,
111 "Type not suitable for memcpy.");
117 uint64_t xsdtAddress = 0;
118 uint8_t extendedChecksum = 0;
119 uint8_t _reserved[3] = {};
121 static_assert(std::is_trivially_copyable_v<Mem>,
122 "Type not suitable for memcpy,");
136 PARAMS(X86ACPISysDescTable);
144 uint8_t checksum = 0;
146 char oemTableID[8] = {};
147 uint32_t oemRevision = 0;
148 uint32_t creatorID = 0;
149 uint32_t creatorRevision = 0;
151 static_assert(std::is_trivially_copyable_v<Mem>,
152 "Type not suitable for memcpy.");
185 RXSDT(
const Params&
p,
const char* _signature, uint8_t _revision);
211 PARAMS(X86ACPIMadtRecord);
218 static_assert(std::is_trivially_copyable_v<Mem>,
219 "Type not suitable for memcpy.");
244 uint8_t acpiProcessorId = 0;
248 static_assert(std::is_trivially_copyable_v<Mem>,
249 "Type not suitable for memcpy.");
260 PARAMS(X86ACPIMadtIOAPIC);
264 uint8_t ioApicId = 0;
265 uint8_t _reserved = 0;
266 uint32_t ioApicAddress = 0;
267 uint32_t intBase = 0;
269 static_assert(std::is_trivially_copyable_v<Mem>,
270 "Type not suitable for memcpy.");
281 PARAMS(X86ACPIMadtIntSourceOverride);
285 uint8_t busSource = 0;
286 uint8_t irqSource = 0;
287 uint32_t globalSystemInterrupt = 0;
290 static_assert(std::is_trivially_copyable_v<Mem>,
291 "Type not suitable for memcpy.");
306 uint8_t acpiProcessorId = 0;
310 static_assert(std::is_trivially_copyable_v<Mem>,
311 "Type not suitable for memcpy.");
322 PARAMS(X86ACPIMadtLAPICOverride);
326 uint16_t _reserved = 0;
327 uint64_t localAPICAddress = 0;
329 static_assert(std::is_trivially_copyable_v<Mem>,
330 "Type not suitable for memcpy.");
345 uint32_t localAPICAddress = 0;
348 static_assert(std::is_trivially_copyable_v<Mem>,
349 "Type not suitable for memcpy.");
367 #endif // __ARCH_X86_BIOS_E820_HH__