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 84d43d6e13..98f7b62422 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 */ |
