summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/arc770/config-4.45
-rw-r--r--target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch31
2 files changed, 34 insertions, 2 deletions
diff --git a/target/linux/arc770/config-4.4 b/target/linux/arc770/config-4.4
index c8f021dce2..87fd7e342f 100644
--- a/target/linux/arc770/config-4.4
+++ b/target/linux/arc770/config-4.4
@@ -19,7 +19,7 @@ CONFIG_ARC_DBG=y
# CONFIG_ARC_DBG_TLB_MISS_COUNT is not set
# CONFIG_ARC_DBG_TLB_PARANOIA is not set
CONFIG_ARC_DW2_UNWIND=y
-# CONFIG_ARC_EMUL_UNALIGNED is not set
+CONFIG_ARC_EMUL_UNALIGNED=y
# CONFIG_ARC_FPU_SAVE_RESTORE is not set
CONFIG_ARC_HAS_DCACHE=y
# CONFIG_ARC_HAS_DCCM is not set
@@ -162,7 +162,8 @@ CONFIG_SRCU=y
CONFIG_STACKTRACE=y
CONFIG_STMMAC_ETH=y
CONFIG_STMMAC_PLATFORM=y
-# CONFIG_SUNXI_SRAM is not set
+CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW=y
+CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_USB_SUPPORT=y
diff --git a/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch b/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch
new file mode 100644
index 0000000000..76a9ce8968
--- /dev/null
+++ b/target/linux/generic/patches-4.4/333-arc-enable-unaligned-access-in-kernel-mode.patch
@@ -0,0 +1,31 @@
+From af737b55fc7c61f17da9ae89fba536e0a9338e98 Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Mon, 14 Mar 2016 17:26:34 +0300
+Subject: [PATCH] arc: enable unaligned access in kernel mode
+
+This enables misaligned access handling even in kernel mode.
+Some wireless drivers (ath9k-htc and mt7601u) use misaligned accesses
+here and there and to cope with that without fixing stuff in the drivers
+we're just gracefully handling it on ARC.
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+---
+ arch/arc/kernel/unaligned.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c
+index abd961f..0b0cc97 100644
+--- a/arch/arc/kernel/unaligned.c
++++ b/arch/arc/kernel/unaligned.c
+@@ -206,7 +206,7 @@ int misaligned_fixup(unsigned long address, struct pt_regs *regs,
+ char buf[TASK_COMM_LEN];
+
+ /* handle user mode only and only if enabled by sysadmin */
+- if (!user_mode(regs) || !unaligned_enabled)
++ if (!unaligned_enabled)
+ return 1;
+
+ if (no_unaligned_warning) {
+--
+2.5.0
+