syu49 wrote on Friday, August 03, 2007:
Here is what I have in the 91x_init.s file for setting up the stack
; Enter each mode in turn and set up the stack pointer
MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts
LDR SP, =SFE(FIQ_STACK)
MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(IRQ_STACK)
MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(ABT_STACK)
MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(UND_STACK)
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(SVC_STACK)
MSR CPSR_c, #Mode_SYS|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(USR_STACK)
; — Set bits 17-18(DTCM/ITCM order bits)of the Core Configuration Control
; Register
MOV r0, #0x60000
MCR p15,0x1,r0,c15,c1,0
; — Now change to supervise mode and set up User mode stack,
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts
LDR SP, = SFE(CSTACK)