Go to the documentation of this file.
18 #include <FreeNOS/System.h>
19 #include <FreeNOS/ProcessManager.h>
30 , m_gic(GIC_DIST_BASE, GIC_CPU_BASE)
40 FATAL(
"failed to initialize the GIC: " << (
uint) r);
71 if (irq == ARMTIMER_IRQ)
ARMTimer m_armTimer
ARM generic timer.
ARMGenericInterrupt m_gic
ARM Generic Interrupt Controller.
static Size copy(void *dest, const void *src, Size count)
Copy memory from one place to another.
virtual Result clear(uint irq)=0
Clear hardware interrupt (IRQ).
virtual Result allocate(Range &args)
Allocate physical memory.
Result initialize(bool performReset=true)
Initialize the controller.
#define NOTICE(msg)
Output a notice message.
CoreInfo * m_coreInfo
CoreInfo object for this core.
virtual Result nextPending(uint &irq)
Retrieve the next pending interrupt (IRQ).
Timer * m_timer
Timer device.
SunxiKernel(CoreInfo *info)
Constructor function.
ProcessID getID() const
Retrieve our ID number.
ProcessManager * getProcessManager()
Get process manager.
unsigned int uint
Unsigned integer number.
uint coreId
Core identifier.
#define FATAL(msg)
Output a critical message and terminate program immediatly.
#define DEBUG(msg)
Output a debug message to standard output.
ARM System Control Coprocessor (CP15).
IntController * m_intControl
Interrupt Controller.
static const Address SecondaryCoreInfoAddress
Physical memory address for CoreInfo passed to secondary cores during bootup.
virtual Result enable(uint irq)=0
Enable hardware interrupt (IRQ).
Result install(ExceptionType vector, Handler handler)
Install an exception handler.
static void interrupt(CPUState state)
Interrupt handler routine.
static Kernel * instance()
Retrieve the instance.
Result schedule()
Schedule next process to run.
ARM specific process implementation.
Contains all the CPU registers.
Per-Core information structure.
ARMException m_exception
ARM exception handling subsystem.
virtual Result setFrequency(const Size hertz)
Set timer frequency.
void setCpuState(const CPUState *cpuState)
Overwrite the saved CPU registers for this task.
Represents the Sunxi kernel implementation.
Represents the ARM kernel implementation.
SplitAllocator * m_alloc
Physical memory allocator.
Process * current()
Current process running.
virtual void executeIntVector(u32 vec, CPUState *state)
Execute an interrupt handler.
virtual Result tick()
Process timer tick.