The `too much stuff, just check the ChangeLog' update
diff --git a/system.c b/system.c
index a99d445..218e137 100644
--- a/system.c
+++ b/system.c
@@ -68,9 +68,7 @@
 #include <asm/cachectl.h>
 #endif
 
-#ifdef LINUX
 #include <linux/sysctl.h>
-#endif
 
 static struct xlat mount_flags[] = {
 	{ MS_RDONLY,	"MS_RDONLY"	},
@@ -158,6 +156,50 @@
 	return 0;
 }
 
+#include <linux/reboot.h>
+static struct xlat bootflags1[] = {
+	{ LINUX_REBOOT_MAGIC1,	"LINUX_REBOOT_MAGIC1"	},
+	{ 0,			NULL			},
+};
+
+static struct xlat bootflags2[] = {
+	{ LINUX_REBOOT_MAGIC2,	"LINUX_REBOOT_MAGIC2"	},
+	{ LINUX_REBOOT_MAGIC2A,	"LINUX_REBOOT_MAGIC2A"	},
+	{ LINUX_REBOOT_MAGIC2B,	"LINUX_REBOOT_MAGIC2B"	},
+	{ 0,			NULL			},
+};
+
+static struct xlat bootflags3[] = {
+	{ LINUX_REBOOT_CMD_CAD_OFF,	"LINUX_REBOOT_CMD_CAD_OFF"	},
+	{ LINUX_REBOOT_CMD_RESTART,	"LINUX_REBOOT_CMD_RESTART"	},
+	{ LINUX_REBOOT_CMD_HALT,	"LINUX_REBOOT_CMD_HALT"		},
+	{ LINUX_REBOOT_CMD_CAD_ON,	"LINUX_REBOOT_CMD_CAD_ON"	},
+	{ LINUX_REBOOT_CMD_POWER_OFF,	"LINUX_REBOOT_CMD_POWER_OFF"	},
+	{ LINUX_REBOOT_CMD_RESTART2,	"LINUX_REBOOT_CMD_RESTART2"	},
+	{ 0,				NULL				},
+};
+
+int
+sys_reboot(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		if (!printflags(bootflags1, tcp->u_arg[0]))
+			tprintf("LINUX_REBOOT_MAGIC???");
+		tprintf(", ");
+		if (!printflags(bootflags2, tcp->u_arg[1]))
+			tprintf("LINUX_REBOOT_MAGIC???");
+		tprintf(", ");
+		if (!printflags(bootflags3, tcp->u_arg[2]))
+			tprintf("LINUX_REBOOT_CMD_???");
+		if (tcp->u_arg[2] == LINUX_REBOOT_CMD_RESTART2) {
+			tprintf(", ");
+			printstr(tcp, tcp->u_arg[3], -1);
+		}
+	}
+	return 0;
+}
+
 #ifdef M68K
 static struct xlat cacheflush_scope[] = {
 #ifdef FLUSH_SCOPE_LINE
@@ -1409,14 +1451,14 @@
 			if ((arg0 = malloc(sizeof(*arg0))) == NULL) {
 				fprintf(stderr, "sys_capget: no memory\n");
 				tprintf("%#lx, %#lx", tcp->u_arg[0], tcp->u_arg[1]);
-				return;l
+				return -1;
 			}
 		}
 		if (!arg1) {
 			if ((arg1 = malloc(sizeof(*arg1))) == NULL) {
 				fprintf(stderr, "sys_capget: no memory\n");
 				tprintf("%#lx, %#lx", tcp->u_arg[0], tcp->u_arg[1]);
-				return;
+				return -1;
 			}
 		}
 
@@ -1461,14 +1503,14 @@
 			if ((arg0 = malloc(sizeof(*arg0))) == NULL) {
 				fprintf(stderr, "sys_capset: no memory\n");
 				tprintf("%#lx, %#lx", tcp->u_arg[0], tcp->u_arg[1]);
-				return;l
+				return -1;
 			}
 		}
 		if (!arg1) {
 			if ((arg1 = malloc(sizeof(*arg1))) == NULL) {
 				fprintf(stderr, "sys_capset: no memory\n");
 				tprintf("%#lx, %#lx", tcp->u_arg[0], tcp->u_arg[1]);
-				return;
+				return -1;
 			}
 		}