[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: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
aa98c50dcb
commit
4ba99b97da
@ -1976,17 +1976,6 @@ _STATIC(start_here_common)
|
|||||||
/* Not reached */
|
/* Not reached */
|
||||||
BUG_OPCODE
|
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.
|
* 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.
|
* This stuff goes at the beginning of the bss, which is page-aligned.
|
||||||
|
@ -149,6 +149,13 @@ early_param("smt-enabled", early_smt_enabled);
|
|||||||
#define check_smt_enabled()
|
#define check_smt_enabled()
|
||||||
#endif /* CONFIG_SMP */
|
#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
|
* Early initialization entry point. This is called by head.S
|
||||||
* with MMU translation disabled. We rely on the "feature" of
|
* 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));
|
early_init_devtree(__va(dt_ptr));
|
||||||
|
|
||||||
/* Now we know the logical id of our boot cpu, setup the paca. */
|
/* 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 */
|
/* Fix up paca fields required for the boot cpu */
|
||||||
get_paca()->cpu_start = 1;
|
get_paca()->cpu_start = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user