Go to the documentation of this file.
18 #include <FreeNOS/System.h>
73 ERROR(
"MP header not found");
79 DEBUG(
"MP header found at " << (
void *) mpc);
80 DEBUG(
"Local APIC at " << (
void *) mpc->apicAddr);
84 for (
uint i = 0; i < mpc->count; i++)
104 ERROR(
"failed to send startup IPI via APIC");
IntelMP(IntelAPIC &apic)
Constructor.
List< uint > m_cores
List of core ids found.
virtual void clear()
Clears the entire List.
static const Address MPEntryAddr
Physical memory address at which cores start (bootEntry16).
static const Size MPAreaSize
BIOS memory area size to search for MP tables.
virtual Result discover()
Discover processors.
Result map(Address phys, Size size=4096, Memory::Access access=Memory::Readable|Memory::Writable|Memory::User)
Map I/O address space.
IntelAPIC & m_apic
APIC instance.
#define PAGESIZE
ARM uses 4K pages.
Multiprocessor Floating Structure.
unsigned long Address
A memory address.
virtual Result boot(CoreInfo *info)
Boot a processor.
Memory::Range memory
Defines the physical memory available to the core.
static const uint IOBase
APIC memory mapped I/O register base offset (physical address).
unsigned int uint
Unsigned integer number.
static const uint MPEntryProc
Multiprocessor Configuration Type ID for processors.
uint coreId
Core identifier.
#define MegaByte(v)
Convert megabytes to bytes.
static const uint MPFloatSignature
Multiprocessor Floating Structure Signature.
#define DEBUG(msg)
Output a debug message to standard output.
char kernelCommand[KERNEL_PATHLEN]
Kernel command.
Address phys
Physical address.
MPConfig * scanMemory(Address addr)
Scan memory for a Multiprocessor Config structure.
void append(T t)
Insert an item at the end of the list.
virtual Result initialize()
Perform initialization.
Multiprocessor Configuration Entry.
Per-Core information structure.
static const Address MPInfoAddr
Physical memory address for the CoreInfo structure.
C void bootEntry16()
Entry point in 16-bit real mode.
#define ERROR(msg)
Output an error message.
Address getBase() const
Get memory I/O base offset.
Intel Advanced Programmable Interrupt Controller (APIC)
static const Address MPAreaAddr
BIOS memory area to search for MP tables.
API::Result VMCopy(const ProcessID proc, const API::Operation how, const Address ours, const Address theirs, const Size sz)
Prototype for user applications.
IntelIO m_bios
I/O instance for BIOS memory.
IntController::Result sendStartupIPI(uint cpuId, Address addr)
Send startup Intercore-Processor-Interrupt.
Multiprocessor Configuration Structure.
MPEntry * parseEntry(MPEntry *entry)
Parse Multiprocessor Config entry.
IntelIO m_lastMemory
I/O instance for the last 1MB of physical memory.
IntelIO & getIO()
Get I/O object.