Undo __systemcall fix; actual bug is in port.c
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Sun, 4 Jan 2009 08:17:46 +0000 (03:17 -0500)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Sun, 4 Jan 2009 08:17:46 +0000 (03:17 -0500)
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/syscall.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/port.c

index d30c2a9..3228730 100644 (file)
@@ -35,8 +35,8 @@ weak_alias (__syscall, syscall)
          .text;
 ENTRY (__systemcall)
        popl %edx               /* Pop return address into %edx.  */
-       popl %eax               /* Pop syscall number into %eax.  */
        popl %ecx               /* Pop sysret_t into %ecx.  */
+       popl %eax               /* Pop syscall number into %eax.  */
        pushl %edx              /* Push return address onto stack.  */
        int $0x91               /* Do the system call.  */
        pushl %ecx              /* Restore sysret_t on stack.  */
index 7366e5b..19c5bb4 100644 (file)
@@ -78,7 +78,7 @@ int port_sendn (int ports[], int errors[], unsigned int nent,
   int nevents = 0;
   for (unsigned int i = 0; i < nent; i += PORT_MAX_LIST)
     {
-      int errval = __systemcall (SYS_port, &ret, SYS_SUB_port_sendn |
+      int errval = __systemcall (&ret, SYS_port, SYS_SUB_port_sendn |
         PORT_SYS_NOPORT, &ports[i], &errors[i], MIN (nent - i, PORT_MAX_LIST),
         events, user);
       if (errval == 0 || errval == ETIME)
@@ -106,7 +106,7 @@ int port_getn (int port, port_event_t list[], unsigned int max,
       unsigned int *nget, struct timespec *timeout)
 {
   rval_t ret;
-  int errval = __systemcall (SYS_port, &ret, SYS_SUB_port_getn, port, list,
+  int errval = __systemcall (&ret, SYS_port, SYS_SUB_port_getn, port, list,
     max, *nget, timeout);
   if (errval == 0 || errval == ETIME)
     *nget = ret.rval1;