mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 00:01:12 +00:00
Remove powerpc32 bounded-pointers code.
This commit is contained in:
parent
365261c37f
commit
b551088322
163
ChangeLog
163
ChangeLog
@ -1,3 +1,166 @@
|
|||||||
|
2013-02-28 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[BZ #13550]
|
||||||
|
* sysdeps/powerpc/powerpc32/bp-asm.h: Remove file.
|
||||||
|
* sysdeps/powerpc/powerpc32/__longjmp-common.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__longjmp): Don't use BP_SYM and CHECK_BOUNDS_BOTH_WIDE_LIT.
|
||||||
|
* sysdeps/powerpc/powerpc32/a2/memcpy.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/add_n.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__mpn_add_n): Don't use BP_SYM.
|
||||||
|
(__mpn_add_n) [__BOUNDED_POINTERS_]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/addmul_1.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(__mpn_addmul_1): Don't use BP_SYM.
|
||||||
|
(__mpn_addmul_1) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Don't include
|
||||||
|
<bp-sym.h>.
|
||||||
|
(_setjmp): Don't use BP_SYM.
|
||||||
|
(__novmx_setjmp): Likewise.
|
||||||
|
(__GI__setjmp): Likewise.
|
||||||
|
(__vmx_setjmp): Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc32/bsd-setjmp.S: Don't include
|
||||||
|
<bp-sym.h>.
|
||||||
|
* sysdeps/powerpc/powerpc32/bzero.S: Don't include <bp-sym.h>.
|
||||||
|
(__bzero): Don't use BP_SYM.
|
||||||
|
(__bzero) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
(__bzero) [!__BOUNDED_POINTERS__]: Make code unconditional.
|
||||||
|
* sysdeps/powerpc/powerpc32/cell/memcpy.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__longjmp): Don't use BP_SYM and CHECK_BOUNDS_BOTH_WIDE_LIT.
|
||||||
|
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__sigsetjmp): Don't use BP_SYM and CHECK_BOUNDS_BOTH_WIDE_LIT.
|
||||||
|
* sysdeps/powerpc/powerpc32/lshift.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__mpn_lshift): Don't use BP_SYM.
|
||||||
|
(__mpn_lshift) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/memset.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
(memset) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
(memset) [!__BOUNDED_POINTERS__]: Make code unconditional.
|
||||||
|
* sysdeps/powerpc/powerpc32/mul_1.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__mpn_mul_1): Don't use BP_SYM.
|
||||||
|
(__mpn_mul_1) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/power4/memcmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power4/memcpy.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power4/memset.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(strncmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power6/memcpy.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power6/memset.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/memchr.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__memchr): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/memcmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/memcpy.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/mempcpy.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__mempcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/memrchr.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__memrchr): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/memset.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/rawmemchr.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__rawmemchr): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strcasecmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__STRCMP): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strchr.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(strchr): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strchrnul.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__strchrnul): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strlen.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(strlen): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strncmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(strncmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/power7/strnlen.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__strnlen): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/rshift.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__mpn_rshift): Don't use BP_SYM.
|
||||||
|
(__mpn_rshift) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/setjmp-common.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__sigsetjmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/start.S: Don't include "bp-sym.h".
|
||||||
|
(L(start_addresses)): Don't use BP_SYM.
|
||||||
|
(_start): Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc32/stpcpy.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__stpcpy): Don't use BP_SYM and macros from bp-asm.h.
|
||||||
|
(__stpcpy) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
(__stpcpy) [!__BOUNDED_POINTERS__]: Make code unconditional.
|
||||||
|
* sysdeps/powerpc/powerpc32/strchr.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(strchr): Don't use BP_SYM.h and macros from bp-asm.h.
|
||||||
|
(strchr) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
(strchr) [!__BOUNDED_POINTERS__]: Make code unconditional.
|
||||||
|
* sysdeps/powerpc/powerpc32/strcmp.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(strcmp): Don't use BP_SYM and CHECK_BOUNDS_LOW. Remove GKM FIXME
|
||||||
|
comments.
|
||||||
|
(strcmp) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/strcpy.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(strcpy): Don't use BP_SYM and macros from bp-asm.h. Remove GKM
|
||||||
|
FIXME comments.
|
||||||
|
(strcpy) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
(strcpy) [!__BOUNDED_POINTERS__]: Make code unconditional.
|
||||||
|
* sysdeps/powerpc/powerpc32/strlen.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(strlen): Don't use BP_SYM and CHECK_BOUNDS_LOW. Remove GKM FIXME
|
||||||
|
comment.
|
||||||
|
* sysdeps/powerpc/powerpc32/strncmp.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(strncmp): Don't use BP_SYM,
|
||||||
|
* sysdeps/powerpc/powerpc32/sub_n.S: Don't include <bp-sym.h> and
|
||||||
|
<bp-asm.h>.
|
||||||
|
(__mpn_sub_n): Don't use BP_SYM.
|
||||||
|
(__mpn_sub_n) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/powerpc/powerpc32/submul_1.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(__mpn_submul_1): Don't use BP_SYM.
|
||||||
|
(__mpn_submul_1) [__BOUNDED_POINTERS__]: Remove conditional code.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__brk): Don't use BP_SYM and DISCARD_BOUNDS.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(__clone): Don't use BP_SYM and DISCARD_BOUNDS. Remove GKM FIXME
|
||||||
|
comment.
|
||||||
|
|
||||||
2013-02-28 Siddhesh Poyarekar <siddhesh@redhat.com>
|
2013-02-28 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (add_magnitudes):
|
* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (add_magnitudes):
|
||||||
|
@ -1,3 +1,31 @@
|
|||||||
|
2013-02-28 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[BZ #13550]
|
||||||
|
* sysdeps/powerpc/powerpc32/405/memcmp.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(memcmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/memcpy.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(memcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/memset.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/strcmp.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(strcmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/strcpy.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(strcpy): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/strlen.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(strlen): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/405/strncmp.S: Don't include
|
||||||
|
<bp-sym.h> and <bp-asm.h>.
|
||||||
|
(strncmp): Don't use BP_SYM.
|
||||||
|
* sysdeps/powerpc/powerpc32/476/memset.S: Don't include <bp-sym.h>
|
||||||
|
and <bp-asm.h>.
|
||||||
|
(memset): Don't use BP_SYM.
|
||||||
|
|
||||||
2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
|
2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* memcmp
|
/* memcmp
|
||||||
|
|
||||||
@ -32,7 +30,7 @@
|
|||||||
return src1 > src2, src1 < src2 or src1 = src2.
|
return src1 > src2, src1 < src2 or src1 = src2.
|
||||||
If src1 = src2 and no null, repeat. */
|
If src1 = src2 and no null, repeat. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memcmp), 5, 0)
|
EALIGN (memcmp, 5, 0)
|
||||||
srwi. r6,r5,5
|
srwi. r6,r5,5
|
||||||
beq L(preword2_count_loop)
|
beq L(preword2_count_loop)
|
||||||
mtctr r6
|
mtctr r6
|
||||||
@ -125,6 +123,6 @@ L(st2):
|
|||||||
blt cr5,L(l_r)
|
blt cr5,L(l_r)
|
||||||
addi r3,r0,-1
|
addi r3,r0,-1
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcmp))
|
END (memcmp)
|
||||||
libc_hidden_builtin_def (memcmp)
|
libc_hidden_builtin_def (memcmp)
|
||||||
weak_alias (memcmp,bcmp)
|
weak_alias (memcmp,bcmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* memcpy
|
/* memcpy
|
||||||
|
|
||||||
@ -33,7 +31,7 @@
|
|||||||
If 32 or more bytes to copy we use 32 byte copy loop.
|
If 32 or more bytes to copy we use 32 byte copy loop.
|
||||||
Finaly we copy 0-31 extra bytes. */
|
Finaly we copy 0-31 extra bytes. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
/* Check if bytes to copy are greater than 256 and if
|
/* Check if bytes to copy are greater than 256 and if
|
||||||
source and destination are unaligned */
|
source and destination are unaligned */
|
||||||
cmpwi r5,0x0100
|
cmpwi r5,0x0100
|
||||||
@ -128,5 +126,5 @@ L(word4_count_loop_no_dcbt): /* Copy 32 bytes at a time */
|
|||||||
L(end_memcpy):
|
L(end_memcpy):
|
||||||
mr r3,r0
|
mr r3,r0
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* memset
|
/* memset
|
||||||
|
|
||||||
@ -37,7 +35,7 @@
|
|||||||
If 16 or more words to set we use 16 word copy loop.
|
If 16 or more words to set we use 16 word copy loop.
|
||||||
Finaly we set 0-15 extra bytes with string store. */
|
Finaly we set 0-15 extra bytes with string store. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memset), 5, 0)
|
EALIGN (memset, 5, 0)
|
||||||
rlwinm r11,r4,0,24,31
|
rlwinm r11,r4,0,24,31
|
||||||
rlwimi r11,r4,8,16,23
|
rlwimi r11,r4,8,16,23
|
||||||
rlwimi r11,r11,16,0,15
|
rlwimi r11,r11,16,0,15
|
||||||
@ -150,5 +148,5 @@ L(postword2_count_loop):
|
|||||||
mtxer r7
|
mtxer r7
|
||||||
stswx r8,0,r3
|
stswx r8,0,r3
|
||||||
b L(end_memset)
|
b L(end_memset)
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* strcmp
|
/* strcmp
|
||||||
|
|
||||||
@ -34,7 +32,7 @@
|
|||||||
return src1 > src2, src1 < src2 or src1 = src2.
|
return src1 > src2, src1 < src2 or src1 = src2.
|
||||||
If src1 = src2 and no null, repeat. */
|
If src1 = src2 and no null, repeat. */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strcmp),5,0)
|
EALIGN (strcmp,5,0)
|
||||||
neg r7,r3
|
neg r7,r3
|
||||||
clrlwi r7,r7,20
|
clrlwi r7,r7,20
|
||||||
neg r8,r4
|
neg r8,r4
|
||||||
@ -132,5 +130,5 @@ L(byte_loop):
|
|||||||
cmpwi r5,0
|
cmpwi r5,0
|
||||||
beq L(end_strcmp)
|
beq L(end_strcmp)
|
||||||
b L(byte_loop)
|
b L(byte_loop)
|
||||||
END (BP_SYM (strcmp))
|
END (strcmp)
|
||||||
libc_hidden_builtin_def (strcmp)
|
libc_hidden_builtin_def (strcmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* strcpy
|
/* strcpy
|
||||||
|
|
||||||
@ -33,7 +31,7 @@
|
|||||||
where in the last 8 bytes it is. Copy the appropriate bytes of the last
|
where in the last 8 bytes it is. Copy the appropriate bytes of the last
|
||||||
8 according to the null position. */
|
8 according to the null position. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (strcpy), 5, 0)
|
EALIGN (strcpy, 5, 0)
|
||||||
neg r7,r4
|
neg r7,r4
|
||||||
subi r4,r4,1
|
subi r4,r4,1
|
||||||
clrlwi. r8,r7,29
|
clrlwi. r8,r7,29
|
||||||
@ -105,5 +103,5 @@ L(last_bytes_copy_loop2):
|
|||||||
|
|
||||||
L(end_strcpy):
|
L(end_strcpy):
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strcpy))
|
END (strcpy)
|
||||||
libc_hidden_builtin_def (strcpy)
|
libc_hidden_builtin_def (strcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* strlen
|
/* strlen
|
||||||
|
|
||||||
@ -31,7 +29,7 @@
|
|||||||
the count and return the count value. We need to subtract one because
|
the count and return the count value. We need to subtract one because
|
||||||
we don't count the null character as a byte. */
|
we don't count the null character as a byte. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (strlen),5,0)
|
EALIGN (strlen,5,0)
|
||||||
neg r7,r3
|
neg r7,r3
|
||||||
clrlwi. r8,r7,29
|
clrlwi. r8,r7,29
|
||||||
addi r4,0,0
|
addi r4,0,0
|
||||||
@ -73,5 +71,5 @@ L(byte_count_loop):
|
|||||||
L(end_strlen):
|
L(end_strlen):
|
||||||
addi r3,r4,-1
|
addi r3,r4,-1
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strlen))
|
END (strlen)
|
||||||
libc_hidden_builtin_def (strlen)
|
libc_hidden_builtin_def (strlen)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* strncmp
|
/* strncmp
|
||||||
|
|
||||||
@ -39,7 +37,7 @@
|
|||||||
return src1 > src2, src1 < src2 or src1 = src2.
|
return src1 > src2, src1 < src2 or src1 = src2.
|
||||||
If src1 = src2 and no null, repeat. */
|
If src1 = src2 and no null, repeat. */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strncmp),5,0)
|
EALIGN (strncmp,5,0)
|
||||||
neg r7,r3
|
neg r7,r3
|
||||||
clrlwi r7,r7,20
|
clrlwi r7,r7,20
|
||||||
neg r8,r4
|
neg r8,r4
|
||||||
@ -126,5 +124,5 @@ L(end_strncmp):
|
|||||||
L(st1):
|
L(st1):
|
||||||
mfcr r3
|
mfcr r3
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strncmp))
|
END (strncmp)
|
||||||
libc_hidden_builtin_def (strncmp)
|
libc_hidden_builtin_def (strncmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* memset
|
/* memset
|
||||||
|
|
||||||
@ -37,7 +35,7 @@
|
|||||||
If 16 or more words to set we use 16 word copy loop.
|
If 16 or more words to set we use 16 word copy loop.
|
||||||
Finaly we set 0-15 extra bytes with string store. */
|
Finaly we set 0-15 extra bytes with string store. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memset), 5, 0)
|
EALIGN (memset, 5, 0)
|
||||||
rlwinm r11,r4,0,24,31
|
rlwinm r11,r4,0,24,31
|
||||||
rlwimi r11,r4,8,16,23
|
rlwimi r11,r4,8,16,23
|
||||||
rlwimi r11,r11,16,0,15
|
rlwimi r11,r11,16,0,15
|
||||||
@ -150,5 +148,5 @@ L(postword2_count_loop):
|
|||||||
mtxer r7
|
mtxer r7
|
||||||
stswx r8,0,r3
|
stswx r8,0,r3
|
||||||
b L(end_memset)
|
b L(end_memset)
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -23,11 +23,8 @@
|
|||||||
#else
|
#else
|
||||||
# include <jmpbuf-offsets.h>
|
# include <jmpbuf-offsets.h>
|
||||||
#endif
|
#endif
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
ENTRY (BP_SYM (__longjmp))
|
ENTRY (__longjmp)
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
|
||||||
|
|
||||||
#if defined PTR_DEMANGLE || defined CHECK_SP
|
#if defined PTR_DEMANGLE || defined CHECK_SP
|
||||||
lwz r24,(JB_GPR1*4)(r3)
|
lwz r24,(JB_GPR1*4)(r3)
|
||||||
@ -71,4 +68,4 @@ ENTRY (BP_SYM (__longjmp))
|
|||||||
lwz r31,((JB_GPRS+17)*4)(r3)
|
lwz r31,((JB_GPRS+17)*4)(r3)
|
||||||
mr r3,r4
|
mr r3,r4
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__longjmp))
|
END (__longjmp)
|
||||||
|
@ -18,14 +18,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
#define PREFETCH_AHEAD 4 /* no cache lines SRC prefetching ahead */
|
#define PREFETCH_AHEAD 4 /* no cache lines SRC prefetching ahead */
|
||||||
#define ZERO_AHEAD 2 /* no cache lines DST zeroing ahead */
|
#define ZERO_AHEAD 2 /* no cache lines DST zeroing ahead */
|
||||||
|
|
||||||
.machine a2
|
.machine a2
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
dcbt 0,r4 /* Prefetch ONE SRC cacheline */
|
dcbt 0,r4 /* Prefetch ONE SRC cacheline */
|
||||||
@ -525,5 +523,5 @@ L(endloop2_128):
|
|||||||
b L(lessthancacheline)
|
b L(lessthancacheline)
|
||||||
|
|
||||||
|
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_add_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
|
/* mp_limb_t mpn_add_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
|
||||||
mp_size_t size)
|
mp_size_t size)
|
||||||
@ -28,14 +26,8 @@
|
|||||||
possible 2-unrolled inner loop will not be. Also, watch out for the
|
possible 2-unrolled inner loop will not be. Also, watch out for the
|
||||||
alignment... */
|
alignment... */
|
||||||
|
|
||||||
EALIGN (BP_SYM (__mpn_add_n), 3, 0)
|
EALIGN (__mpn_add_n, 3, 0)
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r6,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r5, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
/* Set up for loop below. */
|
/* Set up for loop below. */
|
||||||
mtcrf 0x01,r6
|
mtcrf 0x01,r6
|
||||||
srwi. r7,r6,1
|
srwi. r7,r6,1
|
||||||
@ -73,4 +65,4 @@ L(0): lwz r9,4(r4)
|
|||||||
/* Return the carry. */
|
/* Return the carry. */
|
||||||
L(1): addze r3,r10
|
L(1): addze r3,r10
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_add_n))
|
END (__mpn_add_n)
|
||||||
|
@ -17,18 +17,11 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_addmul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
/* mp_limb_t mpn_addmul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
||||||
mp_size_t s1_size, mp_limb_t s2_limb)
|
mp_size_t s1_size, mp_limb_t s2_limb)
|
||||||
Calculate res+s1*s2 and put result back in res; return carry. */
|
Calculate res+s1*s2 and put result back in res; return carry. */
|
||||||
ENTRY (BP_SYM (__mpn_addmul_1))
|
ENTRY (__mpn_addmul_1)
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r5,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
mtctr r5
|
mtctr r5
|
||||||
|
|
||||||
lwz r0,0(r4)
|
lwz r0,0(r4)
|
||||||
@ -52,4 +45,4 @@ L(0): lwzu r0,4(r4)
|
|||||||
L(1): stw r8,4(r3)
|
L(1): stw r8,4(r3)
|
||||||
addze r3,r10
|
addze r3,r10
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_addmul_1))
|
END (__mpn_addmul_1)
|
||||||
|
@ -1,112 +0,0 @@
|
|||||||
/* Bounded-pointer definitions for PowerPC assembler.
|
|
||||||
Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
||||||
Contributed by Greg McGary <greg@mcgary.org>
|
|
||||||
This file is part of the GNU C Library. Its master source is NOT part of
|
|
||||||
the C library, however. The master source lives in the GNU MP Library.
|
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with the GNU C Library; if not, see
|
|
||||||
<http://www.gnu.org/licenses/>. */
|
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
|
|
||||||
/* Byte offsets of BP components. */
|
|
||||||
# define oVALUE 0
|
|
||||||
# define oLOW 4
|
|
||||||
# define oHIGH 8
|
|
||||||
|
|
||||||
/* Don't check bounds, just convert the BP register to its simple
|
|
||||||
pointer value. */
|
|
||||||
|
|
||||||
# define DISCARD_BOUNDS(rBP) \
|
|
||||||
lwz rBP, oVALUE(rBP)
|
|
||||||
|
|
||||||
/* Check low bound, with the side effect that the BP register is converted
|
|
||||||
its simple pointer value. Move the high bound into a register for
|
|
||||||
later use. */
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_LOW(rBP, rLOW, rHIGH) \
|
|
||||||
lwz rHIGH, oHIGH(rBP); \
|
|
||||||
lwz rLOW, oLOW(rBP); \
|
|
||||||
lwz rBP, oVALUE(rBP); \
|
|
||||||
twllt rBP, rLOW
|
|
||||||
|
|
||||||
/* Check the high bound, which is in a register, using the given
|
|
||||||
conditional trap instruction. */
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_HIGH(rVALUE, rHIGH, TWLcc) \
|
|
||||||
TWLcc rVALUE, rHIGH
|
|
||||||
|
|
||||||
/* Check the high bound, which is stored at the return-value's high
|
|
||||||
bound slot, using the given conditional trap instruction. */
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_HIGH_RTN(rVALUE, rHIGH, TWLcc) \
|
|
||||||
lwz rHIGH, oHIGH(rRTN); \
|
|
||||||
TWLcc rVALUE, rHIGH
|
|
||||||
|
|
||||||
/* Check both bounds, with the side effect that the BP register is
|
|
||||||
converted to its simple pointer value. */
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_BOTH(rBP, rLOW, rHIGH) \
|
|
||||||
CHECK_BOUNDS_LOW(rBP, rLOW, rHIGH); \
|
|
||||||
twlge rBP, rHIGH
|
|
||||||
|
|
||||||
/* Check bounds on a memory region of given length, with the side
|
|
||||||
effect that the BP register is converted to its simple pointer
|
|
||||||
value. */
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_BOTH_WIDE(rBP, rLOW, rHIGH, rLENGTH) \
|
|
||||||
CHECK_BOUNDS_LOW (rBP, rLOW, rHIGH); \
|
|
||||||
sub rHIGH, rHIGH, rLENGTH; \
|
|
||||||
twlgt rBP, rHIGH
|
|
||||||
|
|
||||||
# define CHECK_BOUNDS_BOTH_WIDE_LIT(rBP, rLOW, rHIGH, LENGTH) \
|
|
||||||
CHECK_BOUNDS_LOW (rBP, rLOW, rHIGH); \
|
|
||||||
subi rHIGH, rHIGH, LENGTH; \
|
|
||||||
twlgt rBP, rHIGH
|
|
||||||
|
|
||||||
/* Store a pointer value register into the return-value's pointer
|
|
||||||
value slot. */
|
|
||||||
|
|
||||||
# define STORE_RETURN_VALUE(rVALUE) \
|
|
||||||
stw rVALUE, oVALUE(rRTN)
|
|
||||||
|
|
||||||
/* Store a low and high bounds into the return-value's pointer bounds
|
|
||||||
slots. */
|
|
||||||
|
|
||||||
# define STORE_RETURN_BOUNDS(rLOW, rHIGH) \
|
|
||||||
stw rLOW, oLOW(rRTN); \
|
|
||||||
stw rHIGH, oHIGH(rRTN)
|
|
||||||
|
|
||||||
/* Stuff zero value/low/high into the BP addressed by rRTN. */
|
|
||||||
|
|
||||||
# define RETURN_NULL_BOUNDED_POINTER \
|
|
||||||
li r4, 0; \
|
|
||||||
STORE_RETURN_VALUE (r4); \
|
|
||||||
STORE_RETURN_BOUNDS (r4, r4)
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
# define DISCARD_BOUNDS(rBP)
|
|
||||||
# define CHECK_BOUNDS_LOW(rBP, rLOW, rHIGH)
|
|
||||||
# define CHECK_BOUNDS_HIGH(rVALUE, rHIGH, TWLcc)
|
|
||||||
# define CHECK_BOUNDS_HIGH_RTN(rVALUE, rHIGH, TWLcc)
|
|
||||||
# define CHECK_BOUNDS_BOTH(rBP, rLOW, rHIGH)
|
|
||||||
# define CHECK_BOUNDS_BOTH_WIDE(rBP, rLOW, rHIGH, rLENGTH)
|
|
||||||
# define CHECK_BOUNDS_BOTH_WIDE_LIT(rBP, rLOW, rHIGH, LENGTH)
|
|
||||||
# define STORE_RETURN_VALUE(rVALUE)
|
|
||||||
# define STORE_RETURN_BOUNDS(rLOW, rHIGH)
|
|
||||||
|
|
||||||
# define RETURN_NULL_BOUNDED_POINTER li rRTN, 0
|
|
||||||
|
|
||||||
#endif
|
|
@ -18,14 +18,13 @@
|
|||||||
#include <shlib-compat.h>
|
#include <shlib-compat.h>
|
||||||
#include <libc-symbols.h>
|
#include <libc-symbols.h>
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
|
|
||||||
#if defined NOT_IN_libc
|
#if defined NOT_IN_libc
|
||||||
/* Build a non-versioned object for rtld-*. */
|
/* Build a non-versioned object for rtld-*. */
|
||||||
ENTRY (BP_SYM (_setjmp))
|
ENTRY (_setjmp)
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b BP_SYM (__sigsetjmp@local)
|
b __sigsetjmp@local
|
||||||
END (BP_SYM (_setjmp))
|
END (_setjmp)
|
||||||
libc_hidden_def (_setjmp)
|
libc_hidden_def (_setjmp)
|
||||||
#else
|
#else
|
||||||
/* Build a versioned object for libc. */
|
/* Build a versioned object for libc. */
|
||||||
@ -33,10 +32,10 @@ libc_hidden_def (_setjmp)
|
|||||||
# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
|
# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
|
||||||
symbol_version (__novmx_setjmp,_setjmp,GLIBC_2.0);
|
symbol_version (__novmx_setjmp,_setjmp,GLIBC_2.0);
|
||||||
|
|
||||||
ENTRY (BP_SYM (__novmx_setjmp))
|
ENTRY (__novmx_setjmp)
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b BP_SYM (__novmx__sigsetjmp@local)
|
b __novmx__sigsetjmp@local
|
||||||
END (BP_SYM (__novmx_setjmp))
|
END (__novmx_setjmp)
|
||||||
libc_hidden_def (__novmx_setjmp)
|
libc_hidden_def (__novmx_setjmp)
|
||||||
# endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
|
# endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
|
||||||
|
|
||||||
@ -44,14 +43,14 @@ default_symbol_version (__vmx_setjmp,_setjmp,GLIBC_2.3.4)
|
|||||||
/* __GI__setjmp prototype is needed for ntpl i.e. _setjmp is defined
|
/* __GI__setjmp prototype is needed for ntpl i.e. _setjmp is defined
|
||||||
as a libc_hidden_proto & is used in sysdeps/generic/libc-start.c
|
as a libc_hidden_proto & is used in sysdeps/generic/libc-start.c
|
||||||
if HAVE_CLEANUP_JMP_BUF is defined */
|
if HAVE_CLEANUP_JMP_BUF is defined */
|
||||||
ENTRY (BP_SYM (__GI__setjmp))
|
ENTRY (__GI__setjmp)
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b BP_SYM (__vmx__sigsetjmp@local)
|
b __vmx__sigsetjmp@local
|
||||||
END (BP_SYM (__GI__setjmp))
|
END (__GI__setjmp)
|
||||||
|
|
||||||
ENTRY (BP_SYM (__vmx_setjmp))
|
ENTRY (__vmx_setjmp)
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b BP_SYM (__vmx__sigsetjmp@local)
|
b __vmx__sigsetjmp@local
|
||||||
END (BP_SYM (__vmx_setjmp))
|
END (__vmx_setjmp)
|
||||||
libc_hidden_def (__vmx_setjmp)
|
libc_hidden_def (__vmx_setjmp)
|
||||||
#endif /* !NOT_IN_libc */
|
#endif /* !NOT_IN_libc */
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include <shlib-compat.h>
|
#include <shlib-compat.h>
|
||||||
#include <libc-symbols.h>
|
#include <libc-symbols.h>
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
|
|
||||||
#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
|
#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
|
||||||
|
|
||||||
|
@ -17,20 +17,11 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
|
|
||||||
ENTRY (BP_SYM (__bzero))
|
ENTRY (__bzero)
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
mr r6,r4
|
|
||||||
li r5,0
|
|
||||||
mr r4,r3
|
|
||||||
/* Tell memset that we don't want a return value. */
|
|
||||||
li r3,0
|
|
||||||
#else
|
|
||||||
mr r5,r4
|
mr r5,r4
|
||||||
li r4,0
|
li r4,0
|
||||||
#endif
|
b memset@local
|
||||||
b BP_SYM (memset)@local
|
END (__bzero)
|
||||||
END (BP_SYM (__bzero))
|
weak_alias (__bzero, bzero)
|
||||||
weak_alias (BP_SYM (__bzero), BP_SYM (bzero))
|
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
#define PREFETCH_AHEAD 6 /* no cache lines SRC prefetching ahead */
|
#define PREFETCH_AHEAD 6 /* no cache lines SRC prefetching ahead */
|
||||||
#define ZERO_AHEAD 4 /* no cache lines DST zeroing ahead */
|
#define ZERO_AHEAD 4 /* no cache lines DST zeroing ahead */
|
||||||
@ -41,7 +39,7 @@
|
|||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
|
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
dcbt 0,r4 /* Prefetch ONE SRC cacheline */
|
dcbt 0,r4 /* Prefetch ONE SRC cacheline */
|
||||||
@ -240,5 +238,5 @@ EALIGN (BP_SYM (memcpy), 5, 0)
|
|||||||
stb r0,0(r6)
|
stb r0,0(r6)
|
||||||
1: blr
|
1: blr
|
||||||
|
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -23,12 +23,9 @@
|
|||||||
#else
|
#else
|
||||||
# include <jmpbuf-offsets.h>
|
# include <jmpbuf-offsets.h>
|
||||||
#endif
|
#endif
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY (BP_SYM (__longjmp))
|
ENTRY (__longjmp)
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
|
||||||
#ifndef __NO_VMX__
|
#ifndef __NO_VMX__
|
||||||
# ifdef PIC
|
# ifdef PIC
|
||||||
mflr r6
|
mflr r6
|
||||||
@ -173,4 +170,4 @@ L(no_vmx):
|
|||||||
lfd fp31,((JB_FPRS+17*2)*4)(r3)
|
lfd fp31,((JB_FPRS+17*2)*4)(r3)
|
||||||
mr r3,r4
|
mr r3,r4
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__longjmp))
|
END (__longjmp)
|
||||||
|
@ -23,12 +23,9 @@
|
|||||||
#else
|
#else
|
||||||
# include <jmpbuf-offsets.h>
|
# include <jmpbuf-offsets.h>
|
||||||
#endif
|
#endif
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY (BP_SYM (__sigsetjmp))
|
ENTRY (__sigsetjmp)
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
|
||||||
|
|
||||||
#ifdef PTR_MANGLE
|
#ifdef PTR_MANGLE
|
||||||
mr r5,r1
|
mr r5,r1
|
||||||
@ -179,5 +176,5 @@ L(aligned_save_vmx):
|
|||||||
stvx 31,0,r6
|
stvx 31,0,r6
|
||||||
L(no_vmx):
|
L(no_vmx):
|
||||||
#endif
|
#endif
|
||||||
b BP_SYM (__sigjmp_save@local)
|
b __sigjmp_save@local
|
||||||
END (BP_SYM (__sigsetjmp))
|
END (__sigsetjmp)
|
||||||
|
@ -17,19 +17,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_lshift (mp_ptr wp, mp_srcptr up, mp_size_t usize,
|
/* mp_limb_t mpn_lshift (mp_ptr wp, mp_srcptr up, mp_size_t usize,
|
||||||
unsigned int cnt) */
|
unsigned int cnt) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (__mpn_lshift), 3, 0)
|
EALIGN (__mpn_lshift, 3, 0)
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r5,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
mtctr r5 # copy size into CTR
|
mtctr r5 # copy size into CTR
|
||||||
cmplwi cr0,r5,16 # is size < 16
|
cmplwi cr0,r5,16 # is size < 16
|
||||||
slwi r0,r5,2
|
slwi r0,r5,2
|
||||||
@ -129,4 +122,4 @@ L(n): lwzu r10,-4(r4); \
|
|||||||
DO_LSHIFT(30)
|
DO_LSHIFT(30)
|
||||||
DO_LSHIFT(31)
|
DO_LSHIFT(31)
|
||||||
|
|
||||||
END (BP_SYM (__mpn_lshift))
|
END (__mpn_lshift)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
||||||
Returns 's'.
|
Returns 's'.
|
||||||
@ -29,21 +27,14 @@
|
|||||||
takes advantage of the dcbz instruction. */
|
takes advantage of the dcbz instruction. */
|
||||||
|
|
||||||
.section ".text"
|
.section ".text"
|
||||||
EALIGN (BP_SYM (memset), 5, 1)
|
EALIGN (memset, 5, 1)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3 /* initial value of 1st argument */
|
#define rRTN r3 /* initial value of 1st argument */
|
||||||
#if __BOUNDED_POINTERS__
|
#define rMEMP0 r3 /* original value of 1st arg */
|
||||||
# define rMEMP0 r4 /* original value of 1st arg */
|
#define rCHR r4 /* char to set in each byte */
|
||||||
# define rCHR r5 /* char to set in each byte */
|
#define rLEN r5 /* length of region to set */
|
||||||
# define rLEN r6 /* length of region to set */
|
#define rMEMP r6 /* address at which we are storing */
|
||||||
# define rMEMP r10 /* address at which we are storing */
|
|
||||||
#else
|
|
||||||
# define rMEMP0 r3 /* original value of 1st arg */
|
|
||||||
# define rCHR r4 /* char to set in each byte */
|
|
||||||
# define rLEN r5 /* length of region to set */
|
|
||||||
# define rMEMP r6 /* address at which we are storing */
|
|
||||||
#endif
|
|
||||||
#define rALIGN r7 /* number of bytes we are setting now (when aligning) */
|
#define rALIGN r7 /* number of bytes we are setting now (when aligning) */
|
||||||
#define rMEMP2 r8
|
#define rMEMP2 r8
|
||||||
|
|
||||||
@ -55,15 +46,6 @@ EALIGN (BP_SYM (memset), 5, 1)
|
|||||||
#define rCLS r8 /* Cache line size obtained from static. */
|
#define rCLS r8 /* Cache line size obtained from static. */
|
||||||
#define rCLM r9 /* Cache line size mask to check for cache alignment. */
|
#define rCLM r9 /* Cache line size mask to check for cache alignment. */
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
cmplwi cr1, rRTN, 0
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (rMEMP0, rTMP, rTMP2, rLEN)
|
|
||||||
beq cr1, L(b0)
|
|
||||||
STORE_RETURN_VALUE (rMEMP0)
|
|
||||||
STORE_RETURN_BOUNDS (rTMP, rTMP2)
|
|
||||||
L(b0):
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* take care of case for size <= 4 */
|
/* take care of case for size <= 4 */
|
||||||
cmplwi cr1, rLEN, 4
|
cmplwi cr1, rLEN, 4
|
||||||
andi. rALIGN, rMEMP0, 3
|
andi. rALIGN, rMEMP0, 3
|
||||||
@ -321,5 +303,5 @@ L(handletail32):
|
|||||||
clrrwi. rALIGN, rLEN, 5
|
clrrwi. rALIGN, rLEN, 5
|
||||||
b L(nondcbz)
|
b L(nondcbz)
|
||||||
|
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -17,19 +17,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_mul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
/* mp_limb_t mpn_mul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
||||||
mp_size_t s1_size, mp_limb_t s2_limb)
|
mp_size_t s1_size, mp_limb_t s2_limb)
|
||||||
Calculate s1*s2 and put result in res_ptr; return carry. */
|
Calculate s1*s2 and put result in res_ptr; return carry. */
|
||||||
|
|
||||||
ENTRY (BP_SYM (__mpn_mul_1))
|
ENTRY (__mpn_mul_1)
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r5,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
mtctr r5
|
mtctr r5
|
||||||
|
|
||||||
lwz r0,0(r4)
|
lwz r0,0(r4)
|
||||||
@ -49,4 +42,4 @@ L(0): lwzu r0,4(r4)
|
|||||||
L(1): stw r7,4(r3)
|
L(1): stw r7,4(r3)
|
||||||
addze r3,r10
|
addze r3,r10
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_mul_1))
|
END (__mpn_mul_1)
|
||||||
|
@ -17,13 +17,11 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] memcmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
/* int [r3] memcmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
||||||
|
|
||||||
.machine power4
|
.machine power4
|
||||||
EALIGN (BP_SYM(memcmp), 4, 0)
|
EALIGN (memcmp, 4, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
@ -979,7 +977,7 @@ L(dureturn25):
|
|||||||
lwz r24,20(r1)
|
lwz r24,20(r1)
|
||||||
lwz 1,0(1)
|
lwz 1,0(1)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcmp))
|
END (memcmp)
|
||||||
|
|
||||||
libc_hidden_builtin_def (memcmp)
|
libc_hidden_builtin_def (memcmp)
|
||||||
weak_alias (memcmp, bcmp)
|
weak_alias (memcmp, bcmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
||||||
Returns 'dst'.
|
Returns 'dst'.
|
||||||
@ -34,7 +32,7 @@
|
|||||||
Each case has an optimized unrolled loop. */
|
Each case has an optimized unrolled loop. */
|
||||||
|
|
||||||
.machine power4
|
.machine power4
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
stwu 1,-32(1)
|
stwu 1,-32(1)
|
||||||
@ -420,6 +418,6 @@ EALIGN (BP_SYM (memcpy), 5, 0)
|
|||||||
lwz 31,24(1)
|
lwz 31,24(1)
|
||||||
addi 1,1,32
|
addi 1,1,32
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
|
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
||||||
Returns 's'.
|
Returns 's'.
|
||||||
@ -28,7 +26,7 @@
|
|||||||
to 0, to take advantage of the dcbz instruction. */
|
to 0, to take advantage of the dcbz instruction. */
|
||||||
|
|
||||||
.machine power4
|
.machine power4
|
||||||
EALIGN (BP_SYM (memset), 5, 0)
|
EALIGN (memset, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
@ -224,5 +222,5 @@ L(medium_28t):
|
|||||||
stw rCHR, -4(rMEMP)
|
stw rCHR, -4(rMEMP)
|
||||||
stw rCHR, -8(rMEMP)
|
stw rCHR, -8(rMEMP)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -17,14 +17,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strncmp), 4, 0)
|
EALIGN (strncmp, 4, 0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
@ -171,5 +169,5 @@ L(u4): sub rRTN, rWORD1, rWORD2
|
|||||||
L(ux):
|
L(ux):
|
||||||
li rRTN, 0
|
li rRTN, 0
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strncmp))
|
END (strncmp)
|
||||||
libc_hidden_builtin_def (strncmp)
|
libc_hidden_builtin_def (strncmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
||||||
Returns 'dst'.
|
Returns 'dst'.
|
||||||
@ -34,7 +32,7 @@
|
|||||||
Each case has an optimized unrolled loop. */
|
Each case has an optimized unrolled loop. */
|
||||||
|
|
||||||
.machine power6
|
.machine power6
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
stwu 1,-32(1)
|
stwu 1,-32(1)
|
||||||
@ -837,6 +835,6 @@ L(wdus_0):
|
|||||||
lwz 31,24(1)
|
lwz 31,24(1)
|
||||||
addi 1,1,32
|
addi 1,1,32
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
|
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
||||||
Returns 's'.
|
Returns 's'.
|
||||||
@ -28,7 +26,7 @@
|
|||||||
to 0, to take advantage of the dcbz instruction. */
|
to 0, to take advantage of the dcbz instruction. */
|
||||||
|
|
||||||
.machine power6
|
.machine power6
|
||||||
EALIGN (BP_SYM (memset), 7, 0)
|
EALIGN (memset, 7, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
@ -537,5 +535,5 @@ L(medium_28t):
|
|||||||
stw rCHR, -4(rMEMP)
|
stw rCHR, -4(rMEMP)
|
||||||
stw rCHR, -8(rMEMP)
|
stw rCHR, -8(rMEMP)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] memchr (char *s [r3], int byte [r4], int size [r5]) */
|
/* int [r3] memchr (char *s [r3], int byte [r4], int size [r5]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM (__memchr))
|
ENTRY (__memchr)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r8,r3,2
|
clrrwi r8,r3,2
|
||||||
@ -202,6 +200,6 @@ L(loop_small): /* loop_small has been unrolled. */
|
|||||||
li r3,0
|
li r3,0
|
||||||
blr
|
blr
|
||||||
|
|
||||||
END (BP_SYM (__memchr))
|
END (__memchr)
|
||||||
weak_alias (BP_SYM (__memchr), BP_SYM(memchr))
|
weak_alias (__memchr, memchr)
|
||||||
libc_hidden_builtin_def (memchr)
|
libc_hidden_builtin_def (memchr)
|
||||||
|
@ -17,15 +17,13 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] memcmp (const char *s1 [r3],
|
/* int [r3] memcmp (const char *s1 [r3],
|
||||||
const char *s2 [r4],
|
const char *s2 [r4],
|
||||||
size_t size [r5]) */
|
size_t size [r5]) */
|
||||||
|
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (BP_SYM(memcmp),4,0)
|
EALIGN (memcmp,4,0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
@ -982,6 +980,6 @@ L(dureturn25):
|
|||||||
lwz r24,20(r1)
|
lwz r24,20(r1)
|
||||||
lwz 1,0(1)
|
lwz 1,0(1)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (memcmp))
|
END (memcmp)
|
||||||
libc_hidden_builtin_def (memcmp)
|
libc_hidden_builtin_def (memcmp)
|
||||||
weak_alias (memcmp,bcmp)
|
weak_alias (memcmp,bcmp)
|
||||||
|
@ -18,14 +18,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
||||||
Returns 'dst'. */
|
Returns 'dst'. */
|
||||||
|
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (memcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
stwu 1,-32(1)
|
stwu 1,-32(1)
|
||||||
@ -522,5 +520,5 @@ L(end_unaligned_loop):
|
|||||||
addi 1,1,32
|
addi 1,1,32
|
||||||
blr
|
blr
|
||||||
|
|
||||||
END (BP_SYM (memcpy))
|
END (memcpy)
|
||||||
libc_hidden_builtin_def (memcpy)
|
libc_hidden_builtin_def (memcpy)
|
||||||
|
@ -18,14 +18,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] __mempcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
/* __ptr_t [r3] __mempcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
|
||||||
Returns 'dst' + 'len'. */
|
Returns 'dst' + 'len'. */
|
||||||
|
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (BP_SYM (__mempcpy), 5, 0)
|
EALIGN (__mempcpy, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
stwu 1,-32(1)
|
stwu 1,-32(1)
|
||||||
@ -464,7 +462,7 @@ L(end_unaligned_loop):
|
|||||||
addi 1,1,32
|
addi 1,1,32
|
||||||
blr
|
blr
|
||||||
|
|
||||||
END (BP_SYM (__mempcpy))
|
END (__mempcpy)
|
||||||
libc_hidden_def (BP_SYM (__mempcpy))
|
libc_hidden_def (__mempcpy)
|
||||||
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
|
weak_alias (__mempcpy, mempcpy)
|
||||||
libc_hidden_builtin_def (mempcpy)
|
libc_hidden_builtin_def (mempcpy)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] memrchr (char *s [r3], int byte [r4], int size [r5]) */
|
/* int [r3] memrchr (char *s [r3], int byte [r4], int size [r5]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM (__memrchr))
|
ENTRY (__memrchr)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
mr r7,r3
|
mr r7,r3
|
||||||
@ -172,6 +170,6 @@ L(loop_small):
|
|||||||
ble L(null)
|
ble L(null)
|
||||||
b L(loop_small)
|
b L(loop_small)
|
||||||
|
|
||||||
END (BP_SYM (__memrchr))
|
END (__memrchr)
|
||||||
weak_alias (BP_SYM (__memrchr), BP_SYM(memrchr))
|
weak_alias (__memrchr, memrchr)
|
||||||
libc_hidden_builtin_def (memrchr)
|
libc_hidden_builtin_def (memrchr)
|
||||||
|
@ -18,14 +18,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
||||||
Returns 's'. */
|
Returns 's'. */
|
||||||
|
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (BP_SYM (memset), 5, 0)
|
EALIGN (memset, 5, 0)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
@ -429,5 +427,5 @@ L(small):
|
|||||||
stw 4,4(10)
|
stw 4,4(10)
|
||||||
blr
|
blr
|
||||||
|
|
||||||
END (BP_SYM (memset))
|
END (memset)
|
||||||
libc_hidden_builtin_def (memset)
|
libc_hidden_builtin_def (memset)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] rawmemchr (void *s [r3], int c [r4]) */
|
/* int [r3] rawmemchr (void *s [r3], int c [r4]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM(__rawmemchr))
|
ENTRY (__rawmemchr)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
||||||
@ -96,6 +94,6 @@ L(done):
|
|||||||
srwi r0,r0,3 /* Convert leading zeroes to bytes. */
|
srwi r0,r0,3 /* Convert leading zeroes to bytes. */
|
||||||
add r3,r8,r0 /* Return address of the matching char. */
|
add r3,r8,r0 /* Return address of the matching char. */
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__rawmemchr))
|
END (__rawmemchr)
|
||||||
weak_alias (__rawmemchr,rawmemchr)
|
weak_alias (__rawmemchr,rawmemchr)
|
||||||
libc_hidden_builtin_def (__rawmemchr)
|
libc_hidden_builtin_def (__rawmemchr)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
#include <locale-defines.h>
|
#include <locale-defines.h>
|
||||||
|
|
||||||
/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] )
|
/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] )
|
||||||
@ -33,7 +31,7 @@
|
|||||||
# define STRCMP strcasecmp
|
# define STRCMP strcasecmp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ENTRY (BP_SYM (__STRCMP))
|
ENTRY (__STRCMP)
|
||||||
|
|
||||||
#define rRTN r3 /* Return value */
|
#define rRTN r3 /* Return value */
|
||||||
#define rSTR1 r5 /* 1st string */
|
#define rSTR1 r5 /* 1st string */
|
||||||
@ -125,7 +123,7 @@ L(loop):
|
|||||||
bnelr
|
bnelr
|
||||||
bne cr7,L(loop)
|
bne cr7,L(loop)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__STRCMP))
|
END (__STRCMP)
|
||||||
|
|
||||||
weak_alias (BP_SYM (__STRCMP), BP_SYM (STRCMP))
|
weak_alias (__STRCMP, STRCMP)
|
||||||
libc_hidden_builtin_def (__STRCMP)
|
libc_hidden_builtin_def (__STRCMP)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] strchr (char *s [r3], int c [r4]) */
|
/* int [r3] strchr (char *s [r3], int c [r4]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM(strchr))
|
ENTRY (strchr)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
||||||
@ -197,6 +195,6 @@ L(done_null):
|
|||||||
srwi r0,r0,3 /* Convert leading zeros to bytes. */
|
srwi r0,r0,3 /* Convert leading zeros to bytes. */
|
||||||
add r3,r8,r0 /* Return address of the matching null byte. */
|
add r3,r8,r0 /* Return address of the matching null byte. */
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strchr))
|
END (strchr)
|
||||||
weak_alias (BP_SYM (strchr), BP_SYM (index))
|
weak_alias (strchr, index)
|
||||||
libc_hidden_builtin_def (strchr)
|
libc_hidden_builtin_def (strchr)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] strchrnul (char *s [r3], int c [r4]) */
|
/* int [r3] strchrnul (char *s [r3], int c [r4]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM(__strchrnul))
|
ENTRY (__strchrnul)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
||||||
@ -111,6 +109,6 @@ L(done):
|
|||||||
srwi r0,r0,3 /* Convert leading zeros to bytes. */
|
srwi r0,r0,3 /* Convert leading zeros to bytes. */
|
||||||
add r3,r8,r0 /* Return address of matching c/null byte. */
|
add r3,r8,r0 /* Return address of matching c/null byte. */
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__strchrnul))
|
END (__strchrnul)
|
||||||
weak_alias (__strchrnul,strchrnul)
|
weak_alias (__strchrnul,strchrnul)
|
||||||
libc_hidden_builtin_def (__strchrnul)
|
libc_hidden_builtin_def (__strchrnul)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] strlen (char *s [r3]) */
|
/* int [r3] strlen (char *s [r3]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM (strlen))
|
ENTRY (strlen)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r4,r3,2 /* Align the address to word boundary. */
|
clrrwi r4,r3,2 /* Align the address to word boundary. */
|
||||||
@ -93,5 +91,5 @@ L(done):
|
|||||||
srwi r0,r0,3 /* Convert leading zeroes to bytes. */
|
srwi r0,r0,3 /* Convert leading zeroes to bytes. */
|
||||||
add r3,r5,r0 /* Compute final length. */
|
add r3,r5,r0 /* Compute final length. */
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strlen))
|
END (strlen)
|
||||||
libc_hidden_builtin_def (strlen)
|
libc_hidden_builtin_def (strlen)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
@ -26,7 +24,7 @@
|
|||||||
const char *s2 [r4],
|
const char *s2 [r4],
|
||||||
size_t size [r5]) */
|
size_t size [r5]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strncmp),5,0)
|
EALIGN (strncmp,5,0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
@ -175,5 +173,5 @@ L(u4): sub rRTN,rWORD1,rWORD2
|
|||||||
L(ux):
|
L(ux):
|
||||||
li rRTN,0
|
li rRTN,0
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strncmp))
|
END (strncmp)
|
||||||
libc_hidden_builtin_def (strncmp)
|
libc_hidden_builtin_def (strncmp)
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* int [r3] strnlen (char *s [r3], int size [r4]) */
|
/* int [r3] strnlen (char *s [r3], int size [r4]) */
|
||||||
.machine power7
|
.machine power7
|
||||||
ENTRY (BP_SYM (__strnlen))
|
ENTRY (__strnlen)
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
dcbt 0,r3
|
dcbt 0,r3
|
||||||
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
clrrwi r8,r3,2 /* Align the address to word boundary. */
|
||||||
@ -166,6 +164,6 @@ L(loop_small):
|
|||||||
cmplw r9,r7
|
cmplw r9,r7
|
||||||
bge L(end_max)
|
bge L(end_max)
|
||||||
b L(loop_small)
|
b L(loop_small)
|
||||||
END (BP_SYM (__strnlen))
|
END (__strnlen)
|
||||||
weak_alias (BP_SYM (__strnlen), BP_SYM(strnlen))
|
weak_alias (__strnlen, strnlen)
|
||||||
libc_hidden_builtin_def (strnlen)
|
libc_hidden_builtin_def (strnlen)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* INPUT PARAMETERS
|
/* INPUT PARAMETERS
|
||||||
res_ptr r3
|
res_ptr r3
|
||||||
@ -26,12 +24,7 @@
|
|||||||
size r5
|
size r5
|
||||||
cnt r6 */
|
cnt r6 */
|
||||||
|
|
||||||
ENTRY (BP_SYM (__mpn_rshift))
|
ENTRY (__mpn_rshift)
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r5,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
mtctr r5 # copy size into CTR
|
mtctr r5 # copy size into CTR
|
||||||
addi r7,r3,-4 # move adjusted res_ptr to free return reg
|
addi r7,r3,-4 # move adjusted res_ptr to free return reg
|
||||||
subfic r8,r6,32
|
subfic r8,r6,32
|
||||||
@ -59,4 +52,4 @@ L(1): srw r0,r11,r6
|
|||||||
L(2): srw r0,r10,r6
|
L(2): srw r0,r10,r6
|
||||||
stw r0,4(r7)
|
stw r0,4(r7)
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_rshift))
|
END (__mpn_rshift)
|
||||||
|
@ -23,12 +23,9 @@
|
|||||||
#else
|
#else
|
||||||
# include <jmpbuf-offsets.h>
|
# include <jmpbuf-offsets.h>
|
||||||
#endif
|
#endif
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
|
|
||||||
ENTRY (BP_SYM (__sigsetjmp))
|
ENTRY (__sigsetjmp)
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
|
||||||
|
|
||||||
#ifdef PTR_MANGLE
|
#ifdef PTR_MANGLE
|
||||||
mr r5,r1
|
mr r5,r1
|
||||||
@ -67,6 +64,6 @@ ENTRY (BP_SYM (__sigsetjmp))
|
|||||||
li r3,0
|
li r3,0
|
||||||
blr
|
blr
|
||||||
#else
|
#else
|
||||||
b BP_SYM (__sigjmp_save@local)
|
b __sigjmp_save@local
|
||||||
#endif
|
#endif
|
||||||
END (BP_SYM (__sigsetjmp))
|
END (__sigsetjmp)
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include "bp-sym.h"
|
|
||||||
|
|
||||||
/* These are the various addresses we require. */
|
/* These are the various addresses we require. */
|
||||||
#ifdef PIC
|
#ifdef PIC
|
||||||
@ -45,7 +44,7 @@
|
|||||||
.align 2
|
.align 2
|
||||||
L(start_addresses):
|
L(start_addresses):
|
||||||
.long _SDA_BASE_
|
.long _SDA_BASE_
|
||||||
.long BP_SYM (main)
|
.long main
|
||||||
.long __libc_csu_init
|
.long __libc_csu_init
|
||||||
.long __libc_csu_fini
|
.long __libc_csu_fini
|
||||||
ASM_SIZE_DIRECTIVE(L(start_addresses))
|
ASM_SIZE_DIRECTIVE(L(start_addresses))
|
||||||
@ -78,7 +77,7 @@ ENTRY(_start)
|
|||||||
lwzu r13,L(start_addresses)@l(r8)
|
lwzu r13,L(start_addresses)@l(r8)
|
||||||
#endif
|
#endif
|
||||||
/* and continue in libc-start, in glibc. */
|
/* and continue in libc-start, in glibc. */
|
||||||
b JUMPTARGET(BP_SYM (__libc_start_main))
|
b JUMPTARGET(__libc_start_main)
|
||||||
END(_start)
|
END(_start)
|
||||||
|
|
||||||
/* Define a symbol for the first piece of initialized data. */
|
/* Define a symbol for the first piece of initialized data. */
|
||||||
|
@ -17,35 +17,23 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
/* char * [r3] stpcpy (char *dest [r3], const char *src [r4]) */
|
/* char * [r3] stpcpy (char *dest [r3], const char *src [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (__stpcpy), 4, 0)
|
EALIGN (__stpcpy, 4, 0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
#if __BOUNDED_POINTERS__
|
#define rDEST r3 /* pointer to previous word in dest */
|
||||||
# define rDEST r4 /* pointer to previous word in dest */
|
#define rSRC r4 /* pointer to previous word in src */
|
||||||
# define rSRC r5 /* pointer to previous word in src */
|
|
||||||
# define rLOW r11
|
|
||||||
# define rHIGH r12
|
|
||||||
#else
|
|
||||||
# define rDEST r3 /* pointer to previous word in dest */
|
|
||||||
# define rSRC r4 /* pointer to previous word in src */
|
|
||||||
#endif
|
|
||||||
#define rWORD r6 /* current word from src */
|
#define rWORD r6 /* current word from src */
|
||||||
#define rFEFE r7 /* 0xfefefeff */
|
#define rFEFE r7 /* 0xfefefeff */
|
||||||
#define r7F7F r8 /* 0x7f7f7f7f */
|
#define r7F7F r8 /* 0x7f7f7f7f */
|
||||||
#define rNEG r9 /* ~(word in src | 0x7f7f7f7f) */
|
#define rNEG r9 /* ~(word in src | 0x7f7f7f7f) */
|
||||||
#define rALT r10 /* alternate word from src */
|
#define rALT r10 /* alternate word from src */
|
||||||
|
|
||||||
CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
|
|
||||||
CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
|
|
||||||
STORE_RETURN_BOUNDS (rLOW, rHIGH)
|
|
||||||
|
|
||||||
or rTMP, rSRC, rDEST
|
or rTMP, rSRC, rDEST
|
||||||
clrlwi. rTMP, rTMP, 30
|
clrlwi. rTMP, rTMP, 30
|
||||||
@ -84,8 +72,6 @@ L(g1): rlwinm. rTMP, rALT, 8, 24, 31
|
|||||||
stbu rTMP, 1(rDEST)
|
stbu rTMP, 1(rDEST)
|
||||||
beqlr-
|
beqlr-
|
||||||
stbu rALT, 1(rDEST)
|
stbu rALT, 1(rDEST)
|
||||||
CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
|
|
||||||
STORE_RETURN_VALUE (rDEST)
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
/* Oh well. In this case, we just do a byte-by-byte copy. */
|
/* Oh well. In this case, we just do a byte-by-byte copy. */
|
||||||
@ -107,15 +93,11 @@ L(u0): lbzu rALT, 1(rSRC)
|
|||||||
cmpwi rWORD, 0
|
cmpwi rWORD, 0
|
||||||
bne+ L(u0)
|
bne+ L(u0)
|
||||||
L(u2): stbu rWORD, 1(rDEST)
|
L(u2): stbu rWORD, 1(rDEST)
|
||||||
CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
|
|
||||||
STORE_RETURN_VALUE (rDEST)
|
|
||||||
blr
|
blr
|
||||||
L(u1): stbu rALT, 1(rDEST)
|
L(u1): stbu rALT, 1(rDEST)
|
||||||
CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
|
|
||||||
STORE_RETURN_VALUE (rDEST)
|
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__stpcpy))
|
END (__stpcpy)
|
||||||
|
|
||||||
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
|
weak_alias (__stpcpy, stpcpy)
|
||||||
libc_hidden_def (__stpcpy)
|
libc_hidden_def (__stpcpy)
|
||||||
libc_hidden_builtin_def (stpcpy)
|
libc_hidden_builtin_def (stpcpy)
|
||||||
|
@ -17,26 +17,18 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how this works. */
|
/* See strlen.s for comments on how this works. */
|
||||||
|
|
||||||
/* char * [r3] strchr (const char *s [r3] , int c [r4] ) */
|
/* char * [r3] strchr (const char *s [r3] , int c [r4] ) */
|
||||||
|
|
||||||
ENTRY (BP_SYM (strchr))
|
ENTRY (strchr)
|
||||||
|
|
||||||
#define rTMP1 r0
|
#define rTMP1 r0
|
||||||
#define rRTN r3 /* outgoing result */
|
#define rRTN r3 /* outgoing result */
|
||||||
#if __BOUNDED_POINTERS__
|
#define rSTR r8 /* current word pointer */
|
||||||
# define rSTR r4
|
#define rCHR r4 /* byte we're looking for, spread over the whole word */
|
||||||
# define rCHR r5 /* byte we're looking for, spread over the whole word */
|
#define rWORD r5 /* the current word */
|
||||||
# define rWORD r8 /* the current word */
|
|
||||||
#else
|
|
||||||
# define rSTR r8 /* current word pointer */
|
|
||||||
# define rCHR r4 /* byte we're looking for, spread over the whole word */
|
|
||||||
# define rWORD r5 /* the current word */
|
|
||||||
#endif
|
|
||||||
#define rCLZB rCHR /* leading zero byte count */
|
#define rCLZB rCHR /* leading zero byte count */
|
||||||
#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
|
#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
|
||||||
#define r7F7F r7 /* constant 0x7f7f7f7f */
|
#define r7F7F r7 /* constant 0x7f7f7f7f */
|
||||||
@ -45,8 +37,6 @@ ENTRY (BP_SYM (strchr))
|
|||||||
#define rMASK r11 /* mask with the bits to ignore set to 0 */
|
#define rMASK r11 /* mask with the bits to ignore set to 0 */
|
||||||
#define rTMP3 r12
|
#define rTMP3 r12
|
||||||
|
|
||||||
CHECK_BOUNDS_LOW (rSTR, rTMP1, rTMP2)
|
|
||||||
STORE_RETURN_BOUNDS (rTMP1, rTMP2)
|
|
||||||
|
|
||||||
rlwimi rCHR, rCHR, 8, 16, 23
|
rlwimi rCHR, rCHR, 8, 16, 23
|
||||||
li rMASK, -1
|
li rMASK, -1
|
||||||
@ -90,7 +80,6 @@ L(loopentry):
|
|||||||
L(missed):
|
L(missed):
|
||||||
and. rTMP1, rTMP1, rTMP2
|
and. rTMP1, rTMP1, rTMP2
|
||||||
li rRTN, 0
|
li rRTN, 0
|
||||||
STORE_RETURN_VALUE (rSTR)
|
|
||||||
beqlr
|
beqlr
|
||||||
/* It did happen. Decide which one was first...
|
/* It did happen. Decide which one was first...
|
||||||
I'm not sure if this is actually faster than a sequence of
|
I'm not sure if this is actually faster than a sequence of
|
||||||
@ -108,8 +97,6 @@ L(missed):
|
|||||||
cntlzw rCLZB, rTMP2
|
cntlzw rCLZB, rTMP2
|
||||||
srwi rCLZB, rCLZB, 3
|
srwi rCLZB, rCLZB, 3
|
||||||
add rRTN, rSTR, rCLZB
|
add rRTN, rSTR, rCLZB
|
||||||
CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
|
|
||||||
STORE_RETURN_VALUE (rSTR)
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
L(foundit):
|
L(foundit):
|
||||||
@ -121,10 +108,8 @@ L(foundit):
|
|||||||
subi rSTR, rSTR, 4
|
subi rSTR, rSTR, 4
|
||||||
srwi rCLZB, rCLZB, 3
|
srwi rCLZB, rCLZB, 3
|
||||||
add rRTN, rSTR, rCLZB
|
add rRTN, rSTR, rCLZB
|
||||||
CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
|
|
||||||
STORE_RETURN_VALUE (rSTR)
|
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strchr))
|
END (strchr)
|
||||||
|
|
||||||
weak_alias (BP_SYM (strchr), BP_SYM (index))
|
weak_alias (strchr, index)
|
||||||
libc_hidden_builtin_def (strchr)
|
libc_hidden_builtin_def (strchr)
|
||||||
|
@ -17,23 +17,17 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]) */
|
/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (strcmp), 4, 0)
|
EALIGN (strcmp, 4, 0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
#define rSTR1 r3 /* first string arg */
|
#define rSTR1 r3 /* first string arg */
|
||||||
#define rSTR2 r4 /* second string arg */
|
#define rSTR2 r4 /* second string arg */
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
# define rHIGH1 r11
|
|
||||||
# define rHIGH2 r12
|
|
||||||
#endif
|
|
||||||
#define rWORD1 r5 /* current word in s1 */
|
#define rWORD1 r5 /* current word in s1 */
|
||||||
#define rWORD2 r6 /* current word in s2 */
|
#define rWORD2 r6 /* current word in s2 */
|
||||||
#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
|
#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
|
||||||
@ -41,8 +35,6 @@ EALIGN (BP_SYM (strcmp), 4, 0)
|
|||||||
#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
|
#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
|
||||||
#define rBITDIF r10 /* bits that differ in s1 & s2 words */
|
#define rBITDIF r10 /* bits that differ in s1 & s2 words */
|
||||||
|
|
||||||
CHECK_BOUNDS_LOW (rSTR1, rTMP, rHIGH1)
|
|
||||||
CHECK_BOUNDS_LOW (rSTR2, rTMP, rHIGH2)
|
|
||||||
|
|
||||||
or rTMP, rSTR2, rSTR1
|
or rTMP, rSTR2, rSTR1
|
||||||
clrlwi. rTMP, rTMP, 30
|
clrlwi. rTMP, rTMP, 30
|
||||||
@ -82,7 +74,6 @@ L(endstring):
|
|||||||
bgelr+ cr1
|
bgelr+ cr1
|
||||||
L(equal):
|
L(equal):
|
||||||
li rRTN, 0
|
li rRTN, 0
|
||||||
/* GKM FIXME: check high bounds. */
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
L(different):
|
L(different):
|
||||||
@ -92,7 +83,6 @@ L(different):
|
|||||||
bgelr+
|
bgelr+
|
||||||
L(highbit):
|
L(highbit):
|
||||||
ori rRTN, rWORD2, 1
|
ori rRTN, rWORD2, 1
|
||||||
/* GKM FIXME: check high bounds. */
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
|
||||||
@ -116,11 +106,9 @@ L(u1): cmpwi cr1, rWORD1, 0
|
|||||||
cmpw rWORD1, rWORD2
|
cmpw rWORD1, rWORD2
|
||||||
bne+ cr1, L(u0)
|
bne+ cr1, L(u0)
|
||||||
L(u3): sub rRTN, rWORD1, rWORD2
|
L(u3): sub rRTN, rWORD1, rWORD2
|
||||||
/* GKM FIXME: check high bounds. */
|
|
||||||
blr
|
blr
|
||||||
L(u4): lbz rWORD1, -1(rSTR1)
|
L(u4): lbz rWORD1, -1(rSTR1)
|
||||||
sub rRTN, rWORD1, rWORD2
|
sub rRTN, rWORD1, rWORD2
|
||||||
/* GKM FIXME: check high bounds. */
|
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strcmp))
|
END (strcmp)
|
||||||
libc_hidden_builtin_def (strcmp)
|
libc_hidden_builtin_def (strcmp)
|
||||||
|
@ -17,43 +17,27 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
/* char * [r3] strcpy (char *dest [r3], const char *src [r4]) */
|
/* char * [r3] strcpy (char *dest [r3], const char *src [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (strcpy), 4, 0)
|
EALIGN (strcpy, 4, 0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3 /* incoming DEST arg preserved as result */
|
#define rRTN r3 /* incoming DEST arg preserved as result */
|
||||||
#if __BOUNDED_POINTERS__
|
#define rSRC r4 /* pointer to previous word in src */
|
||||||
# define rDEST r4 /* pointer to previous word in dest */
|
#define rDEST r5 /* pointer to previous word in dest */
|
||||||
# define rSRC r5 /* pointer to previous word in src */
|
|
||||||
# define rLOW r11
|
|
||||||
# define rHIGH r12
|
|
||||||
#else
|
|
||||||
# define rSRC r4 /* pointer to previous word in src */
|
|
||||||
# define rDEST r5 /* pointer to previous word in dest */
|
|
||||||
#endif
|
|
||||||
#define rWORD r6 /* current word from src */
|
#define rWORD r6 /* current word from src */
|
||||||
#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
|
#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
|
||||||
#define r7F7F r8 /* constant 0x7f7f7f7f */
|
#define r7F7F r8 /* constant 0x7f7f7f7f */
|
||||||
#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
|
#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
|
||||||
#define rALT r10 /* alternate word from src */
|
#define rALT r10 /* alternate word from src */
|
||||||
|
|
||||||
CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
|
|
||||||
CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
|
|
||||||
STORE_RETURN_BOUNDS (rLOW, rHIGH)
|
|
||||||
|
|
||||||
or rTMP, rSRC, rRTN
|
or rTMP, rSRC, rRTN
|
||||||
clrlwi. rTMP, rTMP, 30
|
clrlwi. rTMP, rTMP, 30
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
addi rDEST, rDEST, -4
|
|
||||||
#else
|
|
||||||
addi rDEST, rRTN, -4
|
addi rDEST, rRTN, -4
|
||||||
#endif
|
|
||||||
bne L(unaligned)
|
bne L(unaligned)
|
||||||
|
|
||||||
lis rFEFE, -0x101
|
lis rFEFE, -0x101
|
||||||
@ -88,7 +72,6 @@ L(g1): rlwinm. rTMP, rALT, 8, 24, 31
|
|||||||
stb rTMP, 6(rDEST)
|
stb rTMP, 6(rDEST)
|
||||||
beqlr-
|
beqlr-
|
||||||
stb rALT, 7(rDEST)
|
stb rALT, 7(rDEST)
|
||||||
/* GKM FIXME: check high bound. */
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
/* Oh well. In this case, we just do a byte-by-byte copy. */
|
/* Oh well. In this case, we just do a byte-by-byte copy. */
|
||||||
@ -110,11 +93,9 @@ L(u0): lbzu rALT, 1(rSRC)
|
|||||||
cmpwi rWORD, 0
|
cmpwi rWORD, 0
|
||||||
bne+ L(u0)
|
bne+ L(u0)
|
||||||
L(u2): stb rWORD, 1(rDEST)
|
L(u2): stb rWORD, 1(rDEST)
|
||||||
/* GKM FIXME: check high bound. */
|
|
||||||
blr
|
blr
|
||||||
L(u1): stb rALT, 1(rDEST)
|
L(u1): stb rALT, 1(rDEST)
|
||||||
/* GKM FIXME: check high bound. */
|
|
||||||
blr
|
blr
|
||||||
|
|
||||||
END (BP_SYM (strcpy))
|
END (strcpy)
|
||||||
libc_hidden_builtin_def (strcpy)
|
libc_hidden_builtin_def (strcpy)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* The algorithm here uses the following techniques:
|
/* The algorithm here uses the following techniques:
|
||||||
|
|
||||||
@ -72,7 +70,7 @@
|
|||||||
|
|
||||||
/* int [r3] strlen (char *s [r3]) */
|
/* int [r3] strlen (char *s [r3]) */
|
||||||
|
|
||||||
ENTRY (BP_SYM (strlen))
|
ENTRY (strlen)
|
||||||
|
|
||||||
#define rTMP1 r0
|
#define rTMP1 r0
|
||||||
#define rRTN r3 /* incoming STR arg, outgoing result */
|
#define rRTN r3 /* incoming STR arg, outgoing result */
|
||||||
@ -88,7 +86,6 @@ ENTRY (BP_SYM (strlen))
|
|||||||
#define rTMP3 r11
|
#define rTMP3 r11
|
||||||
#define rTMP4 r12
|
#define rTMP4 r12
|
||||||
|
|
||||||
CHECK_BOUNDS_LOW (rRTN, rTMP1, rTMP2)
|
|
||||||
|
|
||||||
clrrwi rSTR, rRTN, 2
|
clrrwi rSTR, rRTN, 2
|
||||||
lis r7F7F, 0x7f7f
|
lis r7F7F, 0x7f7f
|
||||||
@ -153,7 +150,6 @@ L(done0):
|
|||||||
subf rTMP1, rRTN, rSTR
|
subf rTMP1, rRTN, rSTR
|
||||||
srwi rTMP3, rTMP3, 3
|
srwi rTMP3, rTMP3, 3
|
||||||
add rRTN, rTMP1, rTMP3
|
add rRTN, rTMP1, rTMP3
|
||||||
/* GKM FIXME: check high bound. */
|
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strlen))
|
END (strlen)
|
||||||
libc_hidden_builtin_def (strlen)
|
libc_hidden_builtin_def (strlen)
|
||||||
|
@ -17,14 +17,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* See strlen.s for comments on how the end-of-string testing works. */
|
/* See strlen.s for comments on how the end-of-string testing works. */
|
||||||
|
|
||||||
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strncmp), 4, 0)
|
EALIGN (strncmp, 4, 0)
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
@ -156,5 +154,5 @@ L(u1):
|
|||||||
L(u2): lbzu rWORD1, -1(rSTR1)
|
L(u2): lbzu rWORD1, -1(rSTR1)
|
||||||
L(u3): sub rRTN, rWORD1, rWORD2
|
L(u3): sub rRTN, rWORD1, rWORD2
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (strncmp))
|
END (strncmp)
|
||||||
libc_hidden_builtin_def (strncmp)
|
libc_hidden_builtin_def (strncmp)
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_sub_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
|
/* mp_limb_t mpn_sub_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
|
||||||
mp_size_t size)
|
mp_size_t size)
|
||||||
@ -28,14 +26,7 @@
|
|||||||
possible 2-unrolled inner loop will not be. Also, watch out for the
|
possible 2-unrolled inner loop will not be. Also, watch out for the
|
||||||
alignment... */
|
alignment... */
|
||||||
|
|
||||||
EALIGN (BP_SYM (__mpn_sub_n), 3, 1)
|
EALIGN (__mpn_sub_n, 3, 1)
|
||||||
|
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r6,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r5, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Set up for loop below. */
|
/* Set up for loop below. */
|
||||||
mtcrf 0x01,r6
|
mtcrf 0x01,r6
|
||||||
@ -74,4 +65,4 @@ L(0):
|
|||||||
L(1): subfe r3,r3,r3
|
L(1): subfe r3,r3,r3
|
||||||
neg r3,r3
|
neg r3,r3
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_sub_n))
|
END (__mpn_sub_n)
|
||||||
|
@ -17,19 +17,12 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
/* mp_limb_t mpn_submul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
/* mp_limb_t mpn_submul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
|
||||||
mp_size_t s1_size, mp_limb_t s2_limb)
|
mp_size_t s1_size, mp_limb_t s2_limb)
|
||||||
Calculate res-s1*s2 and put result back in res; return carry. */
|
Calculate res-s1*s2 and put result back in res; return carry. */
|
||||||
|
|
||||||
ENTRY (BP_SYM (__mpn_submul_1))
|
ENTRY (__mpn_submul_1)
|
||||||
#if __BOUNDED_POINTERS__
|
|
||||||
slwi r10,r5,2 /* convert limbs to bytes */
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r3, r8, r9, r10)
|
|
||||||
CHECK_BOUNDS_BOTH_WIDE (r4, r8, r9, r10)
|
|
||||||
#endif
|
|
||||||
mtctr r5
|
mtctr r5
|
||||||
|
|
||||||
lwz r0,0(r4)
|
lwz r0,0(r4)
|
||||||
@ -55,4 +48,4 @@ L(0): lwzu r0,4(r4)
|
|||||||
L(1): stw r8,4(r3)
|
L(1): stw r8,4(r3)
|
||||||
addze r3,r10
|
addze r3,r10
|
||||||
blr
|
blr
|
||||||
END (BP_SYM (__mpn_submul_1))
|
END (__mpn_submul_1)
|
||||||
|
@ -19,13 +19,10 @@
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#define _ERRNO_H 1
|
#define _ERRNO_H 1
|
||||||
#include <bits/errno.h>
|
#include <bits/errno.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
.comm __curbrk,4,4
|
.comm __curbrk,4,4
|
||||||
.section ".text"
|
.section ".text"
|
||||||
ENTRY (BP_SYM (__brk))
|
ENTRY (__brk)
|
||||||
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */
|
|
||||||
mflr r0
|
mflr r0
|
||||||
stwu r1,-16(r1)
|
stwu r1,-16(r1)
|
||||||
cfi_adjust_cfa_offset (16)
|
cfi_adjust_cfa_offset (16)
|
||||||
@ -50,6 +47,6 @@ ENTRY (BP_SYM (__brk))
|
|||||||
blelr+
|
blelr+
|
||||||
li r3,ENOMEM
|
li r3,ENOMEM
|
||||||
b __syscall_error@local
|
b __syscall_error@local
|
||||||
END (BP_SYM (__brk))
|
END (__brk)
|
||||||
|
|
||||||
weak_alias (BP_SYM (__brk), BP_SYM (brk))
|
weak_alias (__brk, brk)
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
#define _ERRNO_H 1
|
#define _ERRNO_H 1
|
||||||
#include <bits/errno.h>
|
#include <bits/errno.h>
|
||||||
#include <kernel-features.h>
|
#include <kernel-features.h>
|
||||||
#include <bp-sym.h>
|
|
||||||
#include <bp-asm.h>
|
|
||||||
|
|
||||||
#define CLONE_VM 0x00000100
|
#define CLONE_VM 0x00000100
|
||||||
#define CLONE_THREAD 0x00010000
|
#define CLONE_THREAD 0x00010000
|
||||||
@ -35,10 +33,7 @@
|
|||||||
int flags [r5], void *arg [r6], void *parent_tid [r7],
|
int flags [r5], void *arg [r6], void *parent_tid [r7],
|
||||||
void *tls [r8], void *child_tid [r9]); */
|
void *tls [r8], void *child_tid [r9]); */
|
||||||
|
|
||||||
ENTRY (BP_SYM (__clone))
|
ENTRY (__clone)
|
||||||
/* GKM FIXME: add bounds checks, where sensible. */
|
|
||||||
DISCARD_BOUNDS (r4)
|
|
||||||
DISCARD_BOUNDS (r6)
|
|
||||||
|
|
||||||
/* Check for child_stack == NULL || fn == NULL. */
|
/* Check for child_stack == NULL || fn == NULL. */
|
||||||
cmpwi cr0,r4,0
|
cmpwi cr0,r4,0
|
||||||
@ -124,6 +119,6 @@ L(badargs):
|
|||||||
b __syscall_error@local
|
b __syscall_error@local
|
||||||
|
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
END (BP_SYM (__clone))
|
END (__clone)
|
||||||
|
|
||||||
weak_alias (BP_SYM (__clone), BP_SYM (clone))
|
weak_alias (__clone, clone)
|
||||||
|
Loading…
Reference in New Issue
Block a user