From 8915a944d2eb465c6b2db7b4c76bdfcbe7428d70 Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Mon, 3 Sep 2012 16:48:46 +0000 Subject: [PATCH] --- yaml --- r: 322493 b: refs/heads/master c: 00ca0de02f80924dfff6b4f630e1dff3db005e35 h: refs/heads/master i: 322491: 14e25dcc00b1da37b00e2885da263f4f48b078bd v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/sysfs.c | 4 +++- trunk/arch/powerpc/kernel/traps.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c81c1a5f7659..899268e5930e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1b6ca2a6fe56e7697d57348646e07df08f43b1bb +refs/heads/master: 00ca0de02f80924dfff6b4f630e1dff3db005e35 diff --git a/trunk/arch/powerpc/kernel/sysfs.c b/trunk/arch/powerpc/kernel/sysfs.c index d4cbbd1fa75f..8302af649219 100644 --- a/trunk/arch/powerpc/kernel/sysfs.c +++ b/trunk/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/trunk/arch/powerpc/kernel/traps.c b/trunk/arch/powerpc/kernel/traps.c index 158972341a2d..ae0843fa7a61 100644 --- a/trunk/arch/powerpc/kernel/traps.c +++ b/trunk/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