diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap-headsmp.S')
-rw-r--r-- | arch/arm/mach-omap2/omap-headsmp.S | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S index 4993d4bfe9b2..6d1dffca6c7b 100644 --- a/arch/arm/mach-omap2/omap-headsmp.S +++ b/arch/arm/mach-omap2/omap-headsmp.S | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | /* Physical address needed since MMU not enabled yet on secondary core */ | 23 | /* Physical address needed since MMU not enabled yet on secondary core */ |
24 | #define AUX_CORE_BOOT0_PA 0x48281800 | 24 | #define AUX_CORE_BOOT0_PA 0x48281800 |
25 | #define API_HYP_ENTRY 0x102 | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * OMAP5 specific entry point for secondary CPU to jump from ROM | 28 | * OMAP5 specific entry point for secondary CPU to jump from ROM |
@@ -41,6 +42,26 @@ wait: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0 | |||
41 | b secondary_startup | 42 | b secondary_startup |
42 | ENDPROC(omap5_secondary_startup) | 43 | ENDPROC(omap5_secondary_startup) |
43 | /* | 44 | /* |
45 | * Same as omap5_secondary_startup except we call into the ROM to | ||
46 | * enable HYP mode first. This is called instead of | ||
47 | * omap5_secondary_startup if the primary CPU was put into HYP mode by | ||
48 | * the boot loader. | ||
49 | */ | ||
50 | ENTRY(omap5_secondary_hyp_startup) | ||
51 | wait_2: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0 | ||
52 | ldr r0, [r2] | ||
53 | mov r0, r0, lsr #5 | ||
54 | mrc p15, 0, r4, c0, c0, 5 | ||
55 | and r4, r4, #0x0f | ||
56 | cmp r0, r4 | ||
57 | bne wait_2 | ||
58 | ldr r12, =API_HYP_ENTRY | ||
59 | adr r0, hyp_boot | ||
60 | smc #0 | ||
61 | hyp_boot: | ||
62 | b secondary_startup | ||
63 | ENDPROC(omap5_secondary_hyp_startup) | ||
64 | /* | ||
44 | * OMAP4 specific entry point for secondary CPU to jump from ROM | 65 | * OMAP4 specific entry point for secondary CPU to jump from ROM |
45 | * code. This routine also provides a holding flag into which | 66 | * code. This routine also provides a holding flag into which |
46 | * secondary core is held until we're ready for it to initialise. | 67 | * secondary core is held until we're ready for it to initialise. |