diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-07-24 07:32:54 -0400 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2009-07-24 07:32:54 -0400 |
commit | b86040a59feb255a8193173caa4d5199464433d5 (patch) | |
tree | 89c07450eabc2abb88bb4d6e32d61fd3855f000e /arch/arm/kernel/head-nommu.S | |
parent | 0becb088501886f37ade38762c8eaaf4263572cc (diff) |
Thumb-2: Implementation of the unified start-up and exceptions code
This patch implements the ARM/Thumb-2 unified kernel start-up and
exception handling code.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/kernel/head-nommu.S')
-rw-r--r-- | arch/arm/kernel/head-nommu.S | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S index cc87e1765ed2..b16393d2b71e 100644 --- a/arch/arm/kernel/head-nommu.S +++ b/arch/arm/kernel/head-nommu.S | |||
@@ -34,7 +34,7 @@ | |||
34 | */ | 34 | */ |
35 | .section ".text.head", "ax" | 35 | .section ".text.head", "ax" |
36 | ENTRY(stext) | 36 | ENTRY(stext) |
37 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode | 37 | setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode |
38 | @ and irqs disabled | 38 | @ and irqs disabled |
39 | #ifndef CONFIG_CPU_CP15 | 39 | #ifndef CONFIG_CPU_CP15 |
40 | ldr r9, =CONFIG_PROCESSOR_ID | 40 | ldr r9, =CONFIG_PROCESSOR_ID |
@@ -50,8 +50,10 @@ ENTRY(stext) | |||
50 | 50 | ||
51 | ldr r13, __switch_data @ address to jump to after | 51 | ldr r13, __switch_data @ address to jump to after |
52 | @ the initialization is done | 52 | @ the initialization is done |
53 | adr lr, __after_proc_init @ return (PIC) address | 53 | adr lr, BSYM(__after_proc_init) @ return (PIC) address |
54 | add pc, r10, #PROCINFO_INITFUNC | 54 | ARM( add pc, r10, #PROCINFO_INITFUNC ) |
55 | THUMB( add r12, r10, #PROCINFO_INITFUNC ) | ||
56 | THUMB( mov pc, r12 ) | ||
55 | ENDPROC(stext) | 57 | ENDPROC(stext) |
56 | 58 | ||
57 | /* | 59 | /* |
@@ -82,7 +84,8 @@ __after_proc_init: | |||
82 | mcr p15, 0, r0, c1, c0, 0 @ write control reg | 84 | mcr p15, 0, r0, c1, c0, 0 @ write control reg |
83 | #endif /* CONFIG_CPU_CP15 */ | 85 | #endif /* CONFIG_CPU_CP15 */ |
84 | 86 | ||
85 | mov pc, r13 @ clear the BSS and jump | 87 | mov r3, r13 |
88 | mov pc, r3 @ clear the BSS and jump | ||
86 | @ to start_kernel | 89 | @ to start_kernel |
87 | ENDPROC(__after_proc_init) | 90 | ENDPROC(__after_proc_init) |
88 | .ltorg | 91 | .ltorg |