diff options
author | Arnd Bergmann <arnd@arndb.de> | 2006-11-27 13:18:57 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 04:41:16 -0500 |
commit | e22ba7e38144c1cccac5024cfd6ec88bb64d3e1f (patch) | |
tree | 869b43ec4fcc66b0ff6bb6eb7f735b1846859b8c /include/asm-powerpc | |
parent | eb30c72026500f9efa9bb23ab2393d6a9e36c5e1 (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.h | 13 |
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 */ |