diff -r 67d980fcbc7a src/arch/x86/linux/syscalls.cc
--- a/src/arch/x86/linux/syscalls.cc	Sat Oct 24 10:53:59 2009 -0700
+++ b/src/arch/x86/linux/syscalls.cc	Sat Oct 24 15:56:59 2009 -0400
@@ -244,7 +244,7 @@
     /*  13 */ SyscallDesc("rt_sigaction", ignoreFunc),
     /*  14 */ SyscallDesc("rt_sigprocmask", unimplementedFunc),
     /*  15 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
-    /*  16 */ SyscallDesc("ioctl", unimplementedFunc),
+    /*  16 */ SyscallDesc("ioctl", ioctlFunc<X86Linux64>),
     /*  17 */ SyscallDesc("pread64", unimplementedFunc),
     /*  18 */ SyscallDesc("pwrite64", unimplementedFunc),
     /*  19 */ SyscallDesc("readv", unimplementedFunc),
@@ -561,7 +561,7 @@
     /*  51 */ SyscallDesc("acct", unimplementedFunc),
     /*  52 */ SyscallDesc("umount2", unimplementedFunc),
     /*  53 */ SyscallDesc("lock", unimplementedFunc),
-    /*  54 */ SyscallDesc("ioctl", unimplementedFunc),
+    /*  54 */ SyscallDesc("ioctl", ioctlFunc<X86Linux32>),
     /*  55 */ SyscallDesc("fcntl", unimplementedFunc),
     /*  56 */ SyscallDesc("mpx", unimplementedFunc),
     /*  57 */ SyscallDesc("setpgid", unimplementedFunc),
diff -r 67d980fcbc7a src/sim/syscall_emul.hh
--- a/src/sim/syscall_emul.hh	Sat Oct 24 10:53:59 2009 -0700
+++ b/src/sim/syscall_emul.hh	Sat Oct 24 15:56:59 2009 -0400
@@ -492,20 +492,11 @@
     }
 
     switch (req) {
-      case OS::TIOCISATTY_:
-      case OS::TIOCGETP_:
-      case OS::TIOCSETP_:
-      case OS::TIOCSETN_:
-      case OS::TIOCSETC_:
-      case OS::TIOCGETC_:
-      case OS::TIOCGETS_:
-      case OS::TIOCGETA_:
-      case OS::TCSETAW_:
-        return -ENOTTY;
 
       default:
-        fatal("Unsupported ioctl call: ioctl(%d, 0x%x, ...) @ 0x%llx\n",
-              fd, req, tc->readPC());
+        warn("Unsupported ioctl call: ioctl(%d, 0x%x, ...) @ 0x%llx\n",
+                                      fd, req, tc->readPC());
+        return -ENOTTY;
     }
 }
 
