mirror of git://sourceware.org/git/glibc.git
Update.
* sysdeps/unix/sysv/linux/powerpc/socket.S: Adjust asm syntax. * sysdeps/unix/sysv/linux/powerpc/clone.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/syscall.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/brk.S: Likewise.
This commit is contained in:
parent
38a29b57af
commit
acf47bbeeb
|
@ -1,6 +1,9 @@
|
||||||
1999-10-11 Ulrich Drepper <drepper@cygnus.com>
|
1999-10-11 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/powerpc/brk.S: Adjust asm syntax.
|
* sysdeps/unix/sysv/linux/powerpc/socket.S: Adjust asm syntax.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/clone.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/syscall.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/brk.S: Likewise.
|
||||||
|
|
||||||
* sysdeps/powerpc/Makefile [math] (libm-support): Remove t_sqrt.
|
* sysdeps/powerpc/Makefile [math] (libm-support): Remove t_sqrt.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* brk system call for Linux/ppc.
|
/* brk system call for Linux/ppc.
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -24,25 +24,25 @@
|
||||||
.comm __curbrk,4,4
|
.comm __curbrk,4,4
|
||||||
.section ".text"
|
.section ".text"
|
||||||
ENTRY(__brk)
|
ENTRY(__brk)
|
||||||
stwu %r1,-16(%r1)
|
stwu r1,-16(r1)
|
||||||
stw %r3,8(%r1)
|
stw r3,8(r1)
|
||||||
DO_CALL(SYS_ify(brk))
|
DO_CALL(SYS_ify(brk))
|
||||||
lwz %r6,8(%r1)
|
lwz r6,8(r1)
|
||||||
#ifdef PIC
|
#ifdef PIC
|
||||||
mflr %r4
|
mflr r4
|
||||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||||
mflr %r5
|
mflr r5
|
||||||
lwz %r5,__curbrk@got(%r5)
|
lwz r5,__curbrk@got(r5)
|
||||||
mtlr %r4
|
mtlr r4
|
||||||
stw %r3,0(%r5)
|
stw r3,0(r5)
|
||||||
#else
|
#else
|
||||||
stw %r3,__curbrk@sdarel(%r13)
|
stw r3,__curbrk@sdarel(r13)
|
||||||
#endif
|
#endif
|
||||||
cmplw %r6,%r3
|
cmplw r6,r3
|
||||||
addi %r1,%r1,16
|
addi r1,r1,16
|
||||||
li %r3,0
|
li r3,0
|
||||||
blelr+
|
blelr+
|
||||||
li %r3,ENOMEM
|
li r3,ENOMEM
|
||||||
b JUMPTARGET(__syscall_error)
|
b JUMPTARGET(__syscall_error)
|
||||||
END (__brk)
|
END (__brk)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Wrapper around clone system call.
|
/* Wrapper around clone system call.
|
||||||
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -29,58 +29,58 @@
|
||||||
|
|
||||||
ENTRY(__clone)
|
ENTRY(__clone)
|
||||||
/* Check for child_stack == NULL || fn == NULL. */
|
/* Check for child_stack == NULL || fn == NULL. */
|
||||||
cmpwi %cr0,%r4,0
|
cmpwi cr0,r4,0
|
||||||
cmpwi %cr1,%r3,0
|
cmpwi cr1,r3,0
|
||||||
cror cr0*4+eq,cr1*4+eq,cr0*4+eq
|
cror cr0*4+eq,cr1*4+eq,cr0*4+eq
|
||||||
beq- %cr0,L(badargs)
|
beq- cr0,L(badargs)
|
||||||
|
|
||||||
/* Set up stack frame for parent. */
|
/* Set up stack frame for parent. */
|
||||||
stwu %r1,-32(%r1)
|
stwu r1,-32(r1)
|
||||||
stmw %r29,16(%r1)
|
stmw r29,16(r1)
|
||||||
|
|
||||||
/* Set up stack frame for child. */
|
/* Set up stack frame for child. */
|
||||||
clrrwi %r4,%r4,4
|
clrrwi r4,r4,4
|
||||||
li %r0,0
|
li r0,0
|
||||||
stwu %r0,-16(%r4)
|
stwu r0,-16(r4)
|
||||||
|
|
||||||
/* Save fn, args, stack across syscall. */
|
/* Save fn, args, stack across syscall. */
|
||||||
mr %r29,%r3 /* Function in r29. */
|
mr r29,r3 /* Function in r29. */
|
||||||
mr %r30,%r4 /* Stack pointer in r30. */
|
mr r30,r4 /* Stack pointer in r30. */
|
||||||
mr %r31,%r6 /* Argument in r31. */
|
mr r31,r6 /* Argument in r31. */
|
||||||
|
|
||||||
/* 'flags' argument is first parameter to clone syscall. (The other
|
/* 'flags' argument is first parameter to clone syscall. (The other
|
||||||
argument is the stack pointer, already in r4.) */
|
argument is the stack pointer, already in r4.) */
|
||||||
mr %r3,%r5
|
mr r3,r5
|
||||||
|
|
||||||
/* Do the call. */
|
/* Do the call. */
|
||||||
DO_CALL(SYS_ify(clone))
|
DO_CALL(SYS_ify(clone))
|
||||||
|
|
||||||
/* Check for child process. */
|
/* Check for child process. */
|
||||||
cmpwi %cr1,%r3,0
|
cmpwi cr1,r3,0
|
||||||
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
|
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
|
||||||
bne- %cr1,L(parent) /* The '-' is to minimise the race. */
|
bne- cr1,L(parent) /* The '-' is to minimise the race. */
|
||||||
|
|
||||||
/* On at least mklinux DR3a5, clone() doesn't actually change
|
/* On at least mklinux DR3a5, clone() doesn't actually change
|
||||||
the stack pointer. I'm pretty sure this is a bug, because
|
the stack pointer. I'm pretty sure this is a bug, because
|
||||||
it adds a race condition if a signal is sent to a thread
|
it adds a race condition if a signal is sent to a thread
|
||||||
just after it is created (in the previous three instructions). */
|
just after it is created (in the previous three instructions). */
|
||||||
mr %r1,%r30
|
mr r1,r30
|
||||||
/* Call procedure. */
|
/* Call procedure. */
|
||||||
mtctr %r29
|
mtctr r29
|
||||||
mr %r3,%r31
|
mr r3,r31
|
||||||
bctrl
|
bctrl
|
||||||
/* Call _exit with result from procedure. */
|
/* Call _exit with result from procedure. */
|
||||||
b JUMPTARGET(_exit)
|
b JUMPTARGET(_exit)
|
||||||
|
|
||||||
L(parent):
|
L(parent):
|
||||||
/* Parent. Restore registers & return. */
|
/* Parent. Restore registers & return. */
|
||||||
lmw %r29,16(%r1)
|
lmw r29,16(r1)
|
||||||
addi %r1,%r1,32
|
addi r1,r1,32
|
||||||
bnslr+
|
bnslr+
|
||||||
b JUMPTARGET(__syscall_error)
|
b JUMPTARGET(__syscall_error)
|
||||||
|
|
||||||
L(badargs):
|
L(badargs):
|
||||||
li %r3,EINVAL
|
li r3,EINVAL
|
||||||
b JUMPTARGET(__syscall_error)
|
b JUMPTARGET(__syscall_error)
|
||||||
END (__clone)
|
END (__clone)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -47,38 +47,38 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
ENTRY(__socket)
|
ENTRY(__socket)
|
||||||
stwu %r1,-48(%r1)
|
stwu r1,-48(r1)
|
||||||
#if NARGS >= 1
|
#if NARGS >= 1
|
||||||
stw %r3,stackblock(%r1)
|
stw r3,stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 2
|
#if NARGS >= 2
|
||||||
stw %r4,4+stackblock(%r1)
|
stw r4,4+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 3
|
#if NARGS >= 3
|
||||||
stw %r5,8+stackblock(%r1)
|
stw r5,8+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 4
|
#if NARGS >= 4
|
||||||
stw %r6,12+stackblock(%r1)
|
stw r6,12+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 5
|
#if NARGS >= 5
|
||||||
stw %r7,16+stackblock(%r1)
|
stw r7,16+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 6
|
#if NARGS >= 6
|
||||||
stw %r8,20+stackblock(%r1)
|
stw r8,20+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 7
|
#if NARGS >= 7
|
||||||
stw %r9,24+stackblock(%r1)
|
stw r9,24+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 8
|
#if NARGS >= 8
|
||||||
stw %r10,28+stackblock(%r1)
|
stw r10,28+stackblock(r1)
|
||||||
#endif
|
#endif
|
||||||
#if NARGS >= 9
|
#if NARGS >= 9
|
||||||
#error too many arguments!
|
#error too many arguments!
|
||||||
#endif
|
#endif
|
||||||
li %r3,P(SOCKOP_,socket)
|
li r3,P(SOCKOP_,socket)
|
||||||
addi %r4,%r1,stackblock
|
addi r4,r1,stackblock
|
||||||
DO_CALL(SYS_ify(socketcall))
|
DO_CALL(SYS_ify(socketcall))
|
||||||
addi %r1,%r1,48
|
addi r1,r1,48
|
||||||
PSEUDO_RET
|
PSEUDO_RET
|
||||||
PSEUDO_END (__socket)
|
PSEUDO_END (__socket)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 1992, 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -19,12 +19,12 @@
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
ENTRY (syscall)
|
ENTRY (syscall)
|
||||||
mr %r0,%r3
|
mr r0,r3
|
||||||
mr %r3,%r4
|
mr r3,r4
|
||||||
mr %r4,%r5
|
mr r4,r5
|
||||||
mr %r5,%r6
|
mr r5,r6
|
||||||
mr %r6,%r7
|
mr r6,r7
|
||||||
mr %r7,%r8
|
mr r7,r8
|
||||||
sc
|
sc
|
||||||
PSEUDO_RET
|
PSEUDO_RET
|
||||||
PSEUDO_END (syscall)
|
PSEUDO_END (syscall)
|
||||||
|
|
Loading…
Reference in New Issue