diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2006-11-19 11:08:56 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2006-11-19 11:08:56 +0000 |
commit | e55ed29b03c21de48fe1451997556e213487a80f (patch) | |
tree | b367c522e291073b08b56904f8543229909d8a15 /sys | |
parent | 13e7847365c008e5e8ecd4e985ee8d717ac80aab (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.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/mvme88k/mvme88k/eh.S | 30 |
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) /* |