18#include <FreeNOS/User.h>
19#include <FreeNOS/API.h>
44 ERROR(
"failed to register SGI vector: "
45 "ProcessCtl(WatchIRQ) returned: " << (
uint)r);
52 ERROR(
"failed to initialize CPU configuration module: " <<
106 ERROR(
"failed to discover cores");
Result
Enumeration of generic kernel API result codes.
static T * create()
Abstract function to create an instance of T.
Represents a single Core in a Central Processing Unit (CPU).
virtual Result initialize()
Initialize the server.
Implements a CoreServer for ARM/Allwinner (sunxi) based System-on-Chips.
virtual Core::Result sendIPI(uint coreId)
Send Inter-Processor-Interrupt.
virtual void waitIPI() const
Wait for Inter-Processor-Interrupt.
SunxiCoreServer()
Class constructor function.
virtual Core::Result discoverCores()
Discover processor cores.
virtual Core::Result bootCore(uint coreId, CoreInfo *info)
Boot a processor core.
virtual Result initialize()
Initialize the server.
static const Address SecondaryCoreInfoOffset
Offset of the CoreInfo struct relative to the kernel's physical base address.
static const Size SoftwareInterruptNumber
Software Generated Interrupt number for sending/receiving between cores.
SunxiCpuConfig m_cpuConfig
CPU Configuration Module instance.
static const Address SecondaryCoreInfoAddress
Physical memory address for CoreInfo passed to secondary cores during bootup.
virtual Result discover()
Discover processors.
virtual Result initialize()
Perform initialization.
virtual Result boot(CoreInfo *info)
Boot a processor.
API::Result VMCopy(const ProcessID proc, const API::Operation how, const Address ours, const Address theirs, const Size sz)
Prototype for user applications.
API::Result ProcessCtl(const ProcessID proc, const ProcessOperation op, const Address addr=0, const Address output=0)
Prototype for user applications.
unsigned long Address
A memory address.
#define ERROR(msg)
Output an error message.
unsigned int uint
Unsigned integer number.
Result
Result code for Actions.
Per-Core information structure.
Memory::Range memory
Defines the physical memory available to the core.
uint booted
Set to non-zero by early boot code when this core is running.
Address phys
Physical address.