diff options
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
| -rw-r--r-- | arch/powerpc/kernel/traps.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 37cc40ef504..83efa2f7d92 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -970,7 +970,10 @@ static int emulate_instruction(struct pt_regs *regs)  #ifdef CONFIG_PPC64  	/* Emulate the mfspr rD, DSCR. */ -	if (((instword & PPC_INST_MFSPR_DSCR_MASK) == PPC_INST_MFSPR_DSCR) && +	if ((((instword & PPC_INST_MFSPR_DSCR_USER_MASK) == +		PPC_INST_MFSPR_DSCR_USER) || +	     ((instword & PPC_INST_MFSPR_DSCR_MASK) == +		PPC_INST_MFSPR_DSCR)) &&  			cpu_has_feature(CPU_FTR_DSCR)) {  		PPC_WARN_EMULATED(mfdscr, regs);  		rd = (instword >> 21) & 0x1f; @@ -978,7 +981,10 @@ static int emulate_instruction(struct pt_regs *regs)  		return 0;  	}  	/* Emulate the mtspr DSCR, rD. */ -	if (((instword & PPC_INST_MTSPR_DSCR_MASK) == PPC_INST_MTSPR_DSCR) && +	if ((((instword & PPC_INST_MTSPR_DSCR_USER_MASK) == +		PPC_INST_MTSPR_DSCR_USER) || +	     ((instword & PPC_INST_MTSPR_DSCR_MASK) == +		PPC_INST_MTSPR_DSCR)) &&  			cpu_has_feature(CPU_FTR_DSCR)) {  		PPC_WARN_EMULATED(mtdscr, regs);  		rd = (instword >> 21) & 0x1f;  |