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

Commit 4ba99b97 authored by Michael Ellerman's avatar Michael Ellerman Committed by Paul Mackerras
Browse files

[POWERPC] Setup the boot cpu's paca pointer in C rather than asm



There's no need to set the boot cpu paca in asm, so do it in C so us
mere mortals can understand it.

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent aa98c50d
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -1976,17 +1976,6 @@ _STATIC(start_here_common)
	/* Not reached */
	BUG_OPCODE

/* Put the paca pointer into r13 and SPRG3 */
_GLOBAL(setup_boot_paca)
	LOAD_REG_IMMEDIATE(r3, boot_cpuid)
	lwz	r3,0(r3)
	LOAD_REG_IMMEDIATE(r4, paca) 	/* Get base vaddr of paca array	 */
	mulli	r3,r3,PACA_SIZE		/* Calculate vaddr of right paca */
	add	r13,r3,r4		/* for this processor.		 */
	mtspr	SPRN_SPRG3,r13

	blr

/*
 * We put a few things here that have to be page-aligned.
 * This stuff goes at the beginning of the bss, which is page-aligned.
+8 −1
Original line number Diff line number Diff line
@@ -149,6 +149,13 @@ early_param("smt-enabled", early_smt_enabled);
#define check_smt_enabled()
#endif /* CONFIG_SMP */

/* Put the paca pointer into r13 and SPRG3 */
void __init setup_paca(int cpu)
{
	local_paca = &paca[cpu];
	mtspr(SPRN_SPRG3, local_paca);
}

/*
 * Early initialization entry point. This is called by head.S
 * with MMU translation disabled. We rely on the "feature" of
@@ -183,7 +190,7 @@ void __init early_setup(unsigned long dt_ptr)
	early_init_devtree(__va(dt_ptr));

	/* Now we know the logical id of our boot cpu, setup the paca. */
	setup_boot_paca();
	setup_paca(boot_cpuid);

	/* Fix up paca fields required for the boot cpu */
	get_paca()->cpu_start = 1;