diff options
Diffstat (limited to 'arch/powerpc/kernel/misc_64.S')
-rw-r--r-- | arch/powerpc/kernel/misc_64.S | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index a5cf9c1356a6..a2b18dffa03e 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/asm-offsets.h> | 24 | #include <asm/asm-offsets.h> |
25 | #include <asm/cputable.h> | 25 | #include <asm/cputable.h> |
26 | #include <asm/thread_info.h> | 26 | #include <asm/thread_info.h> |
27 | #include <asm/kexec.h> | ||
27 | 28 | ||
28 | .text | 29 | .text |
29 | 30 | ||
@@ -471,6 +472,10 @@ _GLOBAL(kexec_wait) | |||
471 | 1: mflr r5 | 472 | 1: mflr r5 |
472 | addi r5,r5,kexec_flag-1b | 473 | addi r5,r5,kexec_flag-1b |
473 | 474 | ||
475 | li r4,KEXEC_STATE_REAL_MODE | ||
476 | stb r4,PACAKEXECSTATE(r13) | ||
477 | SYNC | ||
478 | |||
474 | 99: HMT_LOW | 479 | 99: HMT_LOW |
475 | #ifdef CONFIG_KEXEC /* use no memory without kexec */ | 480 | #ifdef CONFIG_KEXEC /* use no memory without kexec */ |
476 | lwz r4,0(r5) | 481 | lwz r4,0(r5) |
@@ -494,14 +499,11 @@ kexec_flag: | |||
494 | * note: this is a terminal routine, it does not save lr | 499 | * note: this is a terminal routine, it does not save lr |
495 | * | 500 | * |
496 | * get phys id from paca | 501 | * get phys id from paca |
497 | * set paca id to -1 to say we got here | ||
498 | * switch to real mode | 502 | * switch to real mode |
499 | * join other cpus in kexec_wait(phys_id) | 503 | * join other cpus in kexec_wait(phys_id) |
500 | */ | 504 | */ |
501 | _GLOBAL(kexec_smp_wait) | 505 | _GLOBAL(kexec_smp_wait) |
502 | lhz r3,PACAHWCPUID(r13) | 506 | lhz r3,PACAHWCPUID(r13) |
503 | li r4,-1 | ||
504 | sth r4,PACAHWCPUID(r13) /* let others know we left */ | ||
505 | bl real_mode | 507 | bl real_mode |
506 | b .kexec_wait | 508 | b .kexec_wait |
507 | 509 | ||