Use the installed Gtk (from pkg-config) by default
[nativeclient.git] / tools / nc_threads / nacl_mutex.S
blob57051b3666b2f923b15c7193bacdc9f6d4584bcc
1 /*
2  * Copyright 2008, Google Inc.
3  * All rights reserved.
4  * 
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  * 
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  * 
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
34  * NaCl service library.
35  */
37 #include "../../service_runtime/include/bits/nacl_syscalls.h"
38 #include "../../service_runtime/nacl_config.h"
40         .text
41         .globl __nacl_create_mutex
42         .globl __nacl_lock_mutex
43         .globl __nacl_unlock_mutex
44         .globl __nacl_try_lock_mutex
46         .globl __nacl_create_condvar
47         .globl __nacl_signal_condvar
48         .globl __nacl_wait_condvar
49         .globl __nacl_broadcast_condvar
50         .globl __nacl_relative_timed_wait_condvar
51         .globl __nacl_absolute_timed_wait_condvar
53         .globl __nacl_create_thread
54         .globl __nacl_exit_thread
56         .globl __nacl_create_sem
57         .globl __nacl_post_sem
58         .globl __nacl_wait_sem
61         .p2align        NACLENTRYALIGN
62 __nacl_create_mutex:
63 .CREATE_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_create)
64         jmp .CREATE_MUTEX_SYSCALL_ADDRESS
66         .p2align        NACLENTRYALIGN
67 __nacl_lock_mutex:
68 .LOCK_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_lock)
69         jmp .LOCK_MUTEX_SYSCALL_ADDRESS
71         .p2align        NACLENTRYALIGN
72 __nacl_unlock_mutex:
73 .UNLOCK_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_unlock)
74         jmp .UNLOCK_MUTEX_SYSCALL_ADDRESS
76         .p2align        NACLENTRYALIGN
77 __nacl_try_lock_mutex:
78 .TRYLOCK_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_trylock)
79         jmp .TRYLOCK_MUTEX_SYSCALL_ADDRESS
81     .p2align    NACLENTRYALIGN
82 __nacl_create_condvar:
83 .CREATE_COND_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_cond_create)
84         jmp .CREATE_COND_SYSCALL_ADDRESS
86         .p2align        NACLENTRYALIGN
87 __nacl_signal_condvar:
88 .SIGNAL_COND_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_cond_signal)
89         jmp .SIGNAL_COND_SYSCALL_ADDRESS
91         .p2align        NACLENTRYALIGN
92 __nacl_wait_condvar:
93 .WAIT_COND_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_cond_wait)
94         jmp .WAIT_COND_SYSCALL_ADDRESS
96         .p2align        NACLENTRYALIGN
97 __nacl_broadcast_condvar:
98 .BROADCAST_COND_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_cond_broadcast)
99         jmp .BROADCAST_COND_SYSCALL_ADDRESS
101         .p2align        NACLENTRYALIGN
102 __nacl_absolute_timed_wait_condvar:
103 .ABS_TIMED_WAIT_COND_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_cond_timed_wait_abs)
104         jmp .ABS_TIMED_WAIT_COND_SYSCALL_ADDRESS
106         .p2align        NACLENTRYALIGN
107 __nacl_create_thread:
108 .CREATE_THREAD_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_thread_create)
109         jmp .CREATE_THREAD_SYSCALL_ADDRESS
111         .p2align        NACLENTRYALIGN
112 __nacl_exit_thread:
113 .EXIT_THREAD_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_thread_exit)
114         jmp .EXIT_THREAD_SYSCALL_ADDRESS
116     .p2align    NACLENTRYALIGN
117 __nacl_create_sem:
118 .CREATE_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_create)
119         jmp .CREATE_SEM_SYSCALL_ADDRESS
121         .p2align        NACLENTRYALIGN
122 __nacl_post_sem:
123 .POST_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_post)
124         jmp .POST_SEM_SYSCALL_ADDRESS
126     .p2align    NACLENTRYALIGN
127 __nacl_wait_sem:
128 .WAIT_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_wait)
129         jmp .WAIT_SEM_SYSCALL_ADDRESS