46#include "params/X86IntelMPBaseConfigEntry.hh"
47#include "params/X86IntelMPExtConfigEntry.hh"
50#include "params/X86IntelMPConfigTable.hh"
51#include "params/X86IntelMPFloatingPointer.hh"
54#include "params/X86IntelMPBus.hh"
55#include "params/X86IntelMPIOAPIC.hh"
56#include "params/X86IntelMPIOIntAssignment.hh"
57#include "params/X86IntelMPLocalIntAssignment.hh"
58#include "params/X86IntelMPProcessor.hh"
61#include "params/X86IntelMPAddrSpaceMapping.hh"
62#include "params/X86IntelMPBusHierarchy.hh"
63#include "params/X86IntelMPCompatAddrSpaceMod.hh"
88 std::string nullPadded(length,
'\0');
89 memcpy(nullPadded.data(), str.data(), std::min<int>(str.length(), length));
90 if (str.length() > length) {
91 warn(
"Intel MP configuration table string \"%s\" "
92 "will be truncated to \"%s\".\n", str, nullPadded);
97 for (
int i = 0;
i < length;
i++)
98 checkSum += nullPadded[
i];
109 fatal(
"Either an MP configuration table or a default configuration "
112 fatal(
"Both an MP configuration table and a default configuration "
115 uint8_t checkSum = 0;
118 for (
int i = 0;
i < 4;
i++)
137 checkSum = -checkSum;
158 const Params &
p, uint8_t _type) :
174 uint8_t _type, uint8_t _length) :
183 uint8_t checkSum = 0;
186 for (
int i = 0;
i < 4;
i++)
219 uint16_t extOffset = 0;
220 uint8_t extCheckSum = 0;
223 extOffset += (*extEnt)->writeOut(proxy,
228 extCheckSum = -extCheckSum;
232 checkSum = -checkSum;
235 return offset + extOffset;
325 p.source_bus_id,
p.source_bus_irq,
326 p.dest_io_apic_id,
p.dest_io_apic_intin)
331 p.source_bus_id,
p.source_bus_irq,
332 p.dest_local_apic_id,
p.dest_local_apic_intin)
372 if (
p.subtractive_decode)
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,...
void writeBlob(Addr addr, const void *p, uint64_t size) const
Same as tryWriteBlob, but insists on success.
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPAddrSpaceMappingParams Params
AddrSpaceMapping(const Params &p)
virtual Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
BaseConfigEntry(const Params &p, uint8_t _type)
X86IntelMPBaseConfigEntryParams Params
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPBusHierarchyParams Params
BusHierarchy(const Params &p)
X86IntelMPBusParams Params
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPCompatAddrSpaceModParams Params
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
CompatAddrSpaceMod(const Params &p)
std::vector< ExtConfigEntry * > extEntries
std::vector< BaseConfigEntry * > baseEntries
X86IntelMPConfigTableParams Params
static const char signature[]
ConfigTable(const Params &p)
Addr writeOut(PortProxy &proxy, Addr addr)
virtual Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
ExtConfigEntry(const Params &p, uint8_t _type, uint8_t _length)
X86IntelMPExtConfigEntryParams Params
Addr writeOut(PortProxy &proxy, Addr addr)
X86IntelMPFloatingPointerParams Params
static const char signature[]
FloatingPointer(const Params &p)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPIOAPICParams Params
IOIntAssignment(const Params &p)
X86IntelMPIOIntAssignmentParams Params
IntAssignment(const X86IntelMPBaseConfigEntryParams &p, enums::X86IntelMPInterruptType _interruptType, enums::X86IntelMPPolarity polarity, enums::X86IntelMPTriggerMode trigger, uint8_t _type, uint8_t _sourceBusID, uint8_t _sourceBusIRQ, uint8_t _destApicID, uint8_t _destApicIntIn)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
LocalIntAssignment(const Params &p)
X86IntelMPLocalIntAssignmentParams Params
X86IntelMPProcessorParams Params
Processor(const Params &p)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
constexpr void replaceBits(T &val, unsigned first, unsigned last, B bit_val)
A convenience function to replace bits first to last of val with bit_val in place.
#define fatal(...)
This implements a cprintf based fatal() function.
SimObject(const Params &p)
Bitfield< 62, 54 > reserved
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint8_t writeOutField(PortProxy &proxy, Addr addr, T val)
uint8_t writeOutString(PortProxy &proxy, Addr addr, std::string str, int length)
PortProxy Object Declaration.