| From aa866793caf5e4bb86465e9bc7d9b59aef2895b0 Mon Sep 17 00:00:00 2001 |
| From: Magnus Damm <damm@opensource.se> |
| Date: Mon, 10 Jun 2013 18:19:36 +0900 |
| Subject: ARM: shmobile: Add SMP boot function and argument |
| |
| Add code for mach-shmobile to allow specifying boot function |
| and argument. Will initially be used for SMP together with SCU |
| but may in the future also be used for deep sleep resume. This |
| patch removes one inline virtual to physical address conversion. |
| |
| Signed-off-by: Magnus Damm <damm@opensource.se> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit ebe72ab90a5c1e3b69d89b841552fd02805dc4e4) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/headsmp.S | 13 ++++++++++--- |
| arch/arm/mach-shmobile/include/mach/common.h | 4 +++- |
| 2 files changed, 13 insertions(+), 4 deletions(-) |
| |
| diff --git a/arch/arm/mach-shmobile/headsmp.S b/arch/arm/mach-shmobile/headsmp.S |
| index 96001fd4..559d1ce5 100644 |
| --- a/arch/arm/mach-shmobile/headsmp.S |
| +++ b/arch/arm/mach-shmobile/headsmp.S |
| @@ -27,7 +27,14 @@ ENDPROC(shmobile_invalidate_start) |
| * We need _long_ jump to the physical address. |
| */ |
| .align 12 |
| -ENTRY(shmobile_secondary_vector) |
| +ENTRY(shmobile_boot_vector) |
| + ldr r0, 2f |
| ldr pc, 1f |
| -1: .long shmobile_invalidate_start - PAGE_OFFSET + PLAT_PHYS_OFFSET |
| -ENDPROC(shmobile_secondary_vector) |
| +ENDPROC(shmobile_boot_vector) |
| + |
| + .globl shmobile_boot_fn |
| +shmobile_boot_fn: |
| +1: .space 4 |
| + .globl shmobile_boot_arg |
| +shmobile_boot_arg: |
| +2: .space 4 |
| diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h |
| index 4634a5d4..54472ef4 100644 |
| --- a/arch/arm/mach-shmobile/include/mach/common.h |
| +++ b/arch/arm/mach-shmobile/include/mach/common.h |
| @@ -7,7 +7,9 @@ extern void shmobile_setup_delay(unsigned int max_cpu_core_mhz, |
| unsigned int mult, unsigned int div); |
| struct twd_local_timer; |
| extern void shmobile_setup_console(void); |
| -extern void shmobile_secondary_vector(void); |
| +extern void shmobile_boot_vector(void); |
| +extern unsigned long shmobile_boot_fn; |
| +extern unsigned long shmobile_boot_arg; |
| extern void shmobile_secondary_vector_scu(void); |
| struct clk; |
| extern int shmobile_clk_init(void); |
| -- |
| 1.8.4.3.gca3854a |
| |