diff options
author | Linus Torvalds | 2017-01-28 20:00:08 +0100 |
---|---|---|
committer | Linus Torvalds | 2017-01-28 20:00:08 +0100 |
commit | ef1dce990b06a3f5bf4f71100891686b5d3f7c7e (patch) | |
tree | 22d25cfec318d544a10f1a64738e40e2792ff836 /arch/arc/kernel/unaligned.c | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (diff) | |
parent | ARC: [arcompact] handle unaligned access delay slot corner case (diff) | |
download | kernel-qcow2-linux-ef1dce990b06a3f5bf4f71100891686b5d3f7c7e.tar.gz kernel-qcow2-linux-ef1dce990b06a3f5bf4f71100891686b5d3f7c7e.tar.xz kernel-qcow2-linux-ef1dce990b06a3f5bf4f71100891686b5d3f7c7e.zip |
Merge tag 'arc-4.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
Pull ARC fixes from Vineet Gupta:
"Hopefully last set of changes for ARC for 4.10:
- fix for unaligned access emulation corner case
- fix for udelay loop inline asm regression
- fix irq affinity finally for AXS103 board [Yuriy]
- final fixes for setting IO-coherency sanely in SMP"
* tag 'arc-4.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
ARC: [arcompact] handle unaligned access delay slot corner case
ARCv2: smp-boot: wake_flag polling by non-Masters needs to be uncached
ARC: smp-boot: Decouple Non masters waiting API from jump to entry point
ARCv2: MCIP: update the BCR per current changes
ARC: udelay: fix inline assembler by adding LP_COUNT to clobber list
ARCv2: MCIP: Deprecate setting of affinity in Device Tree
Diffstat (limited to 'arch/arc/kernel/unaligned.c')
-rw-r--r-- | arch/arc/kernel/unaligned.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c index abd961f3e763..91ebe382147f 100644 --- a/arch/arc/kernel/unaligned.c +++ b/arch/arc/kernel/unaligned.c @@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long address, struct pt_regs *regs, if (state.fault) goto fault; + /* clear any remanants of delay slot */ if (delay_mode(regs)) { - regs->ret = regs->bta; + regs->ret = regs->bta ~1U; regs->status32 &= ~STATUS_DE_MASK; } else { regs->ret += state.instr_len; |