aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2006-11-27 13:18:57 -0500
committerPaul Mackerras <paulus@samba.org>2006-12-04 04:41:16 -0500
commite22ba7e38144c1cccac5024cfd6ec88bb64d3e1f (patch)
tree869b43ec4fcc66b0ff6bb6eb7f735b1846859b8c /include/asm-powerpc
parenteb30c72026500f9efa9bb23ab2393d6a9e36c5e1 (diff)
[POWERPC] ps3: multiplatform build fixes
A few code paths need to check whether or not they are running on the PS3's LV1 hypervisor before making hcalls. This introduces a new firmware feature bit for this, FW_FEATURE_PS3_LV1. Now when both PS3 and IBM_CELL_BLADE are enabled, but not PSERIES, FW_FEATURE_PS3_LV1 and FW_FEATURE_LPAR get enabled at compile time, which is a bug. The same problem can also happen for (PPC_ISERIES && !PPC_PSERIES && PPC_SOMETHING_ELSE). In order to solve this, I introduce a new CONFIG_PPC_NATIVE option that is set when at least one platform is selected that can run without a hypervisor and then turns the firmware feature check into a run-time option. The new cell oprofile support that was recently merged does not work on hypervisor based platforms like the PS3, therefore make it depend on PPC_CELL_NATIVE instead of PPC_CELL. This may change if we get oprofile support for PS3. Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r--include/asm-powerpc/firmware.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/include/asm-powerpc/firmware.h b/include/asm-powerpc/firmware.h
index 84d43d6e13ec..98f7b62422c9 100644
--- a/include/asm-powerpc/firmware.h
+++ b/include/asm-powerpc/firmware.h
@@ -42,6 +42,7 @@
42#define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) 42#define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000)
43#define FW_FEATURE_ISERIES ASM_CONST(0x0000000000200000) 43#define FW_FEATURE_ISERIES ASM_CONST(0x0000000000200000)
44#define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) 44#define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000)
45#define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000)
45 46
46#ifndef __ASSEMBLY__ 47#ifndef __ASSEMBLY__
47 48
@@ -58,8 +59,10 @@ enum {
58 FW_FEATURE_PSERIES_ALWAYS = 0, 59 FW_FEATURE_PSERIES_ALWAYS = 0,
59 FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, 60 FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR,
60 FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, 61 FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR,
61 FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR, 62 FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
62 FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR, 63 FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
64 FW_FEATURE_NATIVE_POSSIBLE = 0,
65 FW_FEATURE_NATIVE_ALWAYS = 0,
63 FW_FEATURE_POSSIBLE = 66 FW_FEATURE_POSSIBLE =
64#ifdef CONFIG_PPC_PSERIES 67#ifdef CONFIG_PPC_PSERIES
65 FW_FEATURE_PSERIES_POSSIBLE | 68 FW_FEATURE_PSERIES_POSSIBLE |
@@ -70,6 +73,9 @@ enum {
70#ifdef CONFIG_PPC_PS3 73#ifdef CONFIG_PPC_PS3
71 FW_FEATURE_PS3_POSSIBLE | 74 FW_FEATURE_PS3_POSSIBLE |
72#endif 75#endif
76#ifdef CONFIG_PPC_NATIVE
77 FW_FEATURE_NATIVE_ALWAYS |
78#endif
73 0, 79 0,
74 FW_FEATURE_ALWAYS = 80 FW_FEATURE_ALWAYS =
75#ifdef CONFIG_PPC_PSERIES 81#ifdef CONFIG_PPC_PSERIES
@@ -81,6 +87,9 @@ enum {
81#ifdef CONFIG_PPC_PS3 87#ifdef CONFIG_PPC_PS3
82 FW_FEATURE_PS3_ALWAYS & 88 FW_FEATURE_PS3_ALWAYS &
83#endif 89#endif
90#ifdef CONFIG_PPC_NATIVE
91 FW_FEATURE_NATIVE_ALWAYS &
92#endif
84 FW_FEATURE_POSSIBLE, 93 FW_FEATURE_POSSIBLE,
85 94
86#else /* CONFIG_PPC64 */ 95#else /* CONFIG_PPC64 */