Go to the documentation of this file.
47 #include "params/X86IntelMPBaseConfigEntry.hh"
48 #include "params/X86IntelMPExtConfigEntry.hh"
51 #include "params/X86IntelMPConfigTable.hh"
52 #include "params/X86IntelMPFloatingPointer.hh"
55 #include "params/X86IntelMPBus.hh"
56 #include "params/X86IntelMPIOAPIC.hh"
57 #include "params/X86IntelMPIOIntAssignment.hh"
58 #include "params/X86IntelMPLocalIntAssignment.hh"
59 #include "params/X86IntelMPProcessor.hh"
62 #include "params/X86IntelMPAddrSpaceMapping.hh"
63 #include "params/X86IntelMPBusHierarchy.hh"
64 #include "params/X86IntelMPCompatAddrSpaceMod.hh"
86 char cleanedString[length + 1];
87 cleanedString[length] = 0;
89 if (str.length() > length) {
90 memcpy(cleanedString, str.c_str(), length);
91 warn(
"Intel MP configuration table string \"%s\" "
92 "will be truncated to \"%s\".\n", str, (
char *)&cleanedString);
94 memcpy(cleanedString, str.c_str(), str.length());
95 memset(cleanedString + str.length(), 0, length - str.length());
100 for (
int i = 0;
i < length;
i++)
101 checkSum += cleanedString[
i];
112 fatal(
"Either an MP configuration table or a default configuration "
115 fatal(
"Both an MP configuration table and a default configuration "
118 uint8_t checkSum = 0;
121 for (
int i = 0;
i < 4;
i++)
140 checkSum = -checkSum;
148 defaultConfig(
p.default_config), imcrPresent(
p.imcr_present)
161 const Params &
p, uint8_t _type) :
177 uint8_t _type, uint8_t _length) :
186 uint8_t checkSum = 0;
189 for (
int i = 0;
i < 4;
i++)
190 checkSum += signature[
i];
213 for (baseEnt = baseEntries.begin();
214 baseEnt != baseEntries.end(); baseEnt++) {
222 uint16_t extOffset = 0;
223 uint8_t extCheckSum = 0;
224 for (extEnt = extEntries.begin();
225 extEnt != extEntries.end(); extEnt++) {
226 extOffset += (*extEnt)->writeOut(proxy,
231 extCheckSum = -extCheckSum;
235 checkSum = -checkSum;
238 return offset + extOffset;
242 specRev(
p.spec_rev), oemID(
p.oem_id), productID(
p.product_id),
243 oemTableAddr(
p.oem_table_addr), oemTableSize(
p.oem_table_size),
244 localApic(
p.local_apic),
245 baseEntries(
p.base_entries), extEntries(
p.ext_entries)
266 localApicID(
p.local_apic_id), localApicVersion(
p.local_apic_version),
267 cpuFlags(0), cpuSignature(0), featureFlags(
p.feature_flags)
290 busID(
p.bus_id), busType(
p.bus_type)
306 id(
p.
id), version(
p.version), flags(0), address(
p.address)
328 p.source_bus_id,
p.source_bus_irq,
329 p.dest_io_apic_id,
p.dest_io_apic_intin)
334 p.source_bus_id,
p.source_bus_irq,
335 p.dest_local_apic_id,
p.dest_local_apic_intin)
352 busID(
p.bus_id), addrType(
p.address_type),
353 addr(
p.address), addrLength(
p.length)
373 busID(
p.bus_id), info(0), parentBus(
p.parent_bus)
375 if (
p.subtractive_decode)
392 busID(
p.bus_id),
mod(0), rangeList(
p.range_list)
#define fatal(...)
This implements a cprintf based fatal() function.
Addr writeOut(PortProxy &proxy, Addr addr)
AddrSpaceMapping(const Params &p)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
static const char signature[]
X86IntelMPBaseConfigEntryParams Params
uint8_t writeOutField(PortProxy &proxy, Addr addr, T val)
Addr writeOut(PortProxy &proxy, Addr addr)
ConfigTable(const Params &p)
LocalIntAssignment(const Params &p)
BaseConfigEntry(const Params &p, uint8_t _type)
void writeBlob(Addr addr, const void *p, int size) const
Same as tryWriteBlob, but insists on success.
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
virtual Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPConfigTableParams Params
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
BusHierarchy(const Params &p)
uint8_t writeOutString(PortProxy &proxy, Addr addr, std::string str, int length)
virtual Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
IOIntAssignment(const Params &p)
ExtConfigEntry(const Params &p, uint8_t _type, uint8_t _length)
X86IntelMPExtConfigEntryParams Params
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
This object is a proxy for a port or other object which implements the functional response protocol,...
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
CompatAddrSpaceMod(const Params &p)
Processor(const Params &p)
Addr writeOut(PortProxy &proxy, Addr addr, uint8_t &checkSum)
X86IntelMPFloatingPointerParams Params
FloatingPointer(const Params &p)
static const char signature[]
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.
Abstract superclass for simulation objects.
Generated on Tue Mar 23 2021 19:41:23 for gem5 by doxygen 1.8.17