1 /* Copyright (C) 2003 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 #include "lowlevel-atomic.h"
24 #define SYS_gettimeofday __NR_gettimeofday
32 .globl __lll_lock_wait
33 .type __lll_lock_wait,@function
34 .hidden __lll_lock_wait
39 mov #0, r7 /* No timeout. */
42 add #-1, r6 /* account for the preceeded xadd. */
58 .size __lll_lock_wait,.-__lll_lock_wait
61 .globl lll_unlock_wake_cb
62 .type lll_unlock_wake_cb,@function
63 .hidden lll_unlock_wake_cb
81 .size lll_unlock_wake_cb,.-lll_unlock_wake_cb
84 .globl __lll_unlock_wake
85 .type __lll_unlock_wake,@function
86 .hidden __lll_unlock_wake
90 mov #1, r6 /* Wake one thread. */
92 mov.l r6, @r4 /* Stores 1. */
99 .size __lll_unlock_wake,.-__lll_unlock_wake
102 .globl __lll_wait_tid
103 .type __lll_wait_tid,@function
104 .hidden __lll_wait_tid
123 .size __lll_wait_tid,.-__lll_wait_tid
126 .globl __lll_timedwait_tid
127 .type __lll_timedwait_tid,@function
128 .hidden __lll_timedwait_tid
137 /* Get current time. */
140 mov #SYS_gettimeofday, r3
144 /* Compute relative timeout. */
147 dmulu.l r0, r1 /* Milli seconds to nano seconds. */
161 bf 6f /* Time is already up. */
163 mov.l r2, @r15 /* Store relative timeout. */
205 .size __lll_timedwait_tid,.-__lll_timedwait_tid
208 .globl __lll_wake_tid
209 .type __lll_wake_tid,@function
210 .hidden __lll_wake_tid
214 shlr r6 /* r6 = 0x7fffffff */
222 .size __lll_wake_tid,.-__lll_wake_tid