From: Russ Cox Date: Mon, 25 Oct 2010 23:32:36 +0000 (+0200) Subject: arm: fix signal handler X-Git-Tag: weekly.2010-10-27~29 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=079cbddbd83f996cfd5b79ea38c96c5061efa85b;p=gostls13.git arm: fix signal handler R=ken2 CC=golang-dev https://golang.org/cl/2670042 --- diff --git a/src/pkg/Makefile b/src/pkg/Makefile index 6c9bc18880..34bd834030 100644 --- a/src/pkg/Makefile +++ b/src/pkg/Makefile @@ -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=\ diff --git a/src/pkg/runtime/linux/arm/defs.h b/src/pkg/runtime/linux/arm/defs.h index ff4ba3e7c9..ff43d689a2 100644 --- a/src/pkg/runtime/linux/arm/defs.h +++ b/src/pkg/runtime/linux/arm/defs.h @@ -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 diff --git a/src/pkg/runtime/linux/arm/sys.s b/src/pkg/runtime/linux/arm/sys.s index 7d3317209a..2554d326a4 100644 --- a/src/pkg/runtime/linux/arm/sys.s +++ b/src/pkg/runtime/linux/arm/sys.s @@ -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) diff --git a/src/pkg/runtime/linux/defs_arm.c b/src/pkg/runtime/linux/defs_arm.c index d30c5bec43..a5897d6d0e 100644 --- a/src/pkg/runtime/linux/defs_arm.c +++ b/src/pkg/runtime/linux/defs_arm.c @@ -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;