38#ifndef __ARCH_X86_BIOS_ACPI_HH__
39#define __ARCH_X86_BIOS_ACPI_HH__
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"
78 virtual Addr alloc(std::size_t size,
unsigned align=1) = 0;
87 Addr alloc(std::size_t size,
unsigned align)
override;
104 char signature[8] = {};
105 uint8_t checksum = 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,");
141 char signature[4] = {};
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);
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.");
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.");
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.");
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.");
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
This object is a proxy for a port or other object which implements the functional response protocol,...
Abstract superclass for simulation objects.
PARAMS(X86ACPIMadtIOAPIC)
void prepareBuf(std::vector< uint8_t > &mem) const override
void prepareBuf(std::vector< uint8_t > &mem) const override
IntSourceOverride(const Params &p)
PARAMS(X86ACPIMadtIntSourceOverride)
PARAMS(X86ACPIMadtLAPICOverride)
LAPICOverride(const Params &p)
void prepareBuf(std::vector< uint8_t > &mem) const override
void prepareBuf(std::vector< uint8_t > &mem) const override
std::vector< Record * > records
Addr writeBuf(PortProxy &phys_proxy, Allocator &alloc, std::vector< uint8_t > &mem) const override
void prepareBuf(std::vector< uint8_t > &mem) const override
virtual void prepareBuf(std::vector< uint8_t > &mem) const =0
PARAMS(X86ACPIMadtRecord)
std::vector< uint8_t > prepare() const
Record(const Params &p, uint8_t _type)
static const char signature[]
Addr write(PortProxy &phys_proxy, Allocator &alloc) const
std::vector< SysDescTable * > entries
Addr writeBuf(PortProxy &phys_proxy, Allocator &alloc, std::vector< uint8_t > &mem) const override
RXSDT(const Params &p, const char *_signature, uint8_t _revision)
virtual Addr writeBuf(PortProxy &phys_proxy, Allocator &alloc, std::vector< uint8_t > &mem) const =0
PARAMS(X86ACPISysDescTable)
SysDescTable(const Params &p, const char *_signature, uint8_t _revision)
Addr write(PortProxy &phys_proxy, Allocator &alloc) const
Bitfield< 23, 16 > revision
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual Addr alloc(std::size_t size, unsigned align=1)=0
LinearAllocator(Addr begin, Addr end=0)
Addr alloc(std::size_t size, unsigned align) override