2 #include <sys/syscall.h>
4 @ support ancient toolchains (gcc 2.95.3 has upto 225)
6 #define __NR_futex (__NR_SYSCALL_BASE+240)
8 #ifndef __NR_exit_group
9 #define __NR_exit_group (__NR_SYSCALL_BASE+248)
11 #ifndef __NR_clock_gettime
12 #define __NR_clock_gettime (__NR_SYSCALL_BASE+263)
15 .global sys_cacheflush @ const void *start_addr, const void *end_addr
21 mov r7, #(__ARM_NR_cacheflush & 0xff)
22 #if (__ARM_NR_cacheflush & 0x00ff00)
23 orr r7, r7, #(__ARM_NR_cacheflush & 0x00ff00)
25 #if (__ARM_NR_cacheflush & 0xff0000)
26 orr r7, r7, #(__ARM_NR_cacheflush & 0xff0000)
32 swi __ARM_NR_cacheflush
44 stmfd sp!, {r4, r5, r6}
45 ldmia r12, {r4, r5, r6}
47 ldmfd sp!, {r4, r5, r6}
49 .global g_syscall_error
62 ldr r12,[sp, #4] @ arg6 - convenience func ptr
64 ldr r4, [sp, #4] @ arg5
74 .macro raw_syscall_easy name nr
81 .macro raw_syscall name nr
85 stmfd sp!, {r4, r5, r6, lr}
86 ldmia r12, {r4, r5, r6}
88 ldmfd sp!, {r4, r5, r6, pc}
91 raw_syscall_easy g_open_raw, __NR_open
92 raw_syscall_easy g_read_raw, __NR_read
93 raw_syscall_easy g_write_raw, __NR_write
94 raw_syscall g_mmap2_raw, __NR_mmap2
95 raw_syscall_easy g_munmap_raw, __NR_munmap
96 raw_syscall_easy g_ioctl_raw, __NR_ioctl
97 raw_syscall_easy g_close_raw, __NR_close
98 raw_syscall_easy g_chdir_raw, __NR_chdir
99 raw_syscall_easy g_mkdir_raw, __NR_mkdir
100 raw_syscall_easy g_futex_raw, __NR_futex
101 raw_syscall_easy g_nanosleep_raw, __NR_nanosleep
102 raw_syscall_easy g_readlink_raw, __NR_readlink
103 raw_syscall_easy g_execve_raw, __NR_execve
104 raw_syscall_easy g_clock_gettime_raw, __NR_clock_gettime
105 raw_syscall_easy g_rt_sigprocmask_raw, __NR_rt_sigprocmask
106 raw_syscall_easy g_exit_group_raw, __NR_exit_group