diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap-smp.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap-smp.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index 256e84ef0f67..5305ec7341ec 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/irqchip/arm-gic.h> | 22 | #include <linux/irqchip/arm-gic.h> |
| 23 | 23 | ||
| 24 | #include <asm/smp_scu.h> | 24 | #include <asm/smp_scu.h> |
| 25 | #include <asm/virt.h> | ||
| 25 | 26 | ||
| 26 | #include "omap-secure.h" | 27 | #include "omap-secure.h" |
| 27 | #include "omap-wakeupgen.h" | 28 | #include "omap-wakeupgen.h" |
| @@ -227,8 +228,16 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus) | |||
| 227 | if (omap_secure_apis_support()) | 228 | if (omap_secure_apis_support()) |
| 228 | omap_auxcoreboot_addr(virt_to_phys(startup_addr)); | 229 | omap_auxcoreboot_addr(virt_to_phys(startup_addr)); |
| 229 | else | 230 | else |
| 230 | writel_relaxed(virt_to_phys(omap5_secondary_startup), | 231 | /* |
| 231 | base + OMAP_AUX_CORE_BOOT_1); | 232 | * If the boot CPU is in HYP mode then start secondary |
| 233 | * CPU in HYP mode as well. | ||
| 234 | */ | ||
| 235 | if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE) | ||
| 236 | writel_relaxed(virt_to_phys(omap5_secondary_hyp_startup), | ||
| 237 | base + OMAP_AUX_CORE_BOOT_1); | ||
| 238 | else | ||
| 239 | writel_relaxed(virt_to_phys(omap5_secondary_startup), | ||
| 240 | base + OMAP_AUX_CORE_BOOT_1); | ||
| 232 | 241 | ||
| 233 | } | 242 | } |
| 234 | 243 | ||
