|
@@ -3,8 +3,9 @@
|
|
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
|
|
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
|
|
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
|
|
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
|
|
*
|
|
*
|
|
- * Returns 0, if ok, and number of bytes not yet set if exception
|
|
|
|
- * occurs and we were called as clear_user.
|
|
|
|
|
|
+ * Calls to memset returns initial %o0. Calls to bzero returns 0, if ok, and
|
|
|
|
+ * number of bytes not yet set if exception occurs and we were called as
|
|
|
|
+ * clear_user.
|
|
*/
|
|
*/
|
|
|
|
|
|
#include <asm/ptrace.h>
|
|
#include <asm/ptrace.h>
|
|
@@ -65,6 +66,8 @@ __bzero_begin:
|
|
.globl __memset_start, __memset_end
|
|
.globl __memset_start, __memset_end
|
|
__memset_start:
|
|
__memset_start:
|
|
memset:
|
|
memset:
|
|
|
|
+ mov %o0, %g1
|
|
|
|
+ mov 1, %g4
|
|
and %o1, 0xff, %g3
|
|
and %o1, 0xff, %g3
|
|
sll %g3, 8, %g2
|
|
sll %g3, 8, %g2
|
|
or %g3, %g2, %g3
|
|
or %g3, %g2, %g3
|
|
@@ -89,6 +92,7 @@ memset:
|
|
sub %o0, %o2, %o0
|
|
sub %o0, %o2, %o0
|
|
|
|
|
|
__bzero:
|
|
__bzero:
|
|
|
|
+ clr %g4
|
|
mov %g0, %g3
|
|
mov %g0, %g3
|
|
1:
|
|
1:
|
|
cmp %o1, 7
|
|
cmp %o1, 7
|
|
@@ -151,8 +155,8 @@ __bzero:
|
|
bne,a 8f
|
|
bne,a 8f
|
|
EX(stb %g3, [%o0], and %o1, 1)
|
|
EX(stb %g3, [%o0], and %o1, 1)
|
|
8:
|
|
8:
|
|
- retl
|
|
|
|
- clr %o0
|
|
|
|
|
|
+ b 0f
|
|
|
|
+ nop
|
|
7:
|
|
7:
|
|
be 13b
|
|
be 13b
|
|
orcc %o1, 0, %g0
|
|
orcc %o1, 0, %g0
|
|
@@ -164,6 +168,12 @@ __bzero:
|
|
bne 8b
|
|
bne 8b
|
|
EX(stb %g3, [%o0 - 1], add %o1, 1)
|
|
EX(stb %g3, [%o0 - 1], add %o1, 1)
|
|
0:
|
|
0:
|
|
|
|
+ andcc %g4, 1, %g0
|
|
|
|
+ be 5f
|
|
|
|
+ nop
|
|
|
|
+ retl
|
|
|
|
+ mov %g1, %o0
|
|
|
|
+5:
|
|
retl
|
|
retl
|
|
clr %o0
|
|
clr %o0
|
|
__memset_end:
|
|
__memset_end:
|