diff options
Diffstat (limited to 'arch/arm/mach-imx/headsmp.S')
-rw-r--r-- | arch/arm/mach-imx/headsmp.S | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/arm/mach-imx/headsmp.S b/arch/arm/mach-imx/headsmp.S index 921fc1555854..a58c8b0527cc 100644 --- a/arch/arm/mach-imx/headsmp.S +++ b/arch/arm/mach-imx/headsmp.S | |||
@@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup) | |||
26 | 26 | ||
27 | #ifdef CONFIG_PM | 27 | #ifdef CONFIG_PM |
28 | /* | 28 | /* |
29 | * The following code is located into the .data section. This is to | 29 | * The following code must assume it is running from physical address |
30 | * allow phys_l2x0_saved_regs to be accessed with a relative load | 30 | * where absolute virtual addresses to the data section have to be |
31 | * as we are running on physical address here. | 31 | * turned into relative ones. |
32 | */ | 32 | */ |
33 | .data | ||
34 | .align | ||
35 | 33 | ||
36 | #ifdef CONFIG_CACHE_L2X0 | 34 | #ifdef CONFIG_CACHE_L2X0 |
37 | .macro pl310_resume | 35 | .macro pl310_resume |
38 | ldr r2, phys_l2x0_saved_regs | 36 | adr r0, l2x0_saved_regs_offset |
37 | ldr r2, [r0] | ||
38 | add r2, r2, r0 | ||
39 | ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 | 39 | ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 |
40 | ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value | 40 | ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value |
41 | str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl | 41 | str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl |
@@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup) | |||
43 | str r1, [r0, #L2X0_CTRL] @ re-enable L2 | 43 | str r1, [r0, #L2X0_CTRL] @ re-enable L2 |
44 | .endm | 44 | .endm |
45 | 45 | ||
46 | .globl phys_l2x0_saved_regs | 46 | l2x0_saved_regs_offset: |
47 | phys_l2x0_saved_regs: | 47 | .word l2x0_saved_regs - . |
48 | .long 0 | 48 | |
49 | #else | 49 | #else |
50 | .macro pl310_resume | 50 | .macro pl310_resume |
51 | .endm | 51 | .endm |