mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 06:08:16 +02:00
* setup stacks properly
git-svn-id: trunk@13332 -
This commit is contained in:
parent
b17cfcabc6
commit
77eca3a492
@ -191,7 +191,7 @@ unit at91sam7x256;
|
||||
|
||||
{ Wait the startup time (until PMC Status register MOSCEN bit is set)
|
||||
result: $FFFFFC68 bit 0 will set when main oscillator has stabilized}
|
||||
while (AT91C_PMC_SR and AT91C_PMC_MOSCS)=0 do
|
||||
while (AT91C_PMC_SR and AT91C_PMC_MOSCS)=0 do
|
||||
;
|
||||
|
||||
|
||||
@ -310,7 +310,7 @@ unit at91sam7x256;
|
||||
ldr r0,.L_stack_top
|
||||
|
||||
(*
|
||||
Setting up SP for IRQ and FIQ mode.
|
||||
Setting up SP for the different CPU modes.
|
||||
Change mode before setting each one
|
||||
move back again to Supervisor mode
|
||||
Each interrupt has its own link
|
||||
@ -319,18 +319,28 @@ unit at91sam7x256;
|
||||
initialized for interrupts to be
|
||||
used later.
|
||||
*)
|
||||
msr cpsr_c, #0xdb // switch to Undefined Instruction Mode
|
||||
mov sp, r0
|
||||
sub r0, r0, #0x10
|
||||
|
||||
(*
|
||||
setup irq and fiq stacks each 128 bytes
|
||||
*)
|
||||
msr cpsr_c, #0x12 // switch to irq mode
|
||||
mov sp, r0 // set irq stack pointer
|
||||
sub r0,r0,#128 // irq stack size
|
||||
msr cpsr_c, #0x11 // fiq mode
|
||||
mov sp, r0 // set fiq stack pointer
|
||||
sub r0,r0,#128 // fiq stack size
|
||||
msr cpsr_c, #0x13 // supervisor mode F,I enabled
|
||||
mov sp, r0 // stack
|
||||
msr cpsr_c, #0xd7 // switch to Abort Mode
|
||||
mov sp, r0
|
||||
sub r0, r0, #0x10
|
||||
|
||||
msr CPSR_c, #0xd1 // switch to FIQ Mode
|
||||
mov sp, r0
|
||||
sub r0, r0, #0x80
|
||||
|
||||
msr CPSR_c, #0xd2 // switch to IRQ Mode
|
||||
mov sp, r0
|
||||
sub r0, r0, #0x80
|
||||
|
||||
msr CPSR_c, #0xd3 // switch to Supervisor Mode
|
||||
mov sp, r0
|
||||
sub r0, r0, #0x80
|
||||
|
||||
msr CPSR_c, #0x1f // switch to System Mode, interrupts enabled
|
||||
mov sp, r0
|
||||
|
||||
// for now, all handlers are set to a default one
|
||||
ldr r1,.LDefaultHandlerAddr
|
||||
|
Loading…
Reference in New Issue
Block a user