support ancient toolchains
[ginge.git] / loader / syscalls.S
index e72e7d2..6d48fbd 100644 (file)
@@ -1,6 +1,16 @@
 @ vim:filetype=armasm
 #include <sys/syscall.h>
 
+@ support ancient toolchains (gcc 2.95.3 has upto 225)
+#ifndef __NR_futex
+#define __NR_futex                     (__NR_SYSCALL_BASE+240)
+#endif
+#ifndef __NR_exit_group
+#define __NR_exit_group                        (__NR_SYSCALL_BASE+248)
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime             (__NR_SYSCALL_BASE+263)
+#endif
 
 .global sys_cacheflush @ const void *start_addr, const void *end_addr
 sys_cacheflush:
@@ -75,14 +85,21 @@ g_clone:
     stmfd sp!, {r4, r5, r6, lr}
     ldmia r12, {r4, r5, r6}
     swi   \nr
-    stmfd sp!, {r4, r5, r6, pc}
+    ldmfd sp!, {r4, r5, r6, pc}
 .endm
 
 raw_syscall_easy g_open_raw,           __NR_open
 raw_syscall_easy g_read_raw,           __NR_read
 raw_syscall_easy g_write_raw,          __NR_write
+raw_syscall      g_mmap2_raw,          __NR_mmap2
+raw_syscall_easy g_munmap_raw,         __NR_munmap
+raw_syscall_easy g_ioctl_raw,          __NR_ioctl
+raw_syscall_easy g_close_raw,          __NR_close
+raw_syscall_easy g_chdir_raw,          __NR_chdir
 raw_syscall_easy g_futex_raw,          __NR_futex
 raw_syscall_easy g_nanosleep_raw,      __NR_nanosleep
+raw_syscall_easy g_readlink_raw,       __NR_readlink
+raw_syscall_easy g_execve_raw,         __NR_execve
 raw_syscall_easy g_clock_gettime_raw,  __NR_clock_gettime
 raw_syscall_easy g_rt_sigprocmask_raw, __NR_rt_sigprocmask
-
+raw_syscall_easy g_exit_group_raw,     __NR_exit_group