aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-10 23:42:41 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-10 23:42:41 +0000
commit51f32ab8832a408385b66ccd61da20087f6e2c7b (patch)
tree82d6b59e48754f98ec118fa57340b6f934ac6131
parentebf0cbc5aff4c757a94530510f2c5d7099ffd4bf (diff)
downloadglibc-51f32ab8832a408385b66ccd61da20087f6e2c7b.tar
glibc-51f32ab8832a408385b66ccd61da20087f6e2c7b.tar.gz
glibc-51f32ab8832a408385b66ccd61da20087f6e2c7b.tar.bz2
glibc-51f32ab8832a408385b66ccd61da20087f6e2c7b.zip
Update.
* sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define __lll_mutex_timedlock_wait only for NOT_IN_libc. * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include lowlevelmutex.S. * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only for NOT_IN_libc. * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include lowlevellock.S.
-rw-r--r--nptl/ChangeLog11
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S187
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S157
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S2
5 files changed, 19 insertions, 342 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 42b74ff632..895d552ce5 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,16 @@
2003-03-10 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
+ __lll_mutex_timedlock_wait only for NOT_IN_libc.
+ * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
+ lowlevelmutex.S.
+
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
+ lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
+ for NOT_IN_libc.
+ * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
+ lowlevellock.S.
+
* sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
LOCK is already defined. Don't define __lll_mutex_timedlock_wait
for libc.so.
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
index 82b0189404..94a24b46ee 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
@@ -16,189 +16,4 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
-#include <tls.h>
-#include "lowlevel-atomic.h"
-
- .text
-
-#define SYS_gettimeofday __NR_gettimeofday
-#define SYS_futex 240
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-#define ETIMEDOUT 110
-
-
- .globl __lll_lock_wait
- .type __lll_lock_wait,@function
- .hidden __lll_lock_wait
- .align 5
-__lll_lock_wait:
- mov r4, r6
- mov r5, r4
- mov #0, r7 /* No timeout. */
- mov #FUTEX_WAIT, r5
-2:
- add #-1, r6 /* account for the preceeded xadd. */
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
-
- mov #-1, r3
- XADD (r3, @r4, r2)
- tst r3, r3
- bf/s 2b
- mov r2, r6
-
- mov #-1, r1
- mov.l r1, @r4
- rts
- mov r2, r0
- .size __lll_lock_wait,.-__lll_lock_wait
-
-
- .type lll_unlock_wake_cb,@function
- .align 5
-lll_unlock_wake_cb:
-
- .align 2
- mova 1f, r0
- mov r15, r1
- mov #-6, r15
-0:
- mov.l @r4, r2
- add #1, r2
- mov.l r2, @r4
-1:
- mov r1, r15
- cmp/pl r2
- bf 2f
- rts
- nop
- .size lll_unlock_wake_cb,.-lll_unlock_wake_cb
-
-
- .globl __lll_unlock_wake
- .type __lll_unlock_wake,@function
- .hidden __lll_unlock_wake
-__lll_unlock_wake:
-2:
- mov #FUTEX_WAKE, r5
- mov #1, r6 /* Wake one thread. */
- mov #0, r7
- mov.l r6, @r4 /* Stores 1. */
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
- rts
- nop
- .size __lll_unlock_wake,.-__lll_unlock_wake
-
-
- .globl __lll_wait_tid
- .type __lll_wait_tid,@function
- .hidden __lll_wait_tid
-__lll_wait_tid:
- mov.l @r4, r6
-1:
- mov #FUTEX_WAIT, r5
- mov #0, r7
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
-
- mov r0, r1
-
- mov.l @r4, r0
- tst r0, r0
- bf/s 1b
- mov r0, r6
- rts
- nop
- .size __lll_wait_tid,.-__lll_wait_tid
-
-
- .globl __lll_timedwait_tid
- .type __lll_timedwait_tid,@function
- .hidden __lll_timedwait_tid
-__lll_timedwait_tid:
- mov.l r9, @-r15
- mov.l r8, @-r15
- mov r4, r8
- mov r5, r9
- add #-8, r15
-
-2:
- /* Get current time. */
- mov r15, r4
- mov #0, r5
- mov #SYS_gettimeofday, r3
- trapa #0x12
- SYSCALL_INST_PAD
-
- /* Compute relative timeout. */
- mov.l @(4,r15), r0
- mov.w .L1k, r1
- dmulu.l r0, r1 /* Milli seconds to nano seconds. */
- mov.l @r9, r2
- mov.l @(4,r9), r3
- mov.l @r15, r0
- sts macl, r1
- sub r0, r2
- clrt
- subc r1, r3
- bf 5f
- mov.l .L1g, r1
- add r1, r3
- add #-1, r2
-5:
- cmp/pz r2
- bf 6f /* Time is already up. */
-
- mov.l r2, @r15 /* Store relative timeout. */
- mov.l r3, @(4,r15)
-
- mov.l @r8, r6
- tst r6, r6
- bt 4f
-
- mov r8, r4
- mov #FUTEX_WAIT, r5
- mov r15, r7
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
-
- mov r0, r1
-
- mov.l @r8, r0
- tst r0, r0
- bf 1f
-4:
- mov #0, r0
-3:
- add #8, r15
- mov.l @r15+, r8
- rts
- mov.l @r15+, r9
-
-1:
- mov #-ETIMEDOUT, r1
- cmp/eq r0, r1
- bf 2b
-6:
- bra 3b
- mov #ETIMEDOUT, r0
-
-.L1k:
- .word 1000
- .align 2
-.L1g:
- .long 1000000000
-
- .size __lll_timedwait_tid,.-__lll_timedwait_tid
+#include "lowlevellock.S"
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S b/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S
index 8a837de7b1..fc5ab3dc08 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S
@@ -16,159 +16,4 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
-#include "lowlevel-atomic.h"
-
- .text
-
-#define SYS_gettimeofday __NR_gettimeofday
-#define SYS_futex 240
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-#define EWOULDBLOCK 11
-#define EINVAL 22
-#define ETIMEDOUT 110
-
-
- .globl __lll_mutex_lock_wait
- .type __lll_mutex_lock_wait,@function
- .hidden __lll_mutex_lock_wait
- .align 5
-__lll_mutex_lock_wait:
- mov r4, r6
- mov r5, r4
- mov #0, r7 /* No timeout. */
- mov #FUTEX_WAIT, r5
-1:
- add #1, r6 /* account for the preceeded xadd. */
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
-
- mov #1, r3
- XADD (r3, @r4, r6)
- tst r6, r6
- bf 1b
- mov #2, r1
- mov.l r1, @r4
- ret
- mov #0, r0
- .size __lll_mutex_lock_wait,.-__lll_mutex_lock_wait
-
-
- .globl __lll_mutex_timedlock_wait
- .type __lll_mutex_timedlock_wait,@function
- .hidden __lll_mutex_timedlock_wait
- .align 5
-__lll_mutex_timedlock_wait:
- /* Check for a valid timeout value. */
- mov.l @(4,r6), r1
- mov.l .L1g, r0
- cmp/hs r0, r1
- bt 3f
-
- mov.l r10, @-r15
- mov.l r9, @-r15
- mov.l r8, @-r15
- mov r5, r8
- mov r6, r9
- mov r4, r10
- add #1, r10
-
- /* Stack frame for the timespec and timeval structs. */
- add #-8, r15
-
-1:
- /* Get current time. */
- mov r15, r4
- mov #0, r5
- mov #SYS_gettimeofday, r3
- trapa #0x12
- SYSCALL_INST_PAD
-
- /* Compute relative timeout. */
- mov.l @(4,r15), r0
- mov.w .L1k, r1
- dmulu.l r0, r1 /* Micro seconds to nano seconds. */
- mov.l @r9, r2
- mov.l @(4,r9), r3
- mov.l @r15, r0
- sts macl, r1
- sub r0, r2
- clrt
- subc r1, r3
- bf 4f
- mov.l .L1g, r1
- add r1, r3
- add #-1, r2
-4:
- cmp/pz r2
- bf 5f /* Time is already up. */
-
- mov.l r2, @r15 /* Store relative timeout. */
- mov.l r3, @(4,r15)
-
- mov r8, r4
- mov #FUTEX_WAIT, r5
- mov r10, r6
- mov r15, r7
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
-
- mov #1, r3
- XADD (r3, @r8, r10)
- tst r10, r10
- bf 7f
-
- mov #2, r1
- mov.l r1, @r8
- mov #0, r0
-6:
- add #8, r15
- mov.l @r15+, r8
- mov.l @r15+, r9
- rts
- mov.l @r15+, r10
-7:
- /* Check whether the time expired. */
- mov #-ETIMEDOUT, r1
- cmp/eq r0, r1
- bt 5f
- bra 1b
- nop
-3:
- rts
- mov #EINVAL, r0
-5:
- bra 6b
- mov #ETIMEDOUT, r0
-
-.L1k:
- .word 1000
- .align 2
-.L1g:
- .long 1000000000
-
- .size __lll_mutex_timedlock_wait,.-__lll_mutex_timedlock_wait
-
-
- .globl __lll_mutex_unlock_wake
- .type __lll_mutex_unlock_wake,@function
- .hidden __lll_mutex_unlock_wake
- .align 5
-__lll_mutex_unlock_wake:
- mov #FUTEX_WAKE, r5
- mov #1, r6 /* Wake one thread. */
- mov #0, r7
- mov.l r7, @r4 /* Stores 0. */
- mov #SYS_futex, r3
- extu.b r3, r3
- trapa #0x14
- SYSCALL_INST_PAD
- rts
- nop
- .size __lll_mutex_unlock_wake,.-__lll_mutex_unlock_wake
+#include "lowlevelmutex.S"
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
index ab54ea5234..3a157a0583 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
@@ -58,6 +58,7 @@ __lll_lock_wait:
.size __lll_lock_wait,.-__lll_lock_wait
+#ifdef NOT_IN_libc
.globl lll_unlock_wake_cb
.type lll_unlock_wake_cb,@function
.hidden lll_unlock_wake_cb
@@ -79,6 +80,7 @@ lll_unlock_wake_cb:
rts
nop
.size lll_unlock_wake_cb,.-lll_unlock_wake_cb
+#endif
.globl __lll_unlock_wake
@@ -99,6 +101,7 @@ __lll_unlock_wake:
.size __lll_unlock_wake,.-__lll_unlock_wake
+#ifdef NOT_IN_libc
.globl __lll_wait_tid
.type __lll_wait_tid,@function
.hidden __lll_wait_tid
@@ -203,3 +206,4 @@ __lll_timedwait_tid:
.long 1000000000
.size __lll_timedwait_tid,.-__lll_timedwait_tid
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
index 8a837de7b1..dd9ac3cf35 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
@@ -58,6 +58,7 @@ __lll_mutex_lock_wait:
.size __lll_mutex_lock_wait,.-__lll_mutex_lock_wait
+#ifdef NOT_IN_libc
.globl __lll_mutex_timedlock_wait
.type __lll_mutex_timedlock_wait,@function
.hidden __lll_mutex_timedlock_wait
@@ -154,6 +155,7 @@ __lll_mutex_timedlock_wait:
.long 1000000000
.size __lll_mutex_timedlock_wait,.-__lll_mutex_timedlock_wait
+#endif
.globl __lll_mutex_unlock_wake