FreeNOS
|
Represents the Sunxi kernel implementation. More...
#include <SunxiKernel.h>
Public Member Functions | |
SunxiKernel (CoreInfo *info) | |
Constructor function. More... | |
Public Member Functions inherited from ARMKernel | |
ARMKernel (CoreInfo *info) | |
Constructor function. More... | |
Public Member Functions inherited from Kernel | |
Kernel (CoreInfo *info) | |
Constructor function. More... | |
SplitAllocator * | getAllocator () |
Get physical memory allocator. More... | |
ProcessManager * | getProcessManager () |
Get process manager. More... | |
API * | getAPI () |
Get API. More... | |
MemoryContext * | getMemoryContext () |
Get the current MMU context. More... | |
CoreInfo * | getCoreInfo () |
Get CoreInfo. More... | |
Timer * | getTimer () |
Get Timer. More... | |
int | run () |
Execute the kernel. More... | |
virtual void | enableIRQ (u32 irq, bool enabled) |
Enable or disable an hardware interrupt (IRQ). More... | |
virtual Result | sendIRQ (const uint coreId, const uint irq) |
Send a inter-processor-interrupt (IPI) to another core. More... | |
virtual void | hookIntVector (u32 vec, InterruptHandler h, ulong p) |
Hooks a function to an hardware interrupt. More... | |
virtual void | executeIntVector (u32 vec, CPUState *state) |
Execute an interrupt handler. More... | |
virtual Result | loadBootImage () |
Loads the boot image. More... | |
Public Member Functions inherited from WeakSingleton< Kernel > | |
WeakSingleton (Kernel *obj) | |
Constructor. More... | |
Static Private Member Functions | |
static void | interrupt (CPUState state) |
Interrupt handler routine. More... | |
Private Attributes | |
ARMGenericInterrupt | m_gic |
ARM Generic Interrupt Controller. More... | |
ARMTimer | m_armTimer |
ARM generic timer. More... | |
Additional Inherited Members | |
Public Types inherited from Kernel | |
enum | Result { Success, InvalidBootImage, ProcessError, IOError } |
Result codes. More... | |
Static Public Member Functions inherited from Kernel | |
static Error | initializeHeap () |
Initialize heap. More... | |
Static Public Member Functions inherited from WeakSingleton< Kernel > | |
static Kernel * | instance () |
Retrieve the instance. More... | |
Protected Attributes inherited from ARMKernel | |
ARMException | m_exception |
ARM exception handling subsystem. More... | |
Protected Attributes inherited from Kernel | |
SplitAllocator * | m_alloc |
Physical memory allocator. More... | |
ProcessManager * | m_procs |
Process Manager. More... | |
API * | m_api |
API handlers object. More... | |
CoreInfo * | m_coreInfo |
CoreInfo object for this core. More... | |
Vector< List< InterruptHook * > * > | m_interrupts |
Interrupt handlers. More... | |
IntController * | m_intControl |
Interrupt Controller. More... | |
Timer * | m_timer |
Timer device. More... | |
Represents the Sunxi kernel implementation.
Definition at line 36 of file SunxiKernel.h.
SunxiKernel::SunxiKernel | ( | CoreInfo * | info | ) |
Constructor function.
info | Contains processor core specific information |
Definition at line 28 of file SunxiKernel.cpp.
References SplitAllocator::allocate(), CoreInfo::coreId, IntController::enable(), FATAL, ARMException::FIQ, ARMGenericInterrupt::initialize(), ARMException::install(), interrupt(), ARMException::IRQ, Kernel::m_alloc, m_armTimer, Kernel::m_coreInfo, ARMKernel::m_exception, m_gic, Kernel::m_intControl, Kernel::m_timer, NOTICE, SunxiCoreServer::SecondaryCoreInfoAddress, ARMTimer::setFrequency(), and IntController::Success.
|
staticprivate |
Interrupt handler routine.
state | Saved CPU register state |
Definition at line 59 of file SunxiKernel.cpp.
References IntController::clear(), MemoryBlock::copy(), ProcessManager::current(), DEBUG, Kernel::executeIntVector(), Process::getID(), Kernel::getProcessManager(), WeakSingleton< Kernel >::instance(), Kernel::m_intControl, Kernel::m_timer, IntController::nextPending(), ProcessManager::schedule(), ARMProcess::setCpuState(), IntController::Success, and Timer::tick().
Referenced by SunxiKernel().
|
private |
|
private |
ARM Generic Interrupt Controller.
Definition at line 59 of file SunxiKernel.h.
Referenced by SunxiKernel().