diff options
| -rw-r--r-- | arch/arc/include/asm/uaccess.h | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/arch/arc/include/asm/uaccess.h b/arch/arc/include/asm/uaccess.h index d2da159bb80a..1e8809ea000a 100644 --- a/arch/arc/include/asm/uaccess.h +++ b/arch/arc/include/asm/uaccess.h @@ -146,8 +146,9 @@ raw_copy_from_user(void *to, const void __user *from, unsigned long n)  	if (n == 0)  		return 0; -	/* unaligned */ -	if (((unsigned long)to & 0x3) || ((unsigned long)from & 0x3)) { +	/* fallback for unaligned access when hardware doesn't support */ +	if (!IS_ENABLED(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS) && +	     (((unsigned long)to & 0x3) || ((unsigned long)from & 0x3))) {  		unsigned char tmp; @@ -373,8 +374,9 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)  	if (n == 0)  		return 0; -	/* unaligned */ -	if (((unsigned long)to & 0x3) || ((unsigned long)from & 0x3)) { +	/* fallback for unaligned access when hardware doesn't support */ +	if (!IS_ENABLED(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS) && +	     (((unsigned long)to & 0x3) || ((unsigned long)from & 0x3))) {  		unsigned char tmp; | 
