Common subdirectories: scrashme/.git and scrashme.new/.git
diff --new-file --unified=5 scrashme/arm.h scrashme.new/arm.h
--- scrashme/arm.h	1969-12-31 16:00:00.000000000 -0800
+++ scrashme.new/arm.h	2011-03-21 14:43:40.000000000 -0700
@@ -0,0 +1,4 @@
+#include "syscalls-arm.h"
+
+#define KERNEL_ADDR	0xc0000000
+
diff --new-file --unified=5 scrashme/sanitise.c scrashme.new/sanitise.c
--- scrashme/sanitise.c	2010-03-18 04:45:47.000000000 -0700
+++ scrashme.new/sanitise.c	2011-03-22 07:04:23.444767234 -0700
@@ -21,10 +21,14 @@
 #endif
 #ifdef __powerpc__
 #define PAGE_OFFSET 0xC0000000
 #define TASK_SIZE (PAGE_OFFSET)
 #endif
+#ifdef __arm__
+#define PAGE_OFFSET 0xC0000000
+#define TASK_SIZE (PAGE_OFFSET)
+#endif
 #ifdef __ia64__
 #define PAGE_OFFSET 0xe000000000000000
 #define TASK_SIZE 0xa000000000000000
 #endif
 #ifdef __sparc__
diff --new-file --unified=5 scrashme/scrashme.c scrashme.new/scrashme.c
--- scrashme/scrashme.c	2010-03-18 04:45:47.000000000 -0700
+++ scrashme.new/scrashme.c	2011-03-22 07:04:54.584919926 -0700
@@ -25,10 +25,13 @@
 #include "x86-64.h"
 #endif
 #ifdef __i386__
 #include "i386.h"
 #endif
+#ifdef __arm__
+#include "arm.h"
+#endif
 #ifdef __powerpc__
 #include "ppc.h"
 #endif
 #ifdef __ia64__
 #include "ia64.h"
@@ -481,11 +484,13 @@
 	}
 	(void)signal(SIGCHLD, SIG_IGN);
 
 	srand(seed);
 
-	chroot("tmp");
+	if (chroot("tmp")) {
+		printf("chroot failed!\n");
+	}
 }
 
 static void run_mode(void)
 {
 	int i;
@@ -582,12 +587,16 @@
 	syscalls = syscalls_ppc;
 #elif __ia64__
 	syscalls = syscalls_ia64;
 #elif __sparc__
 	syscalls = syscalls_sparc;
-#else
+#elif __i386__
 	syscalls = syscalls_i386;
+#elif __arm__
+	syscalls = syscalls_arm;
+#else
+#error Currently unsupported syscall architecture.
 #endif
 
 	page_size = getpagesize();
 
 	progname = argv[0];
diff --new-file --unified=5 scrashme/syscalls-arm.h scrashme.new/syscalls-arm.h
--- scrashme/syscalls-arm.h	1969-12-31 16:00:00.000000000 -0800
+++ scrashme.new/syscalls-arm.h	2011-03-22 10:29:47.995365865 -0700
@@ -0,0 +1,373 @@
+/* Syscalls from arch/arm/kernel/call.S as of 2.6.32.26+drm33.12 */
+
+#include "scrashme.h"
+#include "sanitise.h"
+
+#define NR_SYSCALLS 364
+struct syscalltable syscalls_arm[NR_SYSCALLS + 1] = {
+/* 0 */		{ .name = "restart_syscall" },
+		{ .name = "exit", .flags = AVOID_SYSCALL },
+		{ .name = "fork_wrapper", .flags = AVOID_SYSCALL },
+		{ .name = "read", .sanitise = sanitise_read  },
+		{ .name = "write", .sanitise = sanitise_write },
+/* 5 */		{ .name = "open" },
+		{ .name = "close", .sanitise = sanitise_close },
+		{ .name = "ni_syscall" },		/* was sys_waitpid */
+		{ .name = "creat" },
+		{ .name = "link" },
+/* 10 */	{ .name = "unlink" },
+		{ .name = "execve_wrapper" },
+		{ .name = "chdir" },
+		{ .name = "time", .flags = AVOID_SYSCALL },	/* used by libc4 */
+		{ .name = "mknod" },
+/* 15 */	{ .name = "chmod" },
+		{ .name = "lchown16" },
+		{ .name = "ni_syscall" },		/* was sys_break */
+		{ .name = "ni_syscall" },		/* was sys_stat */
+		{ .name = "lseek", .sanitise = sanitise_lseek },
+/* 20 */	{ .name = "getpid" },
+		{ .name = "mount" },
+		{ .name = "oldumount", .flags = AVOID_SYSCALL },	/* used by libc4 */
+		{ .name = "setuid16" },
+		{ .name = "getuid16" },
+/* 25 */	{ .name = "stime", .flags = AVOID_SYSCALL },
+		{ .name = "ptrace" },
+		{ .name = "alarm", .flags = AVOID_SYSCALL },	/* used by libc4 */
+		{ .name = "ni_syscall" },		/* was sys_fstat */
+		{ .name = "pause", .flags = AVOID_SYSCALL },
+/* 30 */	{ .name = "utime", .flags = AVOID_SYSCALL },	/* used by libc4 */
+		{ .name = "ni_syscall" },		/* was sys_stty */
+		{ .name = "ni_syscall" },		/* was sys_getty */
+		{ .name = "access" },
+		{ .name = "nice" },
+/* 35 */	{ .name = "ni_syscall" },		/* was sys_ftime */
+		{ .name = "sync" },
+		{ .name = "kill" },
+		{ .name = "rename" },
+		{ .name = "mkdir" },
+/* 40 */	{ .name = "rmdir" },
+		{ .name = "dup" },
+		{ .name = "pipe" },
+		{ .name = "times" },
+		{ .name = "ni_syscall" },		/* was sys_prof */
+/* 45 */	{ .name = "brk" },
+		{ .name = "setgid16" },
+		{ .name = "getgid16" },
+		{ .name = "ni_syscall" },		/* was sys_signal */
+		{ .name = "geteuid16" },
+/* 50 */	{ .name = "getegid16" },
+		{ .name = "acct" },
+		{ .name = "umount" },
+		{ .name = "ni_syscall" },		/* was sys_lock */
+		{ .name = "ioctl", .sanitise = sanitise_ioctl },
+/* 55 */	{ .name = "fcntl" },
+		{ .name = "ni_syscall" },		/* was sys_mpx */
+		{ .name = "setpgid" },
+		{ .name = "ni_syscall" },		/* was sys_ulimit */
+		{ .name = "ni_syscall" },		/* was sys_olduname */
+/* 60 */	{ .name = "umask" },
+		{ .name = "chroot" },
+		{ .name = "ustat" },
+		{ .name = "dup2" },
+		{ .name = "getppid" },
+/* 65 */	{ .name = "getpgrp" },
+		{ .name = "setsid" },
+		{ .name = "sigaction" },
+		{ .name = "ni_syscall" },		/* was sys_sgetmask */
+		{ .name = "ni_syscall" },		/* was sys_ssetmask */
+/* 70 */	{ .name = "setreuid16" },
+		{ .name = "setregid16" },
+		{ .name = "sigsuspend", .flags = AVOID_SYSCALL },
+		{ .name = "sigpending" },
+		{ .name = "sethostname" },
+/* 75 */	{ .name = "setrlimit" },
+		{ .name = "old_getrlimit", .flags = AVOID_SYSCALL }, /* used by libc4 */
+		{ .name = "getrusage" },
+		{ .name = "gettimeofday" },
+		{ .name = "settimeofday" },
+/* 80 */	{ .name = "getgroups16" },
+		{ .name = "setgroups16" },
+		{ .name = "old_select", .flags = AVOID_SYSCALL },
+		{ .name = "symlink" },
+		{ .name = "ni_syscall" },		/* was sys_lstat */
+/* 85 */	{ .name = "readlink" },
+		{ .name = "uselib" },
+		{ .name = "swapon" },
+		{ .name = "reboot" },
+		{ .name = "old_readdir", .flags = AVOID_SYSCALL },	/* used by libc4 */
+/* 90 */	{ .name = "old_mmaap", .flags = AVOID_SYSCALL },	/* used by libc4 */
+		{ .name = "munmap" },
+		{ .name = "truncate" },
+		{ .name = "ftruncate" },
+		{ .name = "fchmod" },
+/* 95 */	{ .name = "fchown16" },
+		{ .name = "getpriority" },
+		{ .name = "setpriority" },
+		{ .name = "ni_syscall" },		/* was sys_profil */
+		{ .name = "statfs" },
+/* 100 */	{ .name = "fstatfs" },
+		{ .name = "ni_syscall" },		/* sys_ioperm */
+		{ .name = "sys_socketcall", .flags = AVOID_SYSCALL },
+		{ .name = "syslog" },
+		{ .name = "setitimer" },
+/* 105 */	{ .name = "getitimer" },
+		{ .name = "newstat" },
+		{ .name = "newlstat" },
+		{ .name = "newfstat", .sanitise = sanitise_newfstat },
+		{ .name = "ni_syscall" },		/* was sys_uname */
+/* 110 */	{ .name = "ni_syscall" },		/* was sys_iopl */
+		{ .name = "vhangup" },
+		{ .name = "ni_syscall" },
+		{ .name = "syscall", .flags = AVOID_SYSCALL },	/* call a syscall */
+		{ .name = "wait4" },
+/* 115 */	{ .name = "swapoff" },
+		{ .name = "sysinfo" },
+		{ .name = "sys_ipc", .flags = AVOID_SYSCALL },
+		{ .name = "fsync" },
+		{ .name = "sigreturn_wrapper" },
+/* 120 */	{ .name = "clone_wrapper", .flags = AVOID_SYSCALL  },
+		{ .name = "setdomainname" },
+		{ .name = "newuname" },
+		{ .name = "ni_syscall" },		/* modify_ldt */
+		{ .name = "adjtimex" },
+/* 125 */	{ .name = "mprotect", .sanitise = sanitise_mprotect },
+		{ .name = "sigprocmask" },
+		{ .name = "ni_syscall" },		/* was sys_create_module */
+		{ .name = "init_module" },
+		{ .name = "delete_module" },
+/* 130 */	{ .name = "ni_syscall" },		/* was sys_get_kernel_syms */
+		{ .name = "quotactl" },
+		{ .name = "getpgid" },
+		{ .name = "fchdir" },
+		{ .name = "bdflush" },
+/* 135 */	{ .name = "sysfs" },
+		{ .name = "personality" },
+		{ .name = "ni_syscall" },		/* reserved for afs_syscall */
+		{ .name = "setfsuid16" },
+		{ .name = "setfsgid16" },
+/* 140 */	{ .name = "llseek" },
+		{ .name = "getdents" },
+		{ .name = "select", .flags = AVOID_SYSCALL  },
+		{ .name = "flock" },
+		{ .name = "msync" },
+/* 145 */	{ .name = "readv", .sanitise = sanitise_readv },
+		{ .name = "writev", .sanitise = sanitise_writev },
+		{ .name = "getsid" },
+		{ .name = "fdatasync" },
+		{ .name = "sysctl" },
+/* 150 */	{ .name = "mlock" },
+		{ .name = "munlock" },
+		{ .name = "mlockall" },
+		{ .name = "munlockall" },
+		{ .name = "sched_setparam" },
+/* 155 */	{ .name = "sched_getparam" },
+		{ .name = "sched_setscheduler" },
+		{ .name = "sched_getscheduler" },
+		{ .name = "sched_yield" },
+		{ .name = "sched_get_priority_max" },
+/* 160 */	{ .name = "sched_get_priority_min" },
+		{ .name = "sched_rr_get_interval" },
+		{ .name = "nanosleep" },
+		{ .name = "mremap", .sanitise = sanitise_mremap },
+		{ .name = "setresuid16" },
+/* 165 */	{ .name = "getresuid16" },
+		{ .name = "ni_syscall" },		/* vm86 */
+		{ .name = "ni_syscall" },		/* was sys_query_module */
+		{ .name = "poll" },
+		{ .name = "nfsservctl" },
+/* 170 */	{ .name = "setresgid16" },
+		{ .name = "getresgid16" },
+		{ .name = "prctl" },
+		{ .name = "rt_sigreturn_wrapper" },
+		{ .name = "rt_sigaction", .sanitise = sanitise_rt_sigaction },
+/* 175 */	{ .name = "rt_sigprocmask", .sanitise = sanitise_rt_sigprocmask },
+		{ .name = "rt_sigpending" },
+		{ .name = "rt_sigtimedwait" },
+		{ .name = "rt_sigqueueinfo" },
+		{ .name = "rt_sigsuspend", .flags = AVOID_SYSCALL },
+/* 180 */	{ .name = "pread64", .sanitise = sanitise_pread64 },
+		{ .name = "pwrite64", .sanitise = sanitise_pwrite64 },
+		{ .name = "chown16" },
+		{ .name = "getcwd" },
+		{ .name = "capget" },
+/* 185 */	{ .name = "capset" },
+		{ .name = "sigaltstack_wrapper" },
+		{ .name = "sendfile" },
+		{ .name = "ni_syscall" },		/* getpmsg */
+		{ .name = "ni_syscall" },		/* putpmsg */
+/* 190 */	{ .name = "vfork_wrapper", .flags = AVOID_SYSCALL },
+		{ .name = "getrlimit" },
+		{ .name = "mmap2", .sanitise = sanitise_mmap },
+		{ .name = "truncate64" },
+		{ .name = "ftruncate64" },
+  /* 195 */	{ .name = "stat64" },
+		{ .name = "lstat64" },
+		{ .name = "fstat64" },
+		{ .name = "lchown" },
+		{ .name = "getuid" },
+/* 200 */	{ .name = "getgid" },
+		{ .name = "geteuid" },
+		{ .name = "getegid" },
+		{ .name = "setreuid" },
+		{ .name = "setregid" },
+/* 205 */	{ .name = "getgroups" },
+		{ .name = "setgroups" },
+		{ .name = "fchown" },
+		{ .name = "setresuid" },
+		{ .name = "getresuid" },
+/* 210 */	{ .name = "setresgid" },
+		{ .name = "getresgid" },
+		{ .name = "chown" },
+		{ .name = "setuid" },
+		{ .name = "setgid" },
+/* 215 */	{ .name = "setfsuid" },
+		{ .name = "setfsgid" },
+		{ .name = "getdents64" },
+		{ .name = "pivot_root", .flags = CAPABILITY_CHECK },
+		{ .name = "mincore" },
+/* 220 */	{ .name = "madvise" },
+		{ .name = "fcntl64" },
+		{ .name = "ni_syscall" }, /* TUX */
+		{ .name = "ni_syscall" },
+		{ .name = "gettid" },
+/* 225 */	{ .name = "readahead" },
+		{ .name = "setxattr" },
+		{ .name = "lsetxattr" },
+		{ .name = "fsetxattr" },
+		{ .name = "getxattr" },
+/* 230 */	{ .name = "lgetxattr" },
+		{ .name = "fgetxattr" },
+		{ .name = "listxattr" },
+		{ .name = "llistxattr" },
+		{ .name = "flistxattr" },
+/* 235 */	{ .name = "removexattr" },
+		{ .name = "lremovexattr" },
+		{ .name = "fremovexattr" },
+		{ .name = "tkill" },
+		{ .name = "sendfile64" },
+/* 240 */	{ .name = "futex" },
+		{ .name = "sched_setaffinity" },
+		{ .name = "sched_getaffinity" },
+		{ .name = "io_setup" },
+		{ .name = "io_destroy" },
+/* 245 */	{ .name = "io_getevents" },
+		{ .name = "io_submit" },
+		{ .name = "io_cancel" },
+		{ .name = "exit_group", .flags = AVOID_SYSCALL },
+		{ .name = "lookup_dcookie", .flags = CAPABILITY_CHECK  },
+/* 250 */	{ .name = "epoll_create" },
+		{ .name = "epoll_ctl" },
+		{ .name = "_epoll_wait" },
+		{ .name = "remap_file_pages" },
+		{ .name = "ni_syscall" },	/* sys_set_thread_area */
+/* 255 */	{ .name = "ni_syscall" },	/* sys_get_thread_area */
+		{ .name = "set_tid_address" },
+		{ .name = "timer_create" },
+		{ .name = "timer_settime" },
+		{ .name = "timer_gettime" },
+/* 260 */	{ .name = "timer_getoverrun" },
+		{ .name = "timer_delete" },
+		{ .name = "clock_settime" },
+		{ .name = "clock_gettime" },
+		{ .name = "clock_getres" },
+/* 265 */	{ .name = "clock_nanosleep" },
+		{ .name = "statfs64_wrapper" },
+		{ .name = "fstatfs64_wrapper" },
+		{ .name = "tgkill" },
+		{ .name = "utimes" },
+/* 270 */	{ .name = "arm_fadvise64_64" },
+		{ .name = "pciconfig_iobase" },
+		{ .name = "pciconfig_read" },
+		{ .name = "pciconfig_write" },
+		{ .name = "mq_open" },
+/* 275 */	{ .name = "mq_unlink" },
+		{ .name = "mq_timedsend" },
+		{ .name = "mq_timedreceive" },
+		{ .name = "mq_notify" },
+		{ .name = "mq_getsetattr" },
+/* 280 */	{ .name = "waitid" },
+		{ .name = "socket" },
+		{ .name = "bind" },
+		{ .name = "connect" },
+		{ .name = "listen" },
+/* 285 */	{ .name = "accept" },
+		{ .name = "getsockname" },
+		{ .name = "getpeername" },
+		{ .name = "socketpair" },
+		{ .name = "send" },
+/* 290 */	{ .name = "sendto" },
+		{ .name = "recv" },
+		{ .name = "recvfrom" },
+		{ .name = "shutdown" },
+		{ .name = "setsockopt" },
+/* 295 */	{ .name = "getsockopt" },
+		{ .name = "sendmsg" },
+		{ .name = "recvmsg" },
+		{ .name = "semop" },
+		{ .name = "semget" },
+/* 300 */	{ .name = "semctl" },
+		{ .name = "msgsnd" },
+		{ .name = "msgrcv" },
+		{ .name = "msgget" },
+		{ .name = "msgctl" },
+/* 305 */	{ .name = "shmat" },
+		{ .name = "shmdt" },
+		{ .name = "shmget" },
+		{ .name = "shmctl" },
+		{ .name = "add_key" },
+/* 310 */	{ .name = "request_key" },
+		{ .name = "keyctl" },
+		{ .name = "semtimedop", },
+/* vserver */	{ .name = "ni_syscall" },
+		{ .name = "ioprio_set" },
+/* 315 */	{ .name = "ioprio_get" },
+		{ .name = "inotify_init" },
+		{ .name = "inotify_add_watch" },
+		{ .name = "inotify_rm_watch" },
+		{ .name = "mbind" },
+/* 320 */	{ .name = "get_mempolicy" },
+		{ .name = "set_mempolicy" },
+		{ .name = "openat" },
+		{ .name = "mkdirat" },
+		{ .name = "mknodat" },
+/* 325 */	{ .name = "fchownat" },
+		{ .name = "futimesat" },
+		{ .name = "fstatat64" },
+		{ .name = "unlinkat" },
+		{ .name = "renameat" },
+/* 330 */	{ .name = "linkat" },
+		{ .name = "symlinkat" },
+		{ .name = "readlinkat" },
+		{ .name = "fchmodat" },
+		{ .name = "faccessat" },
+/* 335 */	{ .name = "pselect6" },
+		{ .name = "ppoll" },
+		{ .name = "unshare" },
+		{ .name = "set_robust_list", .sanitise = sanitise_set_robust_list },
+		{ .name = "get_robust_list" },
+/* 340 */	{ .name = "splice", .sanitise = sanitise_splice },
+		{ .name = "sync_file_range2", .sanitise = sanitise_sync_file_range },
+		{ .name = "tee", .sanitise = sanitise_tee },
+		{ .name = "vmsplice", .sanitise = sanitise_vmsplice },
+		{ .name = "move_pages" },
+/* 345 */	{ .name = "getcpu" },
+		{ .name = "epoll_pwait" },
+		{ .name = "kexec_load" },
+		{ .name = "utimensat" },
+		{ .name = "signalfd" },
+/* 350 */	{ .name = "timerfd_create" },
+		{ .name = "eventfd" },
+		{ .name = "fallocate" },
+		{ .name = "timerfd_settime" },
+		{ .name = "timerfd_gettime" },
+/* 355 */	{ .name = "signalfd4" },
+		{ .name = "eventfd2" },
+		{ .name = "epoll_create1" },
+		{ .name = "dup3" },
+		{ .name = "pipe2" },
+/* 360 */	{ .name = "inotify_init1" },
+		{ .name = "preadv" },
+		{ .name = "pwritev" },
+		{ .name = "rt_tgsigqueueinfo" },
+		{ .name = "perf_event_open" },
+};