]> sourceware.org Git - newlib-cygwin.git/commitdiff
* gendef (_sigbe/x86_64): Fix typo in .seh_proc pseudo-op.
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 27 Mar 2014 19:35:55 +0000 (19:35 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 27 Mar 2014 19:35:55 +0000 (19:35 +0000)
(setjmp/x86_64): Drop storing ExceptionList pointer in jmp_buf->Frame.
Drop comment.  Store likely frame in rdx.  Jump to __setjmpex.
(__setjmpex): New function providing setjmp functionality.  Fetch
jmp_buf->Frame from rdx, like MSVCRT setjmpex.
(__sjfault/x86_64): Store rdx content in jmp_buf->Frame.
(__ljfault/x86_64): Don't restore ExceptionList pointer.
(longjmp/x86_64): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/gendef

index c61777cc8c7bba503cdfe6a4001948dbb9cf88ab..188542a6589a353900379744ccb351f9e72b61e2 100644 (file)
@@ -1,3 +1,14 @@
+2014-03-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * gendef (_sigbe/x86_64): Fix typo in .seh_proc pseudo-op.
+       (setjmp/x86_64): Drop storing ExceptionList pointer in jmp_buf->Frame.
+       Drop comment.  Store likely frame in rdx.  Jump to __setjmpex.
+       (__setjmpex): New function providing setjmp functionality.  Fetch
+       jmp_buf->Frame from rdx, like MSVCRT setjmpex.
+       (__sjfault/x86_64): Store rdx content in jmp_buf->Frame.
+       (__ljfault/x86_64): Don't restore ExceptionList pointer.
+       (longjmp/x86_64): Ditto.
+
 2014-03-19  Christopher Faylor  <me.cygwin2014@cgf.cx>
 
        * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Actually pass ioctl
index a7c036f6164f13ea15e15e8104e9fef22fd25982..cef34a5ab08fe2c0b96b0ff27f77767ea33393cb 100755 (executable)
@@ -164,7 +164,7 @@ _sigfe:                                             # stack is aligned on entry!
        jmp     *%rax                           # and jmp to it
        .seh_endproc
 
-       .seh_proc _sigfe
+       .seh_proc _sigbe
 _sigbe:                                                # return here after cygwin syscall
                                                # stack is aligned on entry!
        .seh_endprologue
@@ -589,10 +589,17 @@ sub longjmp {
        .seh_proc setjmp
 setjmp:
        .seh_endprologue
-       # We use the Windows jmp_buf layout.  Store ExceptionList in Frame.
+       leaq    8(%rsp),%rdx
+       jmp     __setjmpex
+       .seh_endproc
+
+       .globl  __setjmpex
+       .seh_proc __setjmpex
+__setjmpex:
+       .seh_endprologue
+       # We use the Windows jmp_buf layout.
        # Store alternative stackptr in Spare.
-       movq    %gs:0,%r10
-       movq    %r10,(%rcx)
+       movq    %rdx,(%rcx)
        movq    %rbx,0x8(%rcx)
        movq    %rsp,0x10(%rcx)
        movq    %rbp,0x18(%rcx)
@@ -631,8 +638,7 @@ setjmp:
 __sjfault:
        .seh_endprologue
        # Like setjmp, just w/o storing the alternate stackptr.
-       movq    %gs:0,%r10
-       movq    %r10,(%rcx)
+       movq    %rdx,(%rcx)
        movq    %rbx,0x8(%rcx)
        movq    %rsp,0x10(%rcx)
        movq    %rbp,0x18(%rcx)
@@ -662,8 +668,6 @@ __sjfault:
        .globl  __ljfault
        .seh_proc __ljfault
 __ljfault:
-       movq    (%rcx),%r10
-       movq    %r10,%gs:0
        movq    0x8(%rcx),%rbx
        movq    0x10(%rcx),%rsp
        movq    0x18(%rcx),%rbp
@@ -708,8 +712,6 @@ longjmp:
        decl    $tls::stacklock(%r11)           # relinquish lock
        xorl    %r10d,%r10d
        movl    %r10d,$tls::incyg(%r11)         # we're definitely not in cygwin anymore
-       movq    (%rcx),%r10
-       movq    %r10,%gs:0
        movq    0x8(%rcx),%rbx
        movq    0x10(%rcx),%rsp
        movq    0x18(%rcx),%rbp
This page took 0.035351 seconds and 5 git commands to generate.