diff options
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r-- | arch/powerpc/kernel/traps.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 071f6e040eb2..300daf3e7ab0 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -866,6 +866,10 @@ static int emulate_string_inst(struct pt_regs *regs, u32 instword) | |||
866 | u8 val; | 866 | u8 val; |
867 | u32 shift = 8 * (3 - (pos & 0x3)); | 867 | u32 shift = 8 * (3 - (pos & 0x3)); |
868 | 868 | ||
869 | /* if process is 32-bit, clear upper 32 bits of EA */ | ||
870 | if ((regs->msr & MSR_64BIT) == 0) | ||
871 | EA &= 0xFFFFFFFF; | ||
872 | |||
869 | switch ((instword & PPC_INST_STRING_MASK)) { | 873 | switch ((instword & PPC_INST_STRING_MASK)) { |
870 | case PPC_INST_LSWX: | 874 | case PPC_INST_LSWX: |
871 | case PPC_INST_LSWI: | 875 | case PPC_INST_LSWI: |