summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2004-03-09 04:43:56 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2004-03-09 04:43:56 +0000
commit1d14763d8f3a0f1416a6d5d2a5bc2296da5da098 (patch)
treeb082d347bc386928cdb363a670582ca15d35dd60 /sys
parent4c7b770b1b9249c9fbea2e76526497a5492282d8 (diff)
faster cache flushing for fpu context (after save or emulation)
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/hppa/hppa/locore.S50
1 files changed, 20 insertions, 30 deletions
diff --git a/sys/arch/hppa/hppa/locore.S b/sys/arch/hppa/hppa/locore.S
index e29f05075e4..bf98f512881 100644
--- a/sys/arch/hppa/hppa/locore.S
+++ b/sys/arch/hppa/hppa/locore.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.S,v 1.121 2003/12/17 15:35:40 miod Exp $ */
+/* $OpenBSD: locore.S,v 1.122 2004/03/09 04:43:55 mickey Exp $ */
/*
* Copyright (c) 1998-2003 Michael Shalayeff
@@ -2226,21 +2226,16 @@ LEAF_ENTRY(fpu_save)
fstds,ma %fr29, 8(arg0)
fstds,ma %fr30, 8(arg0)
fstds %fr31, 0(arg0)
- fdc r0(arg0)
- ldo -56(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
- ldo -32(arg0), arg0
- fdc r0(arg0)
+ ldo -24(arg0), arg0
+ ldi -32, r25 /* gotta be free for all callers */
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
+ fdc,m r25(arg0)
bv r0(rp)
sync
EXIT(fpu_save)
@@ -2311,21 +2306,16 @@ ENTRY($fpu_emulate,320)
nop
mfctl cr30, arg0
+ ldi 32, r1
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
+ fdc,m r1(arg0)
fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
- ldo 32(arg0), arg0
- fdc r0(arg0)
+ sync
ldil L%fpemu_stack, r31
ldw R%fpemu_stack(r31), r31