aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-09 05:52:44 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:03 -0500
commitd82ace7dc4073b090a55b9740700e32b9a9ae302 (patch)
treed5aa8e10664b05bbfe31eacf95e2066c03cab102 /include
parent1d2f1f90a1e004b0c1b8a73ed4394a93f09104b3 (diff)
[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')
-rw-r--r--include/asm-sparc64/head.h6
-rw-r--r--include/asm-sparc64/oplib.h3
2 files changed, 9 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 @@
24#define PANTHER_IMPL 0x0019 /* Ultra-IV+ */ 24#define PANTHER_IMPL 0x0019 /* Ultra-IV+ */
25#define SERRANO_IMPL 0x0022 /* Ultra-IIIi+ */ 25#define SERRANO_IMPL 0x0022 /* Ultra-IIIi+ */
26 26
27#define BRANCH_IF_SUN4V(tmp1,label) \
28 sethi %hi(is_sun4v), %tmp1; \
29 lduw [%tmp1 + %lo(is_sun4v)], %tmp1; \
30 brnz,pn %tmp1, label; \
31 nop
32
27#define BRANCH_IF_CHEETAH_BASE(tmp1,tmp2,label) \ 33#define BRANCH_IF_CHEETAH_BASE(tmp1,tmp2,label) \
28 rdpr %ver, %tmp1; \ 34 rdpr %ver, %tmp1; \
29 sethi %hi(__CHEETAH_ID), %tmp2; \ 35 sethi %hi(__CHEETAH_ID), %tmp2; \
diff --git a/include/asm-sparc64/oplib.h b/include/asm-sparc64/oplib.h
index 3c59b2693fb9..2ea545b931b0 100644
--- a/include/asm-sparc64/oplib.h
+++ b/include/asm-sparc64/oplib.h
@@ -39,6 +39,9 @@ extern int prom_stdin, prom_stdout;
39extern int prom_chosen_node; 39extern int prom_chosen_node;
40 40
41/* Helper values and strings in arch/sparc64/kernel/head.S */ 41/* Helper values and strings in arch/sparc64/kernel/head.S */
42extern const char prom_peer_name[];
43extern const char prom_compatible_name[];
44extern const char prom_root_compatible[];
42extern const char prom_finddev_name[]; 45extern const char prom_finddev_name[];
43extern const char prom_chosen_path[]; 46extern const char prom_chosen_path[];
44extern const char prom_getprop_name[]; 47extern const char prom_getprop_name[];