summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2007-10-24 21:02:01 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2007-10-24 21:02:01 +0000
commitba6255ef84dfb695e7683ea5e76e03ac6bf4689a (patch)
tree97200e389135e5f0c5a5d11167bd789204017e79 /sys/arch
parent5ee512f1ad938e9fec81934f52689f74ddce84d0 (diff)
Rely on 16 byte pcb alignment, and use double loads and stores during
context switches. Should have been commited ages ago (when pcb alignment was fixed). No functional change.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/m88k/m88k/process.S62
1 files changed, 21 insertions, 41 deletions
diff --git a/sys/arch/m88k/m88k/process.S b/sys/arch/m88k/m88k/process.S
index a0d4eec97d4..b124cd474be 100644
--- a/sys/arch/m88k/m88k/process.S
+++ b/sys/arch/m88k/m88k/process.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: process.S,v 1.18 2007/10/13 12:54:45 miod Exp $ */
+/* $OpenBSD: process.S,v 1.19 2007/10/24 21:02:00 miod Exp $ */
/*
* Copyright (c) 1996 Nivas Madhur
* All rights reserved.
@@ -73,30 +73,20 @@ ENTRY(cpu_switchto)
ld r10, r10, CI_CURPCB
/* restore from the current context */
- ld r2, r10, PCB_FCR62
- ld r3, r10, PCB_FCR63
+ ld.d r2, r10, PCB_FCR62
fstcr r2, fcr62
fstcr r3, fcr63
- ld r15, r10, PCB_R15
- ld r16, r10, PCB_R16
- ld r17, r10, PCB_R17
- ld r18, r10, PCB_R18
- ld r19, r10, PCB_R19
- ld r20, r10, PCB_R20
- ld r21, r10, PCB_R21
- ld r22, r10, PCB_R22
- ld r23, r10, PCB_R23
- ld r24, r10, PCB_R24
- ld r25, r10, PCB_R25
- ld r26, r10, PCB_R26
- ld r27, r10, PCB_R27
- ld r28, r10, PCB_R28
- ld r29, r10, PCB_R29
- ld r30, r10, PCB_R30 /* restore frame pointer & stack */
- ld r31, r10, PCB_SP
ld r1, r10, PCB_PC
+ ld.d r14, r10, PCB_R14
+ ld.d r16, r10, PCB_R16
+ ld.d r18, r10, PCB_R18
+ ld.d r20, r10, PCB_R20
+ ld.d r22, r10, PCB_R22
+ ld.d r24, r10, PCB_R24
+ ld.d r26, r10, PCB_R26
+ ld.d r28, r10, PCB_R28
jmp.n r1
- ld r14, r10, PCB_R14
+ ld.d r30, r10, PCB_R30 /* restore frame pointer & stack */
/*
* savectx(pcb)
@@ -108,30 +98,20 @@ ENTRY(savectx)
*/
st r1, r2, PCB_PC /* save return address */
ASLOCAL(__savectx)
- st r14, r2, PCB_R14
- st r15, r2, PCB_R15
- st r16, r2, PCB_R16
- st r17, r2, PCB_R17
- st r18, r2, PCB_R18
- st r19, r2, PCB_R19
- st r20, r2, PCB_R20
- st r21, r2, PCB_R21
- st r22, r2, PCB_R22
- st r23, r2, PCB_R23
- st r24, r2, PCB_R24
- st r25, r2, PCB_R25
- st r26, r2, PCB_R26
- st r27, r2, PCB_R27
- st r28, r2, PCB_R28
- st r29, r2, PCB_R29
- st r30, r2, PCB_R30 /* save frame pointer & stack pointer */
- st r31, r2, PCB_SP
+ st.d r14, r2, PCB_R14
+ st.d r16, r2, PCB_R16
+ st.d r18, r2, PCB_R18
+ st.d r20, r2, PCB_R20
+ st.d r22, r2, PCB_R22
+ st.d r24, r2, PCB_R24
+ st.d r26, r2, PCB_R26
+ st.d r28, r2, PCB_R28
+ st.d r30, r2, PCB_R30 /* save frame pointer & stack pointer */
/*
* Save FP state.
*/
fldcr r4, fcr62
fldcr r5, fcr63
- st r4, r2, PCB_FCR62
jmp.n r1
- st r5, r2, PCB_FCR63
+ st.d r4, r2, PCB_FCR62