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
21 #include "lowlevel-atomic.h"
25 #define SYS_gettimeofday __NR_gettimeofday
33 .globl __lll_lock_wait
34 .type __lll_lock_wait,@function
35 .hidden __lll_lock_wait
40 mov #0, r7 /* No timeout. */
43 add #-1, r6 /* account for the preceeded xadd. */
59 .size __lll_lock_wait,.-__lll_lock_wait
62 .type lll_unlock_wake_cb,@function
80 .size lll_unlock_wake_cb,.-lll_unlock_wake_cb
83 .globl __lll_unlock_wake
84 .type __lll_unlock_wake,@function
85 .hidden __lll_unlock_wake
89 mov #1, r6 /* Wake one thread. */
91 mov.l r6, @r4 /* Stores 1. */
98 .size __lll_unlock_wake,.-__lll_unlock_wake
101 .globl __lll_wait_tid
102 .type __lll_wait_tid,@function
103 .hidden __lll_wait_tid
122 .size __lll_wait_tid,.-__lll_wait_tid
125 .globl __lll_timedwait_tid
126 .type __lll_timedwait_tid,@function
127 .hidden __lll_timedwait_tid
136 /* Get current time. */
139 mov #SYS_gettimeofday, r3
143 /* Compute relative timeout. */
146 dmulu.l r0, r1 /* Milli seconds to nano seconds. */
160 bf 6f /* Time is already up. */
162 mov.l r2, @r15 /* Store relative timeout. */
204 .size __lll_timedwait_tid,.-__lll_timedwait_tid
207 .globl __lll_wake_tid
208 .type __lll_wake_tid,@function
209 .hidden __lll_wake_tid
213 shlr r6 /* r6 = 0x7fffffff */
221 .size __lll_wake_tid,.-__lll_wake_tid