summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/hppa/hppa/locore.S24
1 files changed, 13 insertions, 11 deletions
diff --git a/sys/arch/hppa/hppa/locore.S b/sys/arch/hppa/hppa/locore.S
index 282506ae7ba..4d5e834d829 100644
--- a/sys/arch/hppa/hppa/locore.S
+++ b/sys/arch/hppa/hppa/locore.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.S,v 1.128 2004/04/08 17:14:50 mickey Exp $ */
+/* $OpenBSD: locore.S,v 1.129 2004/04/21 22:25:31 mickey Exp $ */
/*
* Copyright (c) 1998-2004 Michael Shalayeff
@@ -1035,6 +1035,9 @@ ENTRY(TLABEL(excpt),0)
copy rp, r1
copy arg0, r8
mfctl cr30, r9
+#if (PCB_FPREGS+U_PCB) != 0
+ ldo PCB_FPREGS+U_PCB(r9), r9
+#endif
.import fpu_save, code
.call
bl fpu_save, rp
@@ -1051,13 +1054,11 @@ ENTRY(TLABEL(excpt),0)
ldw 8(r9), r1
bb,>=,n r1, 5, excpt_notrap /* HPPA_FPU_UNMPL not set */
- ldw 0(r9), r1
- depi 0, HPPA_FPU_T_POS, 1, r1
- stw r1, 0(r9)
- ldw 8(r9), r1
+ ldw 0(r9), r16
+ depi 0, HPPA_FPU_T_POS, 1, r16
.import $fpu_emulate, code
b $fpu_emulate
- fdc r0(r9)
+ stw r16, 0(r9)
excpt_notrap
sync
@@ -1127,26 +1128,27 @@ $fpusw_set
mfctl cr30, r9
ldw R%fpu_curpcb(r16), r16
- comb,=,n r16, r9, $fpusw_done
comb,=,n r16, r0, $fpusw_nosave
+ comb,=,n r16, r9, $fpusw_done
copy arg0, r17
copy rp, r1
- copy r16, arg0
+#if (PCB_FPREGS+U_PCB) != 0
+ ldo PCB_FPREGS+U_PCB(r16), r16
+#endif
.import fpu_save, code
.call
bl fpu_save, rp
- ldo PCB_FPREGS+U_PCB(arg0), arg0
+ copy r16, arg0
copy r1, rp
copy r17, arg0
$fpusw_nosave
-
/* count switches */
ldil L%fpu_csw, r1
ldw R%fpu_csw(r1), r16
- ldo 1(r16), r16
ldo 31*8+PCB_FPREGS+U_PCB(r9), r17
+ ldo 1(r16), r16
stw r16, R%fpu_csw(r1)
fldds,ma -8(r17), fr31