Fix some cfa magic
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Sun, 31 Aug 2008 01:03:53 +0000 (01:03 +0000)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Sun, 31 Aug 2008 01:03:53 +0000 (01:03 +0000)
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/getcontext.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/swapcontext.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/syscall.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/vfork.S

index 2b789ff..e989d3e 100644 (file)
@@ -31,10 +31,9 @@ ENTRY(__getcontext)
        movl 0(%esp), %eax
 
        /* push ucp, subcall number, and return address */
-       pushl %ecx
-       pushl $SYS_SUB_getcontext
-       pushl %eax
-       cfi_adjust_cfa_offset (12);
+       pushl %ecx; cfi_adjust_cfa_offset (4)
+       pushl $SYS_SUB_getcontext; cfi_adjust_cfa_offset (4)
+       pushl %eax; cfi_adjust_cfa_offset (4)
 
        /* call context syscall */
        DO_CALL(context, 2)
@@ -43,16 +42,14 @@ ENTRY(__getcontext)
        jnb 1f;
 
        /* pop args from stack */
-       addl $12, %esp
-       cfi_adjust_cfa_offset (-12);
+       addl $12, %esp; cfi_adjust_cfa_offset (-12)
 
        /* Jump to error label.  */
        jmp SYSCALL_ERROR_LABEL;
 
 1:
        /* pop args from stack */
-       addl $12, %esp
-       cfi_adjust_cfa_offset (-12);
+       addl $12, %esp; cfi_adjust_cfa_offset (-12);
 
        /* load ucp (arg) into %ecx */
        movl 4(%esp), %ecx
index a61be26..a7b9fe1 100644 (file)
@@ -30,10 +30,9 @@ ENTRY(__swapcontext)
     movl 0(%esp), %eax
 
     /* push ucp, subcall number, and return address */
-    pushl %ecx
-    pushl $SYS_SUB_getcontext
-    pushl %eax
-       cfi_adjust_cfa_offset (12);
+    pushl %ecx; cfi_adjust_cfa_offset (4)
+    pushl $SYS_SUB_getcontext; cfi_adjust_cfa_offset (4)
+    pushl %eax; cfi_adjust_cfa_offset (4)
 
     /* call context syscall */
     DO_CALL(context, 2)
@@ -42,16 +41,14 @@ ENTRY(__swapcontext)
        jnb 1f;
 
        /* pop args from stack */
-       addl $12, %esp
-       cfi_adjust_cfa_offset (-12);
+       addl $12, %esp; cfi_adjust_cfa_offset (-12);
 
        /* Jump to error label.  */
        jmp SYSCALL_ERROR_LABEL;
 
 1:
     /* pop args from stack */
-    addl $12, %esp
-       cfi_adjust_cfa_offset (-12);
+    addl $12, %esp; cfi_adjust_cfa_offset (-12);
 
     /* load ucp (arg) into %ecx */
     movl 4(%esp), %ecx
@@ -72,15 +69,13 @@ ENTRY(__swapcontext)
     movl 8(%esp), %edx
 
     /* push ucp */
-    pushl %edx
-       cfi_adjust_cfa_offset (4);
+    pushl %edx; cfi_adjust_cfa_offset (4);
 
     /* call __setcontext */
     call __setcontext
 
     /* pop ucp */
-    addl $4, %esp
-       cfi_adjust_cfa_offset (-4);
+    addl $4, %esp; cfi_adjust_cfa_offset (-4)
 
     /* __setcontext sets the return (%eax) */
 L(pseudo_end):
index efd4038..cb2dafe 100644 (file)
 
          .text;
 ENTRY (__syscall)
-       popl %ecx       /* Pop return address into %ecx.  */
-       popl %eax       /* Pop syscall number into %eax. */
-       pushl %ecx      /* Push back return adderss.  */
-       cfi_adjust_cfa_offset (-4)
+       popl %ecx; cfi_adjust_cfa_offset (4)    /* Pop return address into %ecx.  */
+       popl %eax; cfi_adjust_cfa_offset (4)    /* Pop syscall number into %eax. */
+       pushl %ecx; cfi_adjust_cfa_offset (4)   /* Push back return adderss.  */
        int $0x91       /* Do the system call.  */
-       pushl %ecx      /* Push back return address.  */
-       cfi_adjust_cfa_offset (4)
+       pushl %ecx; cfi_adjust_cfa_offset (4)   /* Push back return address.  */
        jb SYSCALL_ERROR_LABEL; /* Jump to error handler if error.  */
 
 L(pseudo_end):
@@ -36,16 +34,15 @@ weak_alias (__syscall, syscall)
 
          .text;
 ENTRY (__systemcall)
-       popl %edx               /* Pop return address into %edx.  */
-       popl %ecx               /* Pop sysret_t into %ecx.  */
-       popl %eax               /* Load syscall number into %eax.  */
-       pushl %edx              /* Push return address onto stack.  */
+       popl %edx; cfi_adjust_cfa_offset (4)    /* Pop return address into %edx.  */
+       popl %ecx; cfi_adjust_cfa_offset (4)    /* Pop sysret_t into %ecx.  */
+       popl %eax; cfi_adjust_cfa_offset (4)    /* Load syscall number into %eax.  */
+       pushl %edx; cfi_adjust_cfa_offset (4)   /* Push return address onto stack.  */
        cfi_adjust_cfa_offset (-8)
        int $0x91               /* Do the system call.  */
-       pushl %ecx              /* Restore sysret_t on stack.  */
+       pushl %ecx; cfi_adjust_cfa_offset (4)   /* Restore sysret_t on stack.  */
        movl 4(%esp), %edx      /* Save return address into %edx.  */
-       pushl %edx              /* Restore return address on stack.  */
-       cfi_adjust_cfa_offset (8)
+       pushl %edx; cfi_adjust_cfa_offset (4)   /* Restore return address on stack.  */
        jb 1f   /* Jump to error handler if error.  */
        movl %eax, 0(%ecx)      /* Set first 4 bytes of sysret_t.  */
        movl %edx, 4(%ecx)      /* Set second 4 bytes of sysret_t.  */
index 4e3b828..b043ddd 100644 (file)
@@ -25,10 +25,9 @@ ENTRY (__vfork)
     popl %ecx; cfi_adjust_cfa_offset (-4);
 
     /* call vforkx(0) */
-    pushl $0
-    pushl $SYS_SUB_vforkx
-    pushl %ecx
-       cfi_adjust_cfa_offset (12);
+    pushl $0; cfi_adjust_cfa_offset (4)
+    pushl $SYS_SUB_vforkx; cfi_adjust_cfa_offset (4)
+    pushl %ecx; cfi_adjust_cfa_offset (4)
     DO_CALL (forksys, 1)
     jb 2f