1 /** Linux system call interface for the ARM processor.
2 * Written by Shaun Jackman <sjackman@gmail.com>.
3 * Copyright 2006 Pathway Connectivity
5 * Permission to use, copy, modify, and distribute this software
6 * is freely granted, provided that this notice is preserved.
9 #include "linux-syscall.h"
12 # define FUNC(name) .type name, %function; .thumb_func; name:
13 # define SET .thumb_set
15 # define FUNC(name) .type name, %function; name:
19 #define GLOBAL(name) .global name; FUNC(name)
20 #define SIZE(name) .size name, .-name
22 # define SYSCALL4(name) \
28 # define SYSCALL6(name) \
38 #define SYSCALL0(name) SYSCALL3(name)
39 #define SYSCALL3(name) SYSCALL4(name)
40 #define SYSCALL1(name) SYSCALL3(name)
41 #define SYSCALL2(name) SYSCALL3(name)
42 #define SYSCALL5(name) SYSCALL6(name)
66 SYSCALL2(gettimeofday)
105 #define ALIAS(name) .GLOBAL name; SET name, _ ## name
149 # define SOCKETCALL(name, NAME) \
152 mov r0, #SYS_ ## NAME; \
153 b _socketcall_tail; \
156 FUNC(_socketcall_tail)
162 #if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_3__) \
163 || defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__)
168 SIZE(_socketcall_tail)
170 #define SOCKETCALL2(name, NAME) SOCKETCALL(name, NAME)
171 #define SOCKETCALL3(name, NAME) SOCKETCALL(name, NAME)
172 #define SOCKETCALL4(name, NAME) SOCKETCALL(name, NAME)
173 #define SOCKETCALL5(name, NAME) SOCKETCALL(name, NAME)
174 #define SOCKETCALL6(name, NAME) SOCKETCALL(name, NAME)
176 SOCKETCALL3(accept, ACCEPT)
177 SOCKETCALL3(bind, BIND)
178 SOCKETCALL3(connect, CONNECT)
179 SOCKETCALL3(getpeername, GETPEERNAME)
180 SOCKETCALL3(getsockname, GETSOCKNAME)
181 SOCKETCALL5(getsockopt, GETSOCKOPT)
182 SOCKETCALL2(listen, LISTEN)
183 SOCKETCALL4(recv, RECV)
184 SOCKETCALL6(recvfrom, RECVFROM)
185 SOCKETCALL3(recvmsg, RECVMSG)
186 SOCKETCALL4(send, SEND)
187 SOCKETCALL3(sendmsg, SENDMSG)
188 SOCKETCALL6(sendto, SENDTO)
189 SOCKETCALL5(setsockopt, SETSOCKOPT)
190 SOCKETCALL2(shutdown, SHUTDOWN)
191 SOCKETCALL3(socket, SOCKET)
192 SOCKETCALL4(socketpair, SOCKETPAIR)