mirror of https://gitee.com/openkylin/linux.git
ppc64: Simplify secondary CPU startup on powermacs
... for consistency with ppc32, and because this way is neater. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
529294d59f
commit
ef1a12817a
|
@ -1556,20 +1556,17 @@ copy_to_here:
|
||||||
.section ".text";
|
.section ".text";
|
||||||
.align 2 ;
|
.align 2 ;
|
||||||
|
|
||||||
.globl pmac_secondary_start_1
|
.globl __secondary_start_pmac_0
|
||||||
pmac_secondary_start_1:
|
__secondary_start_pmac_0:
|
||||||
li r24, 1
|
/* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */
|
||||||
b .pmac_secondary_start
|
li r24,0
|
||||||
|
b 1f
|
||||||
.globl pmac_secondary_start_2
|
li r24,1
|
||||||
pmac_secondary_start_2:
|
b 1f
|
||||||
li r24, 2
|
li r24,2
|
||||||
b .pmac_secondary_start
|
b 1f
|
||||||
|
li r24,3
|
||||||
.globl pmac_secondary_start_3
|
1:
|
||||||
pmac_secondary_start_3:
|
|
||||||
li r24, 3
|
|
||||||
b .pmac_secondary_start
|
|
||||||
|
|
||||||
_GLOBAL(pmac_secondary_start)
|
_GLOBAL(pmac_secondary_start)
|
||||||
/* turn on 64-bit mode */
|
/* turn on 64-bit mode */
|
||||||
|
|
|
@ -59,9 +59,7 @@
|
||||||
#define DBG(fmt...)
|
#define DBG(fmt...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void pmac_secondary_start_1(void);
|
extern void __secondary_start_pmac_0(void);
|
||||||
extern void pmac_secondary_start_2(void);
|
|
||||||
extern void pmac_secondary_start_3(void);
|
|
||||||
|
|
||||||
extern struct smp_ops_t *smp_ops;
|
extern struct smp_ops_t *smp_ops;
|
||||||
|
|
||||||
|
@ -236,7 +234,7 @@ static int __init smp_core99_probe(void)
|
||||||
|
|
||||||
static void __init smp_core99_kick_cpu(int nr)
|
static void __init smp_core99_kick_cpu(int nr)
|
||||||
{
|
{
|
||||||
int save_vector, j;
|
unsigned int save_vector, j;
|
||||||
unsigned long new_vector;
|
unsigned long new_vector;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
volatile unsigned int *vector
|
volatile unsigned int *vector
|
||||||
|
@ -253,20 +251,9 @@ static void __init smp_core99_kick_cpu(int nr)
|
||||||
save_vector = *vector;
|
save_vector = *vector;
|
||||||
|
|
||||||
/* Setup fake reset vector that does
|
/* Setup fake reset vector that does
|
||||||
* b .pmac_secondary_start - KERNELBASE
|
* b __secondary_start_pmac_0 + nr*8 - KERNELBASE
|
||||||
*/
|
*/
|
||||||
switch(nr) {
|
new_vector = (unsigned long) __secondary_start_pmac_0 + nr * 8;
|
||||||
case 1:
|
|
||||||
new_vector = (unsigned long)pmac_secondary_start_1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
new_vector = (unsigned long)pmac_secondary_start_2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
default:
|
|
||||||
new_vector = (unsigned long)pmac_secondary_start_3;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*vector = 0x48000002 + (new_vector - KERNELBASE);
|
*vector = 0x48000002 + (new_vector - KERNELBASE);
|
||||||
|
|
||||||
/* flush data cache and inval instruction cache */
|
/* flush data cache and inval instruction cache */
|
||||||
|
|
Loading…
Reference in New Issue