18#include <FreeNOS/System.h>
19#include <FreeNOS/ProcessManager.h>
30 , m_exception(RAM_ADDR)
140 DEBUG(
"result = " << r <<
" scheduled = " << (
bool)(proc != proc2));
Result invoke(Number number, ulong arg1, ulong arg2, ulong arg3, ulong arg4, ulong arg5)
Execute a generic API function.
Number
Enumeration of supported generic kernel API functions.
ARM System Control Coprocessor (CP15).
void set(SystemControlFlags flags)
Set system control flags in CP15.
void unset(SystemControlFlags flags)
Unset system control flags in CP15.
Class representing an ARM processor core.
void logException(CPUState *state) const
Log a CPU exception.
Result install(ExceptionType vector, Handler handler)
Install an exception handler.
static void undefinedInstruction(CPUState state)
Undefined instruction routine.
static void trap(CPUState state)
Software trap routine.
ARMException m_exception
ARM exception handling subsystem.
static void reserved(CPUState state)
Reserved routine.
static void prefetchAbort(CPUState state)
Prefetch abort routine.
ARMKernel(CoreInfo *info)
Constructor function.
static void interrupt(CPUState state)
Interrupt handler routine.
static void dataAbort(CPUState state)
Data abort routine.
ARM specific process implementation.
void setCpuState(const CPUState *cpuState)
Overwrite the saved CPU registers for this task.
FreeNOS kernel implementation.
CoreInfo * m_coreInfo
CoreInfo object for this core.
SplitAllocator * m_alloc
Physical memory allocator.
ProcessManager * getProcessManager()
Get process manager.
static Size copy(void *dest, const void *src, Size count)
Copy memory from one place to another.
Represents a process which may run on the host.
Process * get(const ProcessID id)
Retrieve a Process by it's ID.
Process * current()
Current process running.
ProcessID getID() const
Retrieve our ID number.
virtual Result allocate(Range &args)
Allocate physical memory.
static Kernel * instance()
Retrieve the instance.
#define PAGESIZE
ARM uses 4K pages.
CoreInfo coreInfo
Local CoreInfo instance.
#define NULL
NULL means zero.
u32 ProcessID
Process Identification Number.
unsigned int u32
Unsigned 32-bit number.
#define MegaByte(v)
Convert megabytes to bytes.
#define NOTICE(msg)
Output a notice message.
#define FATAL(msg)
Output a critical message and terminate program immediatly.
unsigned int Size
Any sane size indicator cannot go negative.
#define DEBUG(msg)
Output a debug message to standard output.
Contains all the CPU registers.
Per-Core information structure.
uint coreId
Core identifier.
Memory::Range memory
Defines the physical memory available to the core.
Address phys
Physical address.