reactos/ntoskrnl/ke/arm/boot.s
Amine Khaldi 527f2f9057 [SHELL/EXPERIMENTS]
* Create a branch for some evul shell experiments.

svn path=/branches/shell-experiments/; revision=61927
2014-02-02 19:37:27 +00:00

46 lines
1.2 KiB
ArmAsm

/*
* PROJECT: ReactOS Kernel
* LICENSE: BSD - See COPYING.ARM in the top level directory
* FILE: ntoskrnl/ke/arm/boot.s
* PURPOSE: Implements the kernel entry point for ARM machines
* PROGRAMMERS: ReactOS Portable Systems Group
*/
.title "ARM Kernel Entry Point"
.include "ntoskrnl/include/internal/arm/kxarm.h"
.include "ntoskrnl/include/internal/arm/ksarm.h"
TEXTAREA
NESTED_ENTRY KiSystemStartup
PROLOG_END KiSystemStartup
/* Put us in FIQ mode, set IRQ stack */
b .
mrs r3, cpsr
orr r3, r1, #CPSR_FIQ_MODE
msr cpsr, r3
ldr sp, [a1, #LpbInterruptStack]
/* Repeat for IRQ mode */
msr cpsr_c, #CPSR_IRQ_MODE
ldr sp, [a1, #LpbInterruptStack]
/* Put us in ABORT mode and set the panic stack */
msr cpsr_c, #CPSR_ABORT_MODE
ldr sp, [a1, #LpbPanicStack]
/* Repeat for UND (Undefined) mode */
msr cpsr_c, #CPSR_UND_MODE
ldr sp, [a1, #LpbPanicStack]
/* Put us into SVC (Supervisor) mode and set the kernel stack */
msr cpsr_c, #CPSR_SVC_MODE
ldr sp, [a1, #LpbKernelStack]
/* Go to C code */
b KiInitializeSystem
ENTRY_END KiSystemStartup
/* EOF */