]> git.saurik.com Git - apple/libplatform.git/blobdiff - src/setjmp/arm/_longjmp.s
libplatform-177.200.16.tar.gz
[apple/libplatform.git] / src / setjmp / arm / _longjmp.s
index 0bd11ab113d24f33e2464f87a9614a7483611557..3e12c55d6ce3ad158497d51f8bcd136c49e7388a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999-2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999-2018 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 #include <architecture/arm/asm_help.h>
 #include "_setjmp.h"
 #include <arm/arch.h>
+#include <os/tsd.h>
 
 /*     int _longjmp(jmp_buf env, int val); */
             
 ENTRY_POINT(__longjmp)
-       ldmia   r0!, { r4-r8, r10-r11, sp, lr }
+       movs    r12, r1
+       ldmia   r0!, { r1-r6, r8, r10-r11 }
        vldmia  r0, { d8-d15 }
-       movs    r0, r1
+       movs    r0, r12
        moveq   r0, #1
+       _OS_PTR_MUNGE_TOKEN(r12, r12)
+       _OS_PTR_UNMUNGE(r7, r1, r12) // fp
+       _OS_PTR_UNMUNGE(lr, r2, r12)
+       _OS_PTR_UNMUNGE(sp, r3, r12)
        bx              lr