diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-09 05:52:44 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:03 -0500 |
commit | d82ace7dc4073b090a55b9740700e32b9a9ae302 (patch) | |
tree | d5aa8e10664b05bbfe31eacf95e2066c03cab102 /include | |
parent | 1d2f1f90a1e004b0c1b8a73ed4394a93f09104b3 (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.h | 6 | ||||
-rw-r--r-- | include/asm-sparc64/oplib.h | 3 |
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; | |||
39 | extern int prom_chosen_node; | 39 | extern 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 */ |
42 | extern const char prom_peer_name[]; | ||
43 | extern const char prom_compatible_name[]; | ||
44 | extern const char prom_root_compatible[]; | ||
42 | extern const char prom_finddev_name[]; | 45 | extern const char prom_finddev_name[]; |
43 | extern const char prom_chosen_path[]; | 46 | extern const char prom_chosen_path[]; |
44 | extern const char prom_getprop_name[]; | 47 | extern const char prom_getprop_name[]; |