OSDN Git Service

Add arch specific strncpy_from_user
authorYoshinori Sato <ysato@users.sourceforge.jp>
Wed, 31 Dec 2014 09:44:20 +0000 (18:44 +0900)
committerYoshinori Sato <ysato@users.sourceforge.jp>
Wed, 31 Dec 2014 09:44:20 +0000 (18:44 +0900)
arch/h8300/include/asm/uaccess.h
arch/h8300/lib/Makefile
arch/h8300/lib/strncpy.S [new file with mode: 0644]

index e6f9c3f..e18e48d 100644 (file)
@@ -20,8 +20,8 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
 #define        RANGE_CHECK_OK(addr, size, lower, upper) \
        (((addr) >= (lower)) && (((addr) + (size)) < (upper)))
 
-       extern unsigned long  _ramend;
-       return(RANGE_CHECK_OK(addr, size, 0L, (unsigned long)&_ramend));
+       extern unsigned long  memory_end;
+       return(RANGE_CHECK_OK(addr, size, 0L, memory_end));
 }
 
 /*
@@ -129,8 +129,8 @@ extern int __get_user_bad(void);
 #define copy_from_user_ret(to,from,n,retval) ({ if (copy_from_user(to,from,n)) return retval; })
 
 unsigned long clear_user(void __user *addr, unsigned long size);
-#define strncpy_from_user(s, d, n) strncpy(s, d, n)
 #define strnlen_user(s, n) strnlen(s, n)
+long strncpy_from_user(char *d, const char *s, long n);
 
 #define __clear_user   clear_user
 
index 1577f50..7ea3808 100644 (file)
@@ -2,4 +2,4 @@
 # Makefile for H8/300-specific library files..
 #
 
-lib-y  = ashrdi3.o checksum.o memcpy.o memset.o abs.o romfs.o
+lib-y  = ashrdi3.o checksum.o memcpy.o memset.o abs.o strncpy.o
diff --git a/arch/h8300/lib/strncpy.S b/arch/h8300/lib/strncpy.S
new file mode 100644 (file)
index 0000000..357ac1d
--- /dev/null
@@ -0,0 +1,34 @@
+;;; strncpy.S
+
+#include <asm/linkage.h>
+
+       .text
+.global strncpy_from_user
+
+;;; long strncpy_from_user(void *to, void *from, size_t n)
+strncpy_from_user:
+       mov.l   er2,er2
+       bne     1f
+       sub.l   er0,er0
+       rts     
+1:
+       mov.l   er4,@-sp
+       sub.l   er3,er3
+2:     
+       mov.b   @er1+,r4l
+       mov.b   r4l,@er0
+       adds    #1,er0
+       beq     3f
+       inc.l   #1,er3
+       dec.l   #1,er2
+       bne     2b
+3:
+       dec.l   #1,er2
+4:     
+       mov.b   r4l,@er0
+       adds    #1,er0
+       dec.l   #1,er2
+       bne     4b
+       mov.l   er3,er0
+       mov.l   @sp+,er4
+       rts