|
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().
1.8.17