diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r-- | arch/powerpc/kernel/process.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index e2f12cbcade9..0b93893424f5 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -1505,6 +1505,16 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp) | |||
1505 | current->thread.regs = regs - 1; | 1505 | current->thread.regs = regs - 1; |
1506 | } | 1506 | } |
1507 | 1507 | ||
1508 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | ||
1509 | /* | ||
1510 | * Clear any transactional state, we're exec()ing. The cause is | ||
1511 | * not important as there will never be a recheckpoint so it's not | ||
1512 | * user visible. | ||
1513 | */ | ||
1514 | if (MSR_TM_SUSPENDED(mfmsr())) | ||
1515 | tm_reclaim_current(0); | ||
1516 | #endif | ||
1517 | |||
1508 | memset(regs->gpr, 0, sizeof(regs->gpr)); | 1518 | memset(regs->gpr, 0, sizeof(regs->gpr)); |
1509 | regs->ctr = 0; | 1519 | regs->ctr = 0; |
1510 | regs->link = 0; | 1520 | regs->link = 0; |