Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dff2ab16 authored by Catalin Marinas's avatar Catalin Marinas
Browse files

Thumb-2: Pass a Thumb-2 address to the secondary CPUs to jump to



This patch sets bit 0 in the startup address passed to the secondary
CPUs so that they branch into Thumb-2 mode.

Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent adca6dc2
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <mach/hardware.h>
#include <asm/mach-types.h>
#include <asm/localtimer.h>
#include <asm/unified.h>

#include <mach/board-eb.h>
#include <mach/board-pb11mp.h>
@@ -137,26 +138,19 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)

static void __init poke_milo(void)
{
	extern void secondary_startup(void);

	/* nobody is to be released from the pen yet */
	pen_release = -1;

	/*
	 * write the address of secondary startup into the system-wide
	 * flags register, then clear the bottom two bits, which is what
	 * BootMonitor is waiting for
	 * Write the address of secondary startup into the system-wide flags
	 * register. The BootMonitor waits for this register to become
	 * non-zero.
	 */
#if 1
#define REALVIEW_SYS_FLAGSS_OFFSET 0x30
	__raw_writel(virt_to_phys(realview_secondary_startup),
		     __io_address(REALVIEW_SYS_BASE) +
		     REALVIEW_SYS_FLAGSS_OFFSET);
#define REALVIEW_SYS_FLAGSC_OFFSET 0x34
	__raw_writel(3,
	__raw_writel(BSYM(virt_to_phys(realview_secondary_startup)),
		     __io_address(REALVIEW_SYS_BASE) +
		     REALVIEW_SYS_FLAGSC_OFFSET);
#endif
		     REALVIEW_SYS_FLAGSS_OFFSET);

	mb();
}