2 * Copyright 2008, Google Inc.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
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
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.
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.
34 * NaCl service library.
37 #include "../../service_runtime/include/bits/nacl_syscalls.h"
38 #include "../../service_runtime/nacl_config.h"
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
63 .CREATE_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_create)
64 jmp .CREATE_MUTEX_SYSCALL_ADDRESS
66 .p2align NACLENTRYALIGN
68 .LOCK_MUTEX_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_mutex_lock)
69 jmp .LOCK_MUTEX_SYSCALL_ADDRESS
71 .p2align NACLENTRYALIGN
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
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
113 .EXIT_THREAD_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_thread_exit)
114 jmp .EXIT_THREAD_SYSCALL_ADDRESS
116 .p2align NACLENTRYALIGN
118 .CREATE_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_create)
119 jmp .CREATE_SEM_SYSCALL_ADDRESS
121 .p2align NACLENTRYALIGN
123 .POST_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_post)
124 jmp .POST_SEM_SYSCALL_ADDRESS
126 .p2align NACLENTRYALIGN
128 .WAIT_SEM_SYSCALL_ADDRESS = NACL_SYSCALL_ADDR(NACL_sys_sem_wait)
129 jmp .WAIT_SEM_SYSCALL_ADDRESS