Commit b1195c0e authored by James Bottomley's avatar James Bottomley

[PARISC] update parisc to use generic strncpy_from_user()

Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 8275b91a
...@@ -18,6 +18,7 @@ config PARISC ...@@ -18,6 +18,7 @@ config PARISC
select IRQ_PER_CPU select IRQ_PER_CPU
select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_HAVE_NMI_SAFE_CMPXCHG
select GENERIC_SMP_IDLE_THREAD select GENERIC_SMP_IDLE_THREAD
select GENERIC_STRNCPY_FROM_USER
help help
The PA-RISC microprocessor is designed by Hewlett-Packard and used The PA-RISC microprocessor is designed by Hewlett-Packard and used
......
...@@ -218,15 +218,14 @@ struct exception_data { ...@@ -218,15 +218,14 @@ struct exception_data {
extern unsigned long lcopy_to_user(void __user *, const void *, unsigned long); extern unsigned long lcopy_to_user(void __user *, const void *, unsigned long);
extern unsigned long lcopy_from_user(void *, const void __user *, unsigned long); extern unsigned long lcopy_from_user(void *, const void __user *, unsigned long);
extern unsigned long lcopy_in_user(void __user *, const void __user *, unsigned long); extern unsigned long lcopy_in_user(void __user *, const void __user *, unsigned long);
extern long lstrncpy_from_user(char *, const char __user *, long); extern long strncpy_from_user(char *, const char __user *, long);
extern unsigned lclear_user(void __user *,unsigned long); extern unsigned lclear_user(void __user *,unsigned long);
extern long lstrnlen_user(const char __user *,long); extern long lstrnlen_user(const char __user *,long);
/* /*
* Complex access routines -- macros * Complex access routines -- macros
*/ */
#define user_addr_max() (~0UL)
#define strncpy_from_user lstrncpy_from_user
#define strnlen_user lstrnlen_user #define strnlen_user lstrnlen_user
#define strlen_user(str) lstrnlen_user(str, 0x7fffffffL) #define strlen_user(str) lstrnlen_user(str, 0x7fffffffL)
#define clear_user lclear_user #define clear_user lclear_user
......
...@@ -44,7 +44,6 @@ EXPORT_SYMBOL(__cmpxchg_u64); ...@@ -44,7 +44,6 @@ EXPORT_SYMBOL(__cmpxchg_u64);
#endif #endif
#include <asm/uaccess.h> #include <asm/uaccess.h>
EXPORT_SYMBOL(lstrncpy_from_user);
EXPORT_SYMBOL(lclear_user); EXPORT_SYMBOL(lclear_user);
EXPORT_SYMBOL(lstrnlen_user); EXPORT_SYMBOL(lstrnlen_user);
......
...@@ -60,47 +60,6 @@ ...@@ -60,47 +60,6 @@
bv %r0(%r1) bv %r0(%r1)
.endm .endm
/*
* long lstrncpy_from_user(char *dst, const char *src, long n)
*
* Returns -EFAULT if exception before terminator,
* N if the entire buffer filled,
* otherwise strlen (i.e. excludes zero byte)
*/
ENTRY(lstrncpy_from_user)
.proc
.callinfo NO_CALLS
.entry
comib,= 0,%r24,$lsfu_done
copy %r24,%r23
get_sr
1: ldbs,ma 1(%sr1,%r25),%r1
$lsfu_loop:
stbs,ma %r1,1(%r26)
comib,=,n 0,%r1,$lsfu_done
addib,<>,n -1,%r24,$lsfu_loop
2: ldbs,ma 1(%sr1,%r25),%r1
$lsfu_done:
sub %r23,%r24,%r28
$lsfu_exit:
bv %r0(%r2)
nop
.exit
ENDPROC(lstrncpy_from_user)
.section .fixup,"ax"
3: fixup_branch $lsfu_exit
ldi -EFAULT,%r28
.previous
.section __ex_table,"aw"
ASM_ULONG_INSN 1b,3b
ASM_ULONG_INSN 2b,3b
.previous
.procend
/* /*
* unsigned long lclear_user(void *to, unsigned long n) * unsigned long lclear_user(void *to, unsigned long n)
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment