aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64/tsb.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 18:32:44 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:11:21 -0800
commit4753eb2ac7022b999e5e484f1a5dc001dba22bd3 (patch)
tree138321ebd3b3c3aeb99517ec5158a65f556da774 /include/asm-sparc64/tsb.h
parent[SPARC64]: Kill {save,restore}_alternate_globals() (diff)
downloadlinux-dev-4753eb2ac7022b999e5e484f1a5dc001dba22bd3.tar.xz
linux-dev-4753eb2ac7022b999e5e484f1a5dc001dba22bd3.zip
[SPARC64]: Fix incorrect TSB lock bit handling.
The TSB_LOCK_BIT define is actually a special value shifted down by 32-bits for the assembler code macros. In C code, this isn't what we want. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/tsb.h')
-rw-r--r--include/asm-sparc64/tsb.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/asm-sparc64/tsb.h b/include/asm-sparc64/tsb.h
index 1f93b7d8cdbc..09ab3aaa8d20 100644
--- a/include/asm-sparc64/tsb.h
+++ b/include/asm-sparc64/tsb.h
@@ -47,13 +47,14 @@
* possible solution is to use RCU for the freeing of the TSB.
*/
-#define TSB_TAG_LOCK (1 << (47 - 32))
+#define TSB_TAG_LOCK_BIT 47
+#define TSB_TAG_LOCK_HIGH (1 << (TSB_TAG_LOCK_BIT - 32))
#define TSB_MEMBAR membar #StoreStore
#define TSB_LOCK_TAG(TSB, REG1, REG2) \
99: lduwa [TSB] ASI_N, REG1; \
- sethi %hi(TSB_TAG_LOCK), REG2;\
+ sethi %hi(TSB_TAG_LOCK_HIGH), REG2;\
andcc REG1, REG2, %g0; \
bne,pn %icc, 99b; \
nop; \