diff options
| -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; |
