diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r-- | arch/powerpc/kernel/process.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 92bc75f61ca6..193c8c1bf132 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -620,7 +620,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp) | |||
620 | regs->nip = start; | 620 | regs->nip = start; |
621 | regs->msr = MSR_USER; | 621 | regs->msr = MSR_USER; |
622 | #else | 622 | #else |
623 | { | 623 | if (!test_thread_flag(TIF_32BIT)) { |
624 | unsigned long entry, toc, load_addr = regs->gpr[2]; | 624 | unsigned long entry, toc, load_addr = regs->gpr[2]; |
625 | 625 | ||
626 | /* start is a relocated pointer to the function descriptor for | 626 | /* start is a relocated pointer to the function descriptor for |
@@ -641,6 +641,10 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp) | |||
641 | regs->nip = entry; | 641 | regs->nip = entry; |
642 | regs->gpr[2] = toc; | 642 | regs->gpr[2] = toc; |
643 | regs->msr = MSR_USER64; | 643 | regs->msr = MSR_USER64; |
644 | } else { | ||
645 | regs->nip = start; | ||
646 | regs->gpr[2] = 0; | ||
647 | regs->msr = MSR_USER32; | ||
644 | } | 648 | } |
645 | #endif | 649 | #endif |
646 | 650 | ||