]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: unregister the SIGILL handler after ARM EABI test
authorQuan Yong Zhai <qyzhai@gmail.com>
Tue, 10 Apr 2012 19:05:22 +0000 (15:05 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 10 Apr 2012 19:05:22 +0000 (15:05 -0400)
Part of issue 3381

R=rsc, minux.ma, dave
CC=golang-dev
https://golang.org/cl/5969064

src/pkg/runtime/rt0_linux_arm.s

index e08cf907d95e3c346ddb843aaa4376eac21104bb..54ea860dc1c89defa8fdfdb0ce2698badbb953f2 100644 (file)
@@ -20,15 +20,23 @@ TEXT _rt0_arm_linux(SB),7,$-4
        MOVM.DB.W [R0-R3], (R13)
        MOVW    $4, R0 // SIGILL
        MOVW    R13, R1 // sa
-       MOVW    $0, R2 // old_sa
+       SUB     $16, R13
+       MOVW    R13, R2 // old_sa
        MOVW    $8, R3 // c
        MOVW    $174, R7 // sys_sigaction
        BL      oabi_syscall<>(SB)
-       ADD     $16, R13
+
        // do an EABI syscall
        MOVW    $20, R7 // sys_getpid
-       SWI     $0 // this will trigger SIGILL on OABI systems
-
+       SWI     $0 // this will trigger SIGILL on OABI systems
+       
+       MOVW    $4, R0  // SIGILL
+       MOVW    R13, R1 // sa
+       MOVW    $0, R2 // old_sa
+       MOVW    $8, R3 // c
+       MOVW    $174, R7 // sys_sigaction
+       SWI     $0 // restore signal handler
+       ADD     $32, R13
        B       _rt0_arm(SB)
 
 TEXT bad_abi<>(SB),7,$-4