summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64/head.h
diff options
context:
space:
mode:
authorDavid S. Miller2006-02-09 11:52:44 +0100
committerDavid S. Miller2006-03-20 10:12:03 +0100
commitd82ace7dc4073b090a55b9740700e32b9a9ae302 (patch)
treed5aa8e10664b05bbfe31eacf95e2066c03cab102 /include/asm-sparc64/head.h
parent[SPARC64]: Sun4v cross-call sending support. (diff)
downloadkernel-qcow2-linux-d82ace7dc4073b090a55b9740700e32b9a9ae302.tar.gz
kernel-qcow2-linux-d82ace7dc4073b090a55b9740700e32b9a9ae302.tar.xz
kernel-qcow2-linux-d82ace7dc4073b090a55b9740700e32b9a9ae302.zip
[SPARC64]: Detect sun4v early in boot process.
We look for "SUNW,sun4v" in the 'compatible' property of the root OBP device tree node. Protect every %ver register access, to make sure it is not touched on sun4v, as %ver is hyperprivileged there. Lock kernel TLB entries using hypervisor calls instead of calls into OBP. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/head.h')
-rw-r--r--include/asm-sparc64/head.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-sparc64/head.h b/include/asm-sparc64/head.h
index ff76c0981b63..c4ac3e87aa50 100644
--- a/include/asm-sparc64/head.h
+++ b/include/asm-sparc64/head.h
@@ -24,6 +24,12 @@
#define PANTHER_IMPL 0x0019 /* Ultra-IV+ */
#define SERRANO_IMPL 0x0022 /* Ultra-IIIi+ */
+#define BRANCH_IF_SUN4V(tmp1,label) \
+ sethi %hi(is_sun4v), %tmp1; \
+ lduw [%tmp1 + %lo(is_sun4v)], %tmp1; \
+ brnz,pn %tmp1, label; \
+ nop
+
#define BRANCH_IF_CHEETAH_BASE(tmp1,tmp2,label) \
rdpr %ver, %tmp1; \
sethi %hi(__CHEETAH_ID), %tmp2; \