Assert to catch 5 args to sysenter
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 9 Aug 2010 19:18:10 +0000 (12:18 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:50 +0000 (17:35 -0700)
It's more likely that we'll accidentally send five args to sysenter than
actually fix our sysenter so we can have more args or come up with some
other scheme for syscalls with lots of arguments.

kern/arch/i686/ros/bits/syscall.h

index 92a121e..6aed514 100644 (file)
@@ -8,12 +8,14 @@
 #include <sys/types.h>
 #include <stdint.h>
 #include <ros/common.h>
+#include <assert.h>
 
 // TODO: fix sysenter to take all 5 params
 static inline intreg_t __syscall_sysenter(uint16_t num, intreg_t a1,
                                     intreg_t a2, intreg_t a3,
                                     intreg_t a4, intreg_t a5, intreg_t* err_loc)
 {
+       assert(!a5);    /* sysenter doesn't handle 5 arguments yet */
        // The kernel clobbers ecx and edx => put them in clobber list.
        // ebx is handled specially because of a glibc register
        // allocation problem (not enough registers).