openrisc: use generic strnlen_user() function

The generic version is both easier to support and more correct.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jonas Bonn
2012-05-27 10:25:47 +02:00
committed by Linus Torvalds
parent 1629372caa
commit b48b2c3e50
3 changed files with 3 additions and 75 deletions

View File

@@ -103,50 +103,3 @@ __clear_user:
.section __ex_table, "a"
.long 9b, 99b // write fault
.previous
/*
* extern int __strnlen_user(const char *str, long len, unsigned long top);
*
*
* RTRN: - length of a string including NUL termination character
* - on page fault 0
*/
.global __strnlen_user
__strnlen_user:
l.addi r1,r1,-8
l.sw 0(r1),r6
l.sw 4(r1),r3
l.addi r11,r0,0
2: l.sfeq r11,r4
l.bf 1f
l.addi r11,r11,1
8: l.lbz r6,0(r3)
l.sfeq r6,r0
l.bf 1f
l.sfgeu r3,r5 // are we over the top ?
l.bf 99f
l.j 2b
l.addi r3,r3,1
1:
l.lwz r6,0(r1)
l.lwz r3,4(r1)
l.jr r9
l.addi r1,r1,8
.section .fixup, "ax"
99:
l.addi r11,r0,0
l.lwz r6,0(r1)
l.lwz r3,4(r1)
l.jr r9
l.addi r1,r1,8
.previous
.section __ex_table, "a"
.long 8b, 99b // read fault
.previous