summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2006-11-19 11:08:56 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2006-11-19 11:08:56 +0000
commite55ed29b03c21de48fe1451997556e213487a80f (patch)
treeb367c522e291073b08b56904f8543229909d8a15
parent13e7847365c008e5e8ecd4e985ee8d717ac80aab (diff)
I completely broke pfsr_188_save_double when introducing per-cpuinfo
pfsr pointers seven months ago. This would work, but not in all fault cases; now it does the right thing.
-rw-r--r--sys/arch/mvme88k/mvme88k/eh.S30
1 files changed, 15 insertions, 15 deletions
diff --git a/sys/arch/mvme88k/mvme88k/eh.S b/sys/arch/mvme88k/mvme88k/eh.S
index a307e71a4be..0fbb193b838 100644
--- a/sys/arch/mvme88k/mvme88k/eh.S
+++ b/sys/arch/mvme88k/mvme88k/eh.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: eh.S,v 1.65 2006/11/18 22:53:11 miod Exp $ */
+/* $OpenBSD: eh.S,v 1.66 2006/11/19 11:08:55 miod Exp $ */
/*
* Copyright (c) 2006, Miodrag Vallat
*
@@ -135,27 +135,27 @@ ENTRY(pfsr_save_188_double)
* after reading them.
*/
ld TMP2, TMP, CI_PFSR_I0
- ld TMP2, TMP2, r0
- extu TMP3, TMP2, 3<16>
- bcnd.n ne0, TMP3, 1f
- st r0, TMP2, r0
- ld TMP2, TMP, CI_PFSR_I1
- ld TMP2, TMP2, r0
+ ld TMP3, TMP2, r0
+ extu TMP3, TMP3, 3<16>
+ bcnd ne0, TMP3, 1f
st r0, TMP2, r0
+ ld TMP2, TMP, CI_PFSR_I1
1:
- st TMP2, r31, REG_OFF(EF_IPFSR)
+ ld TMP3, TMP2, r0
+ st r0, TMP2, r0
+ st TMP3, r31, REG_OFF(EF_IPFSR)
ld TMP2, TMP, CI_PFSR_D0
- ld TMP2, TMP2, r0
- extu TMP3, TMP2, 3<16>
- bcnd.n ne0, TMP3, 2f
- st r0, TMP2, r0
- ld TMP2, TMP, CI_PFSR_D1
- ld TMP2, TMP2, r0
+ ld TMP3, TMP2, r0
+ extu TMP3, TMP3, 3<16>
+ bcnd ne0, TMP3, 2f
st r0, TMP2, r0
+ ld TMP2, TMP, CI_PFSR_D1
2:
+ ld TMP3, TMP2, r0
+ st r0, TMP2, r0
br.n _ASM_LABEL(pfsr_done)
- st TMP2, r31, REG_OFF(EF_DPFSR)
+ st TMP3, r31, REG_OFF(EF_DPFSR)
ENTRY(pfsr_save_188_straight)
/*