diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap-headsmp.S')
| -rw-r--r-- | arch/arm/mach-omap2/omap-headsmp.S | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S index 4afadba09477..aa3f65c2ac97 100644 --- a/arch/arm/mach-omap2/omap-headsmp.S +++ b/arch/arm/mach-omap2/omap-headsmp.S | |||
| @@ -27,20 +27,39 @@ | |||
| 27 | * OMAP4 specific entry point for secondary CPU to jump from ROM | 27 | * OMAP4 specific entry point for secondary CPU to jump from ROM |
| 28 | * code. This routine also provides a holding flag into which | 28 | * code. This routine also provides a holding flag into which |
| 29 | * secondary core is held until we're ready for it to initialise. | 29 | * secondary core is held until we're ready for it to initialise. |
| 30 | * The primary core will update the this flag using a hardware | 30 | * The primary core will update this flag using a hardware |
| 31 | * register AuxCoreBoot1. | 31 | * register AuxCoreBoot0. |
| 32 | */ | 32 | */ |
| 33 | ENTRY(omap_secondary_startup) | 33 | ENTRY(omap_secondary_startup) |
| 34 | mrc p15, 0, r0, c0, c0, 5 | 34 | hold: ldr r12,=0x103 |
| 35 | and r0, r0, #0x0f | 35 | dsb |
| 36 | hold: ldr r1, =OMAP4_AUX_CORE_BOOT1_PA @ read from AuxCoreBoot1 | 36 | smc @ read from AuxCoreBoot0 |
| 37 | ldr r2, [r1] | 37 | mov r0, r0, lsr #9 |
| 38 | cmp r2, r0 | 38 | mrc p15, 0, r4, c0, c0, 5 |
| 39 | and r4, r4, #0x0f | ||
| 40 | cmp r0, r4 | ||
| 39 | bne hold | 41 | bne hold |
| 40 | 42 | ||
| 41 | /* | 43 | /* |
| 42 | * we've been released from the cpu_release,secondary_stack | 44 | * we've been released from the wait loop,secondary_stack |
| 43 | * should now contain the SVC stack for this core | 45 | * should now contain the SVC stack for this core |
| 44 | */ | 46 | */ |
| 45 | b secondary_startup | 47 | b secondary_startup |
| 48 | END(omap_secondary_startup) | ||
| 46 | 49 | ||
| 50 | |||
| 51 | ENTRY(omap_modify_auxcoreboot0) | ||
| 52 | stmfd sp!, {r1-r12, lr} | ||
| 53 | ldr r12, =0x104 | ||
| 54 | dsb | ||
| 55 | smc | ||
| 56 | ldmfd sp!, {r1-r12, pc} | ||
| 57 | END(omap_modify_auxcoreboot0) | ||
| 58 | |||
| 59 | ENTRY(omap_auxcoreboot_addr) | ||
| 60 | stmfd sp!, {r2-r12, lr} | ||
| 61 | ldr r12, =0x105 | ||
| 62 | dsb | ||
| 63 | smc | ||
| 64 | ldmfd sp!, {r2-r12, pc} | ||
| 65 | END(omap_auxcoreboot_addr) | ||
