]> Cypherpunks repositories - gostls13.git/commitdiff
arm: fix signal handler
authorRuss Cox <rsc@golang.org>
Mon, 25 Oct 2010 23:32:36 +0000 (01:32 +0200)
committerRuss Cox <rsc@golang.org>
Mon, 25 Oct 2010 23:32:36 +0000 (01:32 +0200)
R=ken2
CC=golang-dev
https://golang.org/cl/2670042

src/pkg/Makefile
src/pkg/runtime/linux/arm/defs.h
src/pkg/runtime/linux/arm/sys.s
src/pkg/runtime/linux/defs_arm.c

index 6c9bc18880347e20b69fa821f53cfbc4a6b474d1..34bd834030f3b9db5d69c3eea392fdfb5cda69dc 100644 (file)
@@ -207,8 +207,6 @@ ifeq ($(GOARCH),arm)
 NOTEST+=cmath        # software floating point (lack of) accuracy
 NOTEST+=math         # software floating point (lack of) accuracy
 NOTEST+=strconv      # software floating point (lack of) accuracy
-
-NOTEST+=os/signal    # crash
 endif
 
 TEST=\
index ff4ba3e7c948d38ed8eb9a64305fad81048c27cd..ff43d689a2e214c9fc9ff7990ed407a3196a0092 100644 (file)
@@ -45,19 +45,19 @@ enum {
        SIGIO = 0x1d,
        SIGPWR = 0x1e,
        SIGSYS = 0x1f,
-       FPE_INTDIV = 0x30001,
-       FPE_INTOVF = 0x30002,
-       FPE_FLTDIV = 0x30003,
-       FPE_FLTOVF = 0x30004,
-       FPE_FLTUND = 0x30005,
-       FPE_FLTRES = 0x30006,
-       FPE_FLTINV = 0x30007,
-       FPE_FLTSUB = 0x30008,
-       BUS_ADRALN = 0x30001,
-       BUS_ADRERR = 0x30002,
-       BUS_OBJERR = 0x30003,
-       SEGV_MAPERR = 0x30001,
-       SEGV_ACCERR = 0x30002,
+       FPE_INTDIV = 0x1,
+       FPE_INTOVF = 0x2,
+       FPE_FLTDIV = 0x3,
+       FPE_FLTOVF = 0x4,
+       FPE_FLTUND = 0x5,
+       FPE_FLTRES = 0x6,
+       FPE_FLTINV = 0x7,
+       FPE_FLTSUB = 0x8,
+       BUS_ADRALN = 0x1,
+       BUS_ADRERR = 0x2,
+       BUS_OBJERR = 0x3,
+       SEGV_MAPERR = 0x1,
+       SEGV_ACCERR = 0x2,
 };
 
 // Types
index 7d3317209a9ea24540f584186405157ce1fa209c..2554d326a4fd86f7d0ddfbf5466b5703b1cacf0d 100644 (file)
@@ -147,7 +147,7 @@ TEXT clone(SB),7,$0
        MOVW    $1234, R1
        CMP     R0, R1
        BEQ     2(PC)
-       B       abort(SB)
+       BL      abort(SB)
 
        MOVW    0(R13), m
        MOVW    4(R13), g
@@ -196,11 +196,6 @@ TEXT sigaltstack(SB),7,$0
 TEXT sigignore(SB),7,$0
        RET
 
-TEXT sigreturn(SB),7,$0
-       MOVW    R0, R0
-       B       abort(SB)
-       RET
-
 TEXT sigtramp(SB),7,$24
        MOVW    m_gsignal(m), g
        MOVW    R0, 4(R13)
index d30c5bec43f4179e50e2db67c55bf15b45e98657..a5897d6d0e5bd98010bcbf7da51557a6aa9d2d47 100644 (file)
@@ -68,22 +68,22 @@ enum {
        $SIGIO = SIGIO,
        $SIGPWR = SIGPWR,
        $SIGSYS = SIGSYS,
+
+       $FPE_INTDIV = FPE_INTDIV & 0xFFFF,
+       $FPE_INTOVF = FPE_INTOVF & 0xFFFF,
+       $FPE_FLTDIV = FPE_FLTDIV & 0xFFFF,
+       $FPE_FLTOVF = FPE_FLTOVF & 0xFFFF,
+       $FPE_FLTUND = FPE_FLTUND & 0xFFFF,
+       $FPE_FLTRES = FPE_FLTRES & 0xFFFF,
+       $FPE_FLTINV = FPE_FLTINV & 0xFFFF,
+       $FPE_FLTSUB = FPE_FLTSUB & 0xFFFF,
        
-       $FPE_INTDIV = FPE_INTDIV,
-       $FPE_INTOVF = FPE_INTOVF,
-       $FPE_FLTDIV = FPE_FLTDIV,
-       $FPE_FLTOVF = FPE_FLTOVF,
-       $FPE_FLTUND = FPE_FLTUND,
-       $FPE_FLTRES = FPE_FLTRES,
-       $FPE_FLTINV = FPE_FLTINV,
-       $FPE_FLTSUB = FPE_FLTSUB,
-       
-       $BUS_ADRALN = BUS_ADRALN,
-       $BUS_ADRERR = BUS_ADRERR,
-       $BUS_OBJERR = BUS_OBJERR,
+       $BUS_ADRALN = BUS_ADRALN & 0xFFFF,
+       $BUS_ADRERR = BUS_ADRERR & 0xFFFF,
+       $BUS_OBJERR = BUS_OBJERR & 0xFFFF,
        
-       $SEGV_MAPERR = SEGV_MAPERR,
-       $SEGV_ACCERR = SEGV_ACCERR,
+       $SEGV_MAPERR = SEGV_MAPERR & 0xFFFF,
+       $SEGV_ACCERR = SEGV_ACCERR & 0xFFFF,
 };
 
 typedef sigset_t $Sigset;