diff options
Diffstat (limited to 'arch/sh/lib')
| -rw-r--r-- | arch/sh/lib/copy_page.S | 11 | ||||
| -rw-r--r-- | arch/sh/lib/div64-generic.c | 1 | ||||
| -rw-r--r-- | arch/sh/lib/io.c | 8 | 
3 files changed, 13 insertions, 7 deletions
diff --git a/arch/sh/lib/copy_page.S b/arch/sh/lib/copy_page.S index 5d12e657be3..43de7e8e4e1 100644 --- a/arch/sh/lib/copy_page.S +++ b/arch/sh/lib/copy_page.S @@ -80,6 +80,11 @@ ENTRY(copy_page)  	.section __ex_table, "a";	\  	.long 9999b, 6000f	;	\  	.previous +#define EX_NO_POP(...)			\ +	9999: __VA_ARGS__ ;		\ +	.section __ex_table, "a";	\ +	.long 9999b, 6005f	;	\ +	.previous  ENTRY(__copy_user)  	! Check if small number of bytes  	mov	#11,r0 @@ -139,9 +144,9 @@ EX(	mov.b	r1,@r4		)  	bt	1f  2: -EX(	mov.b	@r5+,r0		) +EX_NO_POP(	mov.b	@r5+,r0		)  	dt	r6 -EX(	mov.b	r0,@r4		) +EX_NO_POP(	mov.b	r0,@r4		)  	bf/s	2b  	 add	#1,r4 @@ -150,7 +155,7 @@ EX(	mov.b	r0,@r4		)  # Exception handler:  .section .fixup, "ax" -6000: +6005:  	mov.l	8000f,r1  	mov	r3,r0  	jmp	@r1 diff --git a/arch/sh/lib/div64-generic.c b/arch/sh/lib/div64-generic.c index 4bef3b5d964..60e76aa8b53 100644 --- a/arch/sh/lib/div64-generic.c +++ b/arch/sh/lib/div64-generic.c @@ -3,6 +3,7 @@   */  #include <linux/types.h> +#include <asm/div64.h>  extern uint64_t __xdiv64_32(u64 n, u32 d); diff --git a/arch/sh/lib/io.c b/arch/sh/lib/io.c index 4f54ec43516..88dfe6e396b 100644 --- a/arch/sh/lib/io.c +++ b/arch/sh/lib/io.c @@ -14,12 +14,12 @@  #include <linux/module.h>  #include <linux/io.h> -void __raw_readsl(unsigned long addr, void *datap, int len) +void __raw_readsl(const void __iomem *addr, void *datap, int len)  {  	u32 *data;  	for (data = datap; (len != 0) && (((u32)data & 0x1f) != 0); len--) -		*data++ = ctrl_inl(addr); +		*data++ = __raw_readl(addr);  	if (likely(len >= (0x20 >> 2))) {  		int tmp2, tmp3, tmp4, tmp5, tmp6; @@ -59,11 +59,11 @@ void __raw_readsl(unsigned long addr, void *datap, int len)  	}  	for (; len != 0; len--) -		*data++ = ctrl_inl(addr); +		*data++ = __raw_readl(addr);  }  EXPORT_SYMBOL(__raw_readsl); -void __raw_writesl(unsigned long addr, const void *data, int len) +void __raw_writesl(void __iomem *addr, const void *data, int len)  {  	if (likely(len != 0)) {  		int tmp1;  | 
