Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/arm32 Rearrange the beginning of cpu_switch() s...



details:   https://anonhg.NetBSD.org/src/rev/5d0a8f7a0323
branches:  trunk
changeset: 535242:5d0a8f7a0323
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Mon Aug 12 21:00:12 2002 +0000

description:
Rearrange the beginning of cpu_switch() slightly to reduce data-dep
stalls on StrongARM and XScale.

diffstat:

 sys/arch/arm/arm32/cpuswitch.S |  15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diffs (32 lines):

diff -r a01598098113 -r 5d0a8f7a0323 sys/arch/arm/arm32/cpuswitch.S
--- a/sys/arch/arm/arm32/cpuswitch.S    Mon Aug 12 20:56:07 2002 +0000
+++ b/sys/arch/arm/arm32/cpuswitch.S    Mon Aug 12 21:00:12 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpuswitch.S,v 1.10 2002/08/12 19:33:01 thorpej Exp $   */
+/*     $NetBSD: cpuswitch.S,v 1.11 2002/08/12 21:00:12 thorpej Exp $   */
 
 /*
  * Copyright (c) 1994-1998 Mark Brinicombe.
@@ -281,16 +281,15 @@
 
        /*
         * Get the current process and indicate that there is no longer
-        * a valid process (curproc = 0)
+        * a valid process (curproc = 0).  Zero the current PCB pointer
+        * while we're at it.
         */
        ldr     r7, Lcurproc
-       ldr     r1, [r7]
+       ldr     r6, Lcurpcb
        mov     r0, #0x00000000
-       str     r0, [r7]
-
-       /* Zero the pcb */
-       ldr     r7, Lcurpcb
-       str     r0, [r7]
+       ldr     r1, [r7]                /* r1 = curproc */
+       str     r0, [r7]                /* curproc = NULL */
+       str     r0, [r6]                /* curpcb = NULL */
 
        /* stash the old proc while we call functions */
        mov     r5, r1



Home | Main Index | Thread Index | Old Index