]> Zhao Yanbai Git Server - minix.git/commitdiff
Fix by Joren for setjmp to not clobber %ebx.
authorBen Gras <ben@minix3.org>
Wed, 2 Aug 2006 12:03:02 +0000 (12:03 +0000)
committerBen Gras <ben@minix3.org>
Wed, 2 Aug 2006 12:03:02 +0000 (12:03 +0000)
lib/gnu/rts/_setjmp.gs

index 60b86cab4ad80e66999ea948b86fc44d350dc6c7..e9e76034f8a59f986d6795a1b9328e7ae0e72957 100644 (file)
@@ -11,7 +11,6 @@ ___setjmp:
        movl    %ebx, 8(%eax)           # save program counter
        movl    %esp, 12(%eax)          # save stack pointer
        movl    %ebp, 16(%eax)          # save frame pointer
-       movl    20(%eax), %ebx          # restore ebx
        movl    %ecx, 24(%eax)
        movl    %edx, 28(%eax)
        movl    %esi, 32(%eax)
@@ -19,6 +18,9 @@ ___setjmp:
        
        movl    8(%esp), %ebx           # save mask?
        movl    %ebx, 0(%eax)           # save whether to restore mask
+
+       pushl   20(%eax)                # save ebx
+
        testl   %ebx, %ebx
        jz              1f
        leal    4(%eax), %ebx           # pointer to sigset_t
@@ -26,6 +28,7 @@ ___setjmp:
        call    ___newsigset            # save mask     
        addl    $4, %esp
 1:
+       popl    %ebx
        movl    $0, %eax
        ret