]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ARCv2: Enable unaligned access in early ASM code
authorEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Wed, 16 Jan 2019 11:29:50 +0000 (14:29 +0300)
committerVineet Gupta <vgupta@synopsys.com>
Thu, 21 Feb 2019 19:03:15 +0000 (11:03 -0800)
It is currently done in arc_init_IRQ() which might be too late
considering gcc 7.3.1 onwards (GNU 2018.03) generates unaligned
memory accesses by default

Cc: stable@vger.kernel.org #4.4+
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
[vgupta: rewrote changelog]

arch/arc/kernel/head.S

index 8b90d25a15cca8ebd334402848d98aa22f07b8bf..26e33a8b2d188cd2994873249d4cae87fdd4021c 100644 (file)
@@ -17,6 +17,7 @@
 #include <asm/entry.h>
 #include <asm/arcregs.h>
 #include <asm/cache.h>
+#include <asm/irqflags.h>
 
 .macro CPU_EARLY_SETUP
 
        sr      r5, [ARC_REG_DC_CTRL]
 
 1:
+
+#ifdef CONFIG_ISA_ARCV2
+       ; Unaligned access is disabled at reset, so re-enable early as
+       ; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access
+       ; by default
+       lr      r5, [status32]
+       bset    r5, r5, STATUS_AD_BIT
+       kflag   r5
+#endif
 .endm
 
        .section .init.text, "ax",@progbits