aboutsummaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-10-26 01:32:36 +0200
committerRuss Cox <rsc@golang.org>2010-10-26 01:32:36 +0200
commit079cbddbd83f996cfd5b79ea38c96c5061efa85b (patch)
tree8bbe48fd958165b3e91e645bc2c5244a9ccfd418 /src/pkg
parentb0ad7a42686bd75a7276f03dac084f907d59f83c (diff)
downloadgo-079cbddbd83f996cfd5b79ea38c96c5061efa85b.tar.xz
arm: fix signal handler
R=ken2 CC=golang-dev https://golang.org/cl/2670042
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/Makefile2
-rw-r--r--src/pkg/runtime/linux/arm/defs.h26
-rw-r--r--src/pkg/runtime/linux/arm/sys.s7
-rw-r--r--src/pkg/runtime/linux/defs_arm.c28
4 files changed, 28 insertions, 35 deletions
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;