diff options
| -rw-r--r-- | arch/powerpc/kernel/head_64.S | 11 | ||||
| -rw-r--r-- | arch/powerpc/kernel/setup_64.c | 9 |
2 files changed, 8 insertions, 12 deletions
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index be5560a2e441..da0924293496 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
| @@ -1976,17 +1976,6 @@ _STATIC(start_here_common) | |||
| 1976 | /* Not reached */ | 1976 | /* Not reached */ |
| 1977 | BUG_OPCODE | 1977 | BUG_OPCODE |
| 1978 | 1978 | ||
| 1979 | /* Put the paca pointer into r13 and SPRG3 */ | ||
| 1980 | _GLOBAL(setup_boot_paca) | ||
| 1981 | LOAD_REG_IMMEDIATE(r3, boot_cpuid) | ||
| 1982 | lwz r3,0(r3) | ||
| 1983 | LOAD_REG_IMMEDIATE(r4, paca) /* Get base vaddr of paca array */ | ||
| 1984 | mulli r3,r3,PACA_SIZE /* Calculate vaddr of right paca */ | ||
| 1985 | add r13,r3,r4 /* for this processor. */ | ||
| 1986 | mtspr SPRN_SPRG3,r13 | ||
| 1987 | |||
| 1988 | blr | ||
| 1989 | |||
| 1990 | /* | 1979 | /* |
| 1991 | * We put a few things here that have to be page-aligned. | 1980 | * We put a few things here that have to be page-aligned. |
| 1992 | * This stuff goes at the beginning of the bss, which is page-aligned. | 1981 | * This stuff goes at the beginning of the bss, which is page-aligned. |
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index cc26530145db..a2fb2e627aad 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
| @@ -149,6 +149,13 @@ early_param("smt-enabled", early_smt_enabled); | |||
| 149 | #define check_smt_enabled() | 149 | #define check_smt_enabled() |
| 150 | #endif /* CONFIG_SMP */ | 150 | #endif /* CONFIG_SMP */ |
| 151 | 151 | ||
| 152 | /* Put the paca pointer into r13 and SPRG3 */ | ||
| 153 | void __init setup_paca(int cpu) | ||
| 154 | { | ||
| 155 | local_paca = &paca[cpu]; | ||
| 156 | mtspr(SPRN_SPRG3, local_paca); | ||
| 157 | } | ||
| 158 | |||
| 152 | /* | 159 | /* |
| 153 | * Early initialization entry point. This is called by head.S | 160 | * Early initialization entry point. This is called by head.S |
| 154 | * with MMU translation disabled. We rely on the "feature" of | 161 | * with MMU translation disabled. We rely on the "feature" of |
| @@ -183,7 +190,7 @@ void __init early_setup(unsigned long dt_ptr) | |||
| 183 | early_init_devtree(__va(dt_ptr)); | 190 | early_init_devtree(__va(dt_ptr)); |
| 184 | 191 | ||
| 185 | /* Now we know the logical id of our boot cpu, setup the paca. */ | 192 | /* Now we know the logical id of our boot cpu, setup the paca. */ |
| 186 | setup_boot_paca(); | 193 | setup_paca(boot_cpuid); |
| 187 | 194 | ||
| 188 | /* Fix up paca fields required for the boot cpu */ | 195 | /* Fix up paca fields required for the boot cpu */ |
| 189 | get_paca()->cpu_start = 1; | 196 | get_paca()->cpu_start = 1; |
