PERFORCE change 97306 for review
Kip Macy
kmacy at FreeBSD.org
Tue May 16 23:44:42 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=97306
Change 97306 by kmacy at kmacy_storage:sun4v_rwbuf on 2006/05/16 23:44:07
simplify bucket locking
export hash_bucket locking function
don't trash PCPU_REG when notifying of a duplicate TSB update
Affected files ...
.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#51 edit
Differences ...
==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#51 (text+ko) ====
@@ -1,4 +1,4 @@
-/*-
+/*
* Copyright (c) 2006 Kip Macy
* All rights reserved.
*
@@ -1338,21 +1338,20 @@
#define LOADLOAD #LoadLoad
#define LOADSTORE #LoadStore
#define STORESTORE #StoreStore
-
+
#define THE_LOCK_ENTER(addr, lock_bit, oldval, newval, label1) \
mov 1, lock_bit ; \
add addr, 8, addr ; \
sllx lock_bit, 56, lock_bit ; \
label1: ; \
ldxa [addr]%asi, oldval; \
- andcc %l7, lock_bit, %g0 ; \
- bnz,pn %xcc, label1 ## b ; \
- or oldval, lock_bit, newval; \
+ or oldval, lock_bit, newval; \
+ andn oldval, lock_bit, oldval; \
casxa [addr]%asi, oldval, newval; \
- cmp oldval, newval ; \
- bne,pn %icc, label1 ## b ; \
+ cmp newval, oldval ; \
+ bne,pn %xcc, label1 ## b ; \
membar LOADLOAD ; \
- sub addr, 8, addr ;
+ sub addr, 8, addr ;
#define THE_LOCK_EXIT(addr, lock_bit, tmp)\
membar LOADSTORE | STORESTORE ; \
@@ -1382,7 +1381,30 @@
add pcpu, cansave, cansave ; \
RESTORE_LOCALS_ASI(cansave) ; \
label2:
-
+
+ENTRY(hash_bucket_lock)
+! MAGIC_TRAP_ON
+ wr %g0, ASI_N, %asi
+ rdpr %pstate, %o1
+ and %o1, PSTATE_INTR_DISABLE, %o2
+ wrpr %o2, %pstate
+ THE_LOCK_ENTER(%o0, %o3, %o4, %o5, 1)
+ mov %o1, %o0
+ retl
+ nop
+END(hash_bucket_lock)
+
+
+ENTRY(hash_bucket_unlock)
+ mov 1, %g2
+ wr %g0, ASI_N, %asi
+ sllx %g2, 56, %g2
+ THE_LOCK_EXIT(%o0, %g2, %g3)
+ wrpr %o1, %pstate
+ retl
+ nop
+END(hash_bucket_unlock)
+
! %g3==trap type
! %g4==fault type (if data miss)
@@ -1575,12 +1597,10 @@
! is storing same data
#else
mov %o0, %g1
- mov %o5, %g7
- PUTCHAR(0x5a)
- PUTCHAR(0x5a)
+ mov %o5, %g4
PUTCHAR(0x5a)
mov %g1, %o0
- mov %g7, %o5
+ mov %g4, %o5
MAGIC_TRAP_ON; MAGIC_TRAP_OFF
#endif
12:
More information about the p4-projects
mailing list