diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-03-09 04:43:56 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-03-09 04:43:56 +0000 |
commit | 1d14763d8f3a0f1416a6d5d2a5bc2296da5da098 (patch) | |
tree | b082d347bc386928cdb363a670582ca15d35dd60 /sys | |
parent | 4c7b770b1b9249c9fbea2e76526497a5492282d8 (diff) |
faster cache flushing for fpu context (after save or emulation)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/hppa/hppa/locore.S | 50 |
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 |