diff options
| -rw-r--r-- | arch/powerpc/kernel/sysfs.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/traps.c | 3 | 
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c index d4cbbd1fa75..8302af64921 100644 --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c @@ -196,8 +196,10 @@ static ssize_t show_dscr_default(struct device *dev,  static void update_dscr(void *dummy)  { -	if (!current->thread.dscr_inherit) +	if (!current->thread.dscr_inherit) { +		current->thread.dscr = dscr_default;  		mtspr(SPRN_DSCR, dscr_default); +	}  }  static ssize_t __used store_dscr_default(struct device *dev, diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 158972341a2..ae0843fa7a6 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -972,8 +972,9 @@ static int emulate_instruction(struct pt_regs *regs)  			cpu_has_feature(CPU_FTR_DSCR)) {  		PPC_WARN_EMULATED(mtdscr, regs);  		rd = (instword >> 21) & 0x1f; -		mtspr(SPRN_DSCR, regs->gpr[rd]); +		current->thread.dscr = regs->gpr[rd];  		current->thread.dscr_inherit = 1; +		mtspr(SPRN_DSCR, current->thread.dscr);  		return 0;  	}  #endif  |