diff options
Diffstat (limited to 'include/asm-powerpc')
| -rw-r--r-- | include/asm-powerpc/bug.h | 36 | ||||
| -rw-r--r-- | include/asm-powerpc/cputable.h | 299 | ||||
| -rw-r--r-- | include/asm-powerpc/firmware.h | 10 | ||||
| -rw-r--r-- | include/asm-powerpc/floppy.h | 5 | ||||
| -rw-r--r-- | include/asm-powerpc/hvcall.h | 1 | ||||
| -rw-r--r-- | include/asm-powerpc/hvconsole.h | 26 | ||||
| -rw-r--r-- | include/asm-powerpc/machdep.h | 43 | ||||
| -rw-r--r-- | include/asm-powerpc/oprofile_impl.h | 17 | ||||
| -rw-r--r-- | include/asm-powerpc/paca.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/percpu.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/pmac_feature.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/processor.h | 43 | ||||
| -rw-r--r-- | include/asm-powerpc/prom.h | 14 | ||||
| -rw-r--r-- | include/asm-powerpc/reg.h | 4 | ||||
| -rw-r--r-- | include/asm-powerpc/smp.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/spu.h | 11 | ||||
| -rw-r--r-- | include/asm-powerpc/syscalls.h | 58 | ||||
| -rw-r--r-- | include/asm-powerpc/unistd.h | 35 | ||||
| -rw-r--r-- | include/asm-powerpc/vdso_datapage.h | 3 |
19 files changed, 334 insertions, 279 deletions
diff --git a/include/asm-powerpc/bug.h b/include/asm-powerpc/bug.h index 99817a802ca4..f44b529e3298 100644 --- a/include/asm-powerpc/bug.h +++ b/include/asm-powerpc/bug.h | |||
| @@ -30,34 +30,60 @@ struct bug_entry *find_bug(unsigned long bugaddr); | |||
| 30 | 30 | ||
| 31 | #ifdef CONFIG_BUG | 31 | #ifdef CONFIG_BUG |
| 32 | 32 | ||
| 33 | /* | ||
| 34 | * BUG_ON() and WARN_ON() do their best to cooperate with compile-time | ||
| 35 | * optimisations. However depending on the complexity of the condition | ||
| 36 | * some compiler versions may not produce optimal results. | ||
| 37 | */ | ||
| 38 | |||
| 33 | #define BUG() do { \ | 39 | #define BUG() do { \ |
| 34 | __asm__ __volatile__( \ | 40 | __asm__ __volatile__( \ |
| 35 | "1: twi 31,0,0\n" \ | 41 | "1: twi 31,0,0\n" \ |
| 36 | ".section __bug_table,\"a\"\n" \ | 42 | ".section __bug_table,\"a\"\n" \ |
| 37 | "\t"PPC_LONG" 1b,%0,%1,%2\n" \ | 43 | "\t"PPC_LONG" 1b,%0,%1,%2\n" \ |
| 38 | ".previous" \ | 44 | ".previous" \ |
| 39 | : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \ | 45 | : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \ |
| 40 | } while (0) | 46 | } while (0) |
| 41 | 47 | ||
| 42 | #define BUG_ON(x) do { \ | 48 | #define BUG_ON(x) do { \ |
| 43 | __asm__ __volatile__( \ | 49 | if (__builtin_constant_p(x)) { \ |
| 50 | if (x) \ | ||
| 51 | BUG(); \ | ||
| 52 | } else { \ | ||
| 53 | __asm__ __volatile__( \ | ||
| 44 | "1: "PPC_TLNEI" %0,0\n" \ | 54 | "1: "PPC_TLNEI" %0,0\n" \ |
| 45 | ".section __bug_table,\"a\"\n" \ | 55 | ".section __bug_table,\"a\"\n" \ |
| 46 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ | 56 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ |
| 47 | ".previous" \ | 57 | ".previous" \ |
| 48 | : : "r" ((long)(x)), "i" (__LINE__), \ | 58 | : : "r" ((long)(x)), "i" (__LINE__), \ |
| 49 | "i" (__FILE__), "i" (__FUNCTION__)); \ | 59 | "i" (__FILE__), "i" (__FUNCTION__)); \ |
| 60 | } \ | ||
| 50 | } while (0) | 61 | } while (0) |
| 51 | 62 | ||
| 52 | #define WARN_ON(x) do { \ | 63 | #define __WARN() do { \ |
| 53 | __asm__ __volatile__( \ | 64 | __asm__ __volatile__( \ |
| 65 | "1: twi 31,0,0\n" \ | ||
| 66 | ".section __bug_table,\"a\"\n" \ | ||
| 67 | "\t"PPC_LONG" 1b,%0,%1,%2\n" \ | ||
| 68 | ".previous" \ | ||
| 69 | : : "i" (__LINE__ + BUG_WARNING_TRAP), \ | ||
| 70 | "i" (__FILE__), "i" (__FUNCTION__)); \ | ||
| 71 | } while (0) | ||
| 72 | |||
| 73 | #define WARN_ON(x) do { \ | ||
| 74 | if (__builtin_constant_p(x)) { \ | ||
| 75 | if (x) \ | ||
| 76 | __WARN(); \ | ||
| 77 | } else { \ | ||
| 78 | __asm__ __volatile__( \ | ||
| 54 | "1: "PPC_TLNEI" %0,0\n" \ | 79 | "1: "PPC_TLNEI" %0,0\n" \ |
| 55 | ".section __bug_table,\"a\"\n" \ | 80 | ".section __bug_table,\"a\"\n" \ |
| 56 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ | 81 | "\t"PPC_LONG" 1b,%1,%2,%3\n" \ |
| 57 | ".previous" \ | 82 | ".previous" \ |
| 58 | : : "r" ((long)(x)), \ | 83 | : : "r" ((long)(x)), \ |
| 59 | "i" (__LINE__ + BUG_WARNING_TRAP), \ | 84 | "i" (__LINE__ + BUG_WARNING_TRAP), \ |
| 60 | "i" (__FILE__), "i" (__FUNCTION__)); \ | 85 | "i" (__FILE__), "i" (__FUNCTION__)); \ |
| 86 | } \ | ||
| 61 | } while (0) | 87 | } while (0) |
| 62 | 88 | ||
| 63 | #define HAVE_ARCH_BUG | 89 | #define HAVE_ARCH_BUG |
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h index fe45f6f3a4be..4321483cce51 100644 --- a/include/asm-powerpc/cputable.h +++ b/include/asm-powerpc/cputable.h | |||
| @@ -188,153 +188,154 @@ extern void do_cpu_ftr_fixups(unsigned long offset); | |||
| 188 | !defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \ | 188 | !defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \ |
| 189 | !defined(CONFIG_BOOKE)) | 189 | !defined(CONFIG_BOOKE)) |
| 190 | 190 | ||
| 191 | enum { | 191 | #define CPU_FTRS_PPC601 (CPU_FTR_COMMON | CPU_FTR_601 | CPU_FTR_HPTE_TABLE) |
| 192 | CPU_FTRS_PPC601 = CPU_FTR_COMMON | CPU_FTR_601 | CPU_FTR_HPTE_TABLE, | 192 | #define CPU_FTRS_603 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 193 | CPU_FTRS_603 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 193 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \ |
| 194 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | | 194 | CPU_FTR_MAYBE_CAN_NAP) |
| 195 | CPU_FTR_MAYBE_CAN_NAP, | 195 | #define CPU_FTRS_604 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 196 | CPU_FTRS_604 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 196 | CPU_FTR_USE_TB | CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE) |
| 197 | CPU_FTR_USE_TB | CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE, | 197 | #define CPU_FTRS_740_NOTAU (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 198 | CPU_FTRS_740_NOTAU = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 198 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 199 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 199 | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP) |
| 200 | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP, | 200 | #define CPU_FTRS_740 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 201 | CPU_FTRS_740 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 201 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 202 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 202 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP) |
| 203 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP, | 203 | #define CPU_FTRS_750 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 204 | CPU_FTRS_750 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 204 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 205 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 205 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP) |
| 206 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP, | 206 | #define CPU_FTRS_750FX1 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 207 | CPU_FTRS_750FX1 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 207 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 208 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 208 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ |
| 209 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | | 209 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_NO_DPM) |
| 210 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_NO_DPM, | 210 | #define CPU_FTRS_750FX2 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 211 | CPU_FTRS_750FX2 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 211 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 212 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 212 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ |
| 213 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | | 213 | CPU_FTR_NO_DPM) |
| 214 | CPU_FTR_NO_DPM, | 214 | #define CPU_FTRS_750FX (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 215 | CPU_FTRS_750FX = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 215 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 216 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 216 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ |
| 217 | CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | | 217 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS) |
| 218 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS, | 218 | #define CPU_FTRS_750GX (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | \ |
| 219 | CPU_FTRS_750GX = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | | 219 | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU | \ |
| 220 | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_TAU | | 220 | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ |
| 221 | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | | 221 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS) |
| 222 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_HAS_HIGH_BATS, | 222 | #define CPU_FTRS_7400_NOTAU (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 223 | CPU_FTRS_7400_NOTAU = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 223 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 224 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 224 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | \ |
| 225 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | | 225 | CPU_FTR_MAYBE_CAN_NAP) |
| 226 | CPU_FTR_MAYBE_CAN_NAP, | 226 | #define CPU_FTRS_7400 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 227 | CPU_FTRS_7400 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 227 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ |
| 228 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | | 228 | CPU_FTR_TAU | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | \ |
| 229 | CPU_FTR_TAU | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | | 229 | CPU_FTR_MAYBE_CAN_NAP) |
| 230 | CPU_FTR_MAYBE_CAN_NAP, | 230 | #define CPU_FTRS_7450_20 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 231 | CPU_FTRS_7450_20 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 231 | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 232 | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 232 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 233 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 233 | CPU_FTR_NEED_COHERENT) |
| 234 | CPU_FTR_NEED_COHERENT, | 234 | #define CPU_FTRS_7450_21 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 235 | CPU_FTRS_7450_21 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 235 | CPU_FTR_USE_TB | \ |
| 236 | CPU_FTR_USE_TB | | 236 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 237 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 237 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 238 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 238 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | \ |
| 239 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | | 239 | CPU_FTR_NEED_COHERENT) |
| 240 | CPU_FTR_NEED_COHERENT, | 240 | #define CPU_FTRS_7450_23 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 241 | CPU_FTRS_7450_23 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 241 | CPU_FTR_USE_TB | \ |
| 242 | CPU_FTR_USE_TB | | 242 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 243 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 243 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 244 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 244 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_NEED_COHERENT) |
| 245 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_NEED_COHERENT, | 245 | #define CPU_FTRS_7455_1 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 246 | CPU_FTRS_7455_1 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 246 | CPU_FTR_USE_TB | \ |
| 247 | CPU_FTR_USE_TB | | 247 | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | \ |
| 248 | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | | 248 | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_HAS_HIGH_BATS | \ |
| 249 | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_HAS_HIGH_BATS | | 249 | CPU_FTR_NEED_COHERENT) |
| 250 | CPU_FTR_NEED_COHERENT, | 250 | #define CPU_FTRS_7455_20 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 251 | CPU_FTRS_7455_20 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 251 | CPU_FTR_USE_TB | \ |
| 252 | CPU_FTR_USE_TB | | 252 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 253 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 253 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 254 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 254 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | \ |
| 255 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | | 255 | CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS) |
| 256 | CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS, | 256 | #define CPU_FTRS_7455 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 257 | CPU_FTRS_7455 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 257 | CPU_FTR_USE_TB | \ |
| 258 | CPU_FTR_USE_TB | | 258 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 259 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 259 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 260 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 260 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ |
| 261 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | | 261 | CPU_FTR_NEED_COHERENT) |
| 262 | CPU_FTR_NEED_COHERENT, | 262 | #define CPU_FTRS_7447_10 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 263 | CPU_FTRS_7447_10 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 263 | CPU_FTR_USE_TB | \ |
| 264 | CPU_FTR_USE_TB | | 264 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 265 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 265 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 266 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 266 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ |
| 267 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | | 267 | CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC) |
| 268 | CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC, | 268 | #define CPU_FTRS_7447 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 269 | CPU_FTRS_7447 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 269 | CPU_FTR_USE_TB | \ |
| 270 | CPU_FTR_USE_TB | | 270 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 271 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 271 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 272 | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 272 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ |
| 273 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | | 273 | CPU_FTR_NEED_COHERENT) |
| 274 | CPU_FTR_NEED_COHERENT, | 274 | #define CPU_FTRS_7447A (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 275 | CPU_FTRS_7447A = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 275 | CPU_FTR_USE_TB | \ |
| 276 | CPU_FTR_USE_TB | | 276 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ |
| 277 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | | 277 | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ |
| 278 | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | | 278 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ |
| 279 | CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | | 279 | CPU_FTR_NEED_COHERENT) |
| 280 | CPU_FTR_NEED_COHERENT, | 280 | #define CPU_FTRS_82XX (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 281 | CPU_FTRS_82XX = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 281 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB) |
| 282 | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB, | 282 | #define CPU_FTRS_G2_LE (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | \ |
| 283 | CPU_FTRS_G2_LE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | | 283 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS) |
| 284 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS, | 284 | #define CPU_FTRS_E300 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | \ |
| 285 | CPU_FTRS_E300 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | | 285 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | \ |
| 286 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | | 286 | CPU_FTR_COMMON) |
| 287 | CPU_FTR_COMMON, | 287 | #define CPU_FTRS_CLASSIC32 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 288 | CPU_FTRS_CLASSIC32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 288 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE) |
| 289 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE, | 289 | #define CPU_FTRS_POWER3_32 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 290 | CPU_FTRS_POWER3_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 290 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE) |
| 291 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE, | 291 | #define CPU_FTRS_POWER4_32 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 292 | CPU_FTRS_POWER4_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 292 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_NODSISRALIGN) |
| 293 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_NODSISRALIGN, | 293 | #define CPU_FTRS_970_32 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ |
| 294 | CPU_FTRS_970_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 294 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_ALTIVEC_COMP | \ |
| 295 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_ALTIVEC_COMP | | 295 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NODSISRALIGN) |
| 296 | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NODSISRALIGN, | 296 | #define CPU_FTRS_8XX (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB) |
| 297 | CPU_FTRS_8XX = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB, | 297 | #define CPU_FTRS_40X (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 298 | CPU_FTRS_40X = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 298 | CPU_FTR_NODSISRALIGN) |
| 299 | CPU_FTR_NODSISRALIGN, | 299 | #define CPU_FTRS_44X (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 300 | CPU_FTRS_44X = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 300 | CPU_FTR_NODSISRALIGN) |
| 301 | CPU_FTR_NODSISRALIGN, | 301 | #define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN) |
| 302 | CPU_FTRS_E200 = CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN, | 302 | #define CPU_FTRS_E500 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 303 | CPU_FTRS_E500 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 303 | CPU_FTR_NODSISRALIGN) |
| 304 | CPU_FTR_NODSISRALIGN, | 304 | #define CPU_FTRS_E500_2 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 305 | CPU_FTRS_E500_2 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 305 | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN) |
| 306 | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN, | 306 | #define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) |
| 307 | CPU_FTRS_GENERIC_32 = CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN, | ||
| 308 | #ifdef __powerpc64__ | 307 | #ifdef __powerpc64__ |
| 309 | CPU_FTRS_POWER3 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 308 | #define CPU_FTRS_POWER3 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 310 | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR, | 309 | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR) |
| 311 | CPU_FTRS_RS64 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 310 | #define CPU_FTRS_RS64 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 312 | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR | | 311 | CPU_FTR_HPTE_TABLE | CPU_FTR_IABR | \ |
| 313 | CPU_FTR_MMCRA | CPU_FTR_CTRL, | 312 | CPU_FTR_MMCRA | CPU_FTR_CTRL) |
| 314 | CPU_FTRS_POWER4 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 313 | #define CPU_FTRS_POWER4 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 315 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA, | 314 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_MMCRA) |
| 316 | CPU_FTRS_PPC970 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 315 | #define CPU_FTRS_PPC970 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 317 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | | 316 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \ |
| 318 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_CAN_NAP | CPU_FTR_MMCRA, | 317 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_CAN_NAP | CPU_FTR_MMCRA) |
| 319 | CPU_FTRS_POWER5 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 318 | #define CPU_FTRS_POWER5 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 320 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | | 319 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \ |
| 321 | CPU_FTR_MMCRA | CPU_FTR_SMT | | 320 | CPU_FTR_MMCRA | CPU_FTR_SMT | \ |
| 322 | CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | | 321 | CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \ |
| 323 | CPU_FTR_MMCRA_SIHV | CPU_FTR_PURR, | 322 | CPU_FTR_MMCRA_SIHV | CPU_FTR_PURR) |
| 324 | CPU_FTRS_CELL = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 323 | #define CPU_FTRS_CELL (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 325 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | | 324 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \ |
| 326 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | | 325 | CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \ |
| 327 | CPU_FTR_CTRL | CPU_FTR_PAUSE_ZERO, | 326 | CPU_FTR_CTRL | CPU_FTR_PAUSE_ZERO) |
| 328 | CPU_FTRS_COMPATIBLE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | | 327 | #define CPU_FTRS_COMPATIBLE (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ |
| 329 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2, | 328 | CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2) |
| 330 | #endif | 329 | #endif |
| 331 | 330 | ||
| 332 | CPU_FTRS_POSSIBLE = | ||
| 333 | #ifdef __powerpc64__ | 331 | #ifdef __powerpc64__ |
| 334 | CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | | 332 | #define CPU_FTRS_POSSIBLE \ |
| 335 | CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_CELL | | 333 | (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \ |
| 336 | CPU_FTR_CI_LARGE_PAGE | | 334 | CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_CELL | \ |
| 335 | CPU_FTR_CI_LARGE_PAGE) | ||
| 337 | #else | 336 | #else |
| 337 | enum { | ||
| 338 | CPU_FTRS_POSSIBLE = | ||
| 338 | #if CLASSIC_PPC | 339 | #if CLASSIC_PPC |
| 339 | CPU_FTRS_PPC601 | CPU_FTRS_603 | CPU_FTRS_604 | CPU_FTRS_740_NOTAU | | 340 | CPU_FTRS_PPC601 | CPU_FTRS_603 | CPU_FTRS_604 | CPU_FTRS_740_NOTAU | |
| 340 | CPU_FTRS_740 | CPU_FTRS_750 | CPU_FTRS_750FX1 | | 341 | CPU_FTRS_740 | CPU_FTRS_750 | CPU_FTRS_750FX1 | |
| @@ -368,14 +369,18 @@ enum { | |||
| 368 | #ifdef CONFIG_E500 | 369 | #ifdef CONFIG_E500 |
| 369 | CPU_FTRS_E500 | CPU_FTRS_E500_2 | | 370 | CPU_FTRS_E500 | CPU_FTRS_E500_2 | |
| 370 | #endif | 371 | #endif |
| 371 | #endif /* __powerpc64__ */ | ||
| 372 | 0, | 372 | 0, |
| 373 | }; | ||
| 374 | #endif /* __powerpc64__ */ | ||
| 373 | 375 | ||
| 374 | CPU_FTRS_ALWAYS = | ||
| 375 | #ifdef __powerpc64__ | 376 | #ifdef __powerpc64__ |
| 376 | CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 & | 377 | #define CPU_FTRS_ALWAYS \ |
| 377 | CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_CELL & | 378 | (CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 & \ |
| 379 | CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_CELL & \ | ||
| 380 | CPU_FTRS_POSSIBLE) | ||
| 378 | #else | 381 | #else |
| 382 | enum { | ||
| 383 | CPU_FTRS_ALWAYS = | ||
| 379 | #if CLASSIC_PPC | 384 | #if CLASSIC_PPC |
| 380 | CPU_FTRS_PPC601 & CPU_FTRS_603 & CPU_FTRS_604 & CPU_FTRS_740_NOTAU & | 385 | CPU_FTRS_PPC601 & CPU_FTRS_603 & CPU_FTRS_604 & CPU_FTRS_740_NOTAU & |
| 381 | CPU_FTRS_740 & CPU_FTRS_750 & CPU_FTRS_750FX1 & | 386 | CPU_FTRS_740 & CPU_FTRS_750 & CPU_FTRS_750FX1 & |
| @@ -409,9 +414,9 @@ enum { | |||
| 409 | #ifdef CONFIG_E500 | 414 | #ifdef CONFIG_E500 |
| 410 | CPU_FTRS_E500 & CPU_FTRS_E500_2 & | 415 | CPU_FTRS_E500 & CPU_FTRS_E500_2 & |
| 411 | #endif | 416 | #endif |
| 412 | #endif /* __powerpc64__ */ | ||
| 413 | CPU_FTRS_POSSIBLE, | 417 | CPU_FTRS_POSSIBLE, |
| 414 | }; | 418 | }; |
| 419 | #endif /* __powerpc64__ */ | ||
| 415 | 420 | ||
| 416 | static inline int cpu_has_feature(unsigned long feature) | 421 | static inline int cpu_has_feature(unsigned long feature) |
| 417 | { | 422 | { |
diff --git a/include/asm-powerpc/firmware.h b/include/asm-powerpc/firmware.h index ce3788224ed0..77069df92bf8 100644 --- a/include/asm-powerpc/firmware.h +++ b/include/asm-powerpc/firmware.h | |||
| @@ -82,13 +82,11 @@ enum { | |||
| 82 | /* This is used to identify firmware features which are available | 82 | /* This is used to identify firmware features which are available |
| 83 | * to the kernel. | 83 | * to the kernel. |
| 84 | */ | 84 | */ |
| 85 | extern unsigned long ppc64_firmware_features; | 85 | extern unsigned long powerpc_firmware_features; |
| 86 | 86 | ||
| 87 | static inline unsigned long firmware_has_feature(unsigned long feature) | 87 | #define firmware_has_feature(feature) \ |
| 88 | { | 88 | ((FW_FEATURE_ALWAYS & (feature)) || \ |
| 89 | return (FW_FEATURE_ALWAYS & feature) || | 89 | (FW_FEATURE_POSSIBLE & powerpc_firmware_features & (feature))) |
| 90 | (FW_FEATURE_POSSIBLE & ppc64_firmware_features & feature); | ||
| 91 | } | ||
| 92 | 90 | ||
| 93 | extern void system_reset_fwnmi(void); | 91 | extern void system_reset_fwnmi(void); |
| 94 | extern void machine_check_fwnmi(void); | 92 | extern void machine_check_fwnmi(void); |
diff --git a/include/asm-powerpc/floppy.h b/include/asm-powerpc/floppy.h index e258778ca429..608164c39efb 100644 --- a/include/asm-powerpc/floppy.h +++ b/include/asm-powerpc/floppy.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #ifdef CONFIG_PCI | 35 | #ifdef CONFIG_PCI |
| 36 | 36 | ||
| 37 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
| 38 | #include <asm/ppc-pci.h> /* for ppc64_isabridge_dev */ | ||
| 38 | 39 | ||
| 39 | #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io) | 40 | #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io) |
| 40 | 41 | ||
| @@ -52,12 +53,12 @@ static __inline__ int powerpc_fd_dma_setup(char *addr, unsigned long size, | |||
| 52 | if (bus_addr | 53 | if (bus_addr |
| 53 | && (addr != prev_addr || size != prev_size || dir != prev_dir)) { | 54 | && (addr != prev_addr || size != prev_size || dir != prev_dir)) { |
| 54 | /* different from last time -- unmap prev */ | 55 | /* different from last time -- unmap prev */ |
| 55 | pci_unmap_single(NULL, bus_addr, prev_size, prev_dir); | 56 | pci_unmap_single(ppc64_isabridge_dev, bus_addr, prev_size, prev_dir); |
| 56 | bus_addr = 0; | 57 | bus_addr = 0; |
| 57 | } | 58 | } |
| 58 | 59 | ||
| 59 | if (!bus_addr) /* need to map it */ | 60 | if (!bus_addr) /* need to map it */ |
| 60 | bus_addr = pci_map_single(NULL, addr, size, dir); | 61 | bus_addr = pci_map_single(ppc64_isabridge_dev, addr, size, dir); |
| 61 | 62 | ||
| 62 | /* remember this one as prev */ | 63 | /* remember this one as prev */ |
| 63 | prev_addr = addr; | 64 | prev_addr = addr; |
diff --git a/include/asm-powerpc/hvcall.h b/include/asm-powerpc/hvcall.h index 38ca9ad6110d..b72c04f3f551 100644 --- a/include/asm-powerpc/hvcall.h +++ b/include/asm-powerpc/hvcall.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #define H_Closed 2 /* Resource closed */ | 9 | #define H_Closed 2 /* Resource closed */ |
| 10 | #define H_Constrained 4 /* Resource request constrained to max allowed */ | 10 | #define H_Constrained 4 /* Resource request constrained to max allowed */ |
| 11 | #define H_InProgress 14 /* Kind of like busy */ | 11 | #define H_InProgress 14 /* Kind of like busy */ |
| 12 | #define H_Pending 17 /* returned from H_POLL_PENDING */ | ||
| 12 | #define H_Continue 18 /* Returned from H_Join on success */ | 13 | #define H_Continue 18 /* Returned from H_Join on success */ |
| 13 | #define H_LongBusyStartRange 9900 /* Start of long busy range */ | 14 | #define H_LongBusyStartRange 9900 /* Start of long busy range */ |
| 14 | #define H_LongBusyOrder1msec 9900 /* Long busy, hint that 1msec is a good time to retry */ | 15 | #define H_LongBusyOrder1msec 9900 /* Long busy, hint that 1msec is a good time to retry */ |
diff --git a/include/asm-powerpc/hvconsole.h b/include/asm-powerpc/hvconsole.h index 34daf7b9b62f..35ea69e8121f 100644 --- a/include/asm-powerpc/hvconsole.h +++ b/include/asm-powerpc/hvconsole.h | |||
| @@ -24,28 +24,18 @@ | |||
| 24 | #ifdef __KERNEL__ | 24 | #ifdef __KERNEL__ |
| 25 | 25 | ||
| 26 | /* | 26 | /* |
| 27 | * This is the max number of console adapters that can/will be found as | 27 | * PSeries firmware will only send/recv up to 16 bytes of character data per |
| 28 | * console devices on first stage console init. Any number beyond this range | 28 | * hcall. |
| 29 | * can't be used as a console device but is still a valid tty device. | ||
| 30 | */ | 29 | */ |
| 31 | #define MAX_NR_HVC_CONSOLES 16 | 30 | #define MAX_VIO_PUT_CHARS 16 |
| 31 | #define SIZE_VIO_GET_CHARS 16 | ||
| 32 | 32 | ||
| 33 | /* implemented by a low level driver */ | 33 | /* |
| 34 | struct hv_ops { | 34 | * Vio firmware always attempts to fetch MAX_VIO_GET_CHARS chars. The 'count' |
| 35 | int (*get_chars)(uint32_t vtermno, char *buf, int count); | 35 | * parm is included to conform to put_chars() function pointer template |
| 36 | int (*put_chars)(uint32_t vtermno, const char *buf, int count); | 36 | */ |
| 37 | }; | ||
| 38 | extern int hvc_get_chars(uint32_t vtermno, char *buf, int count); | 37 | extern int hvc_get_chars(uint32_t vtermno, char *buf, int count); |
| 39 | extern int hvc_put_chars(uint32_t vtermno, const char *buf, int count); | 38 | extern int hvc_put_chars(uint32_t vtermno, const char *buf, int count); |
| 40 | 39 | ||
| 41 | struct hvc_struct; | ||
| 42 | |||
| 43 | /* Register a vterm and a slot index for use as a console (console_init) */ | ||
| 44 | extern int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops); | ||
| 45 | /* register a vterm for hvc tty operation (module_init or hotplug add) */ | ||
| 46 | extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int irq, | ||
| 47 | struct hv_ops *ops); | ||
| 48 | /* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */ | ||
| 49 | extern int __devexit hvc_remove(struct hvc_struct *hp); | ||
| 50 | #endif /* __KERNEL__ */ | 40 | #endif /* __KERNEL__ */ |
| 51 | #endif /* _PPC64_HVCONSOLE_H */ | 41 | #endif /* _PPC64_HVCONSOLE_H */ |
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index 5348b820788c..5ed847680754 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
| @@ -47,6 +47,7 @@ struct smp_ops_t { | |||
| 47 | #endif | 47 | #endif |
| 48 | 48 | ||
| 49 | struct machdep_calls { | 49 | struct machdep_calls { |
| 50 | char *name; | ||
| 50 | #ifdef CONFIG_PPC64 | 51 | #ifdef CONFIG_PPC64 |
| 51 | void (*hpte_invalidate)(unsigned long slot, | 52 | void (*hpte_invalidate)(unsigned long slot, |
| 52 | unsigned long va, | 53 | unsigned long va, |
| @@ -85,9 +86,9 @@ struct machdep_calls { | |||
| 85 | void (*iommu_dev_setup)(struct pci_dev *dev); | 86 | void (*iommu_dev_setup)(struct pci_dev *dev); |
| 86 | void (*iommu_bus_setup)(struct pci_bus *bus); | 87 | void (*iommu_bus_setup)(struct pci_bus *bus); |
| 87 | void (*irq_bus_setup)(struct pci_bus *bus); | 88 | void (*irq_bus_setup)(struct pci_bus *bus); |
| 88 | #endif | 89 | #endif /* CONFIG_PPC64 */ |
| 89 | 90 | ||
| 90 | int (*probe)(int platform); | 91 | int (*probe)(void); |
| 91 | void (*setup_arch)(void); | 92 | void (*setup_arch)(void); |
| 92 | void (*init_early)(void); | 93 | void (*init_early)(void); |
| 93 | /* Optional, may be NULL. */ | 94 | /* Optional, may be NULL. */ |
| @@ -158,6 +159,12 @@ struct machdep_calls { | |||
| 158 | /* Idle loop for this platform, leave empty for default idle loop */ | 159 | /* Idle loop for this platform, leave empty for default idle loop */ |
| 159 | void (*idle_loop)(void); | 160 | void (*idle_loop)(void); |
| 160 | 161 | ||
| 162 | /* | ||
| 163 | * Function for waiting for work with reduced power in idle loop; | ||
| 164 | * called with interrupts disabled. | ||
| 165 | */ | ||
| 166 | void (*power_save)(void); | ||
| 167 | |||
| 161 | /* Function to enable performance monitor counters for this | 168 | /* Function to enable performance monitor counters for this |
| 162 | platform, called once per cpu. */ | 169 | platform, called once per cpu. */ |
| 163 | void (*enable_pmcs)(void); | 170 | void (*enable_pmcs)(void); |
| @@ -170,13 +177,6 @@ struct machdep_calls { | |||
| 170 | May be NULL. */ | 177 | May be NULL. */ |
| 171 | void (*init)(void); | 178 | void (*init)(void); |
| 172 | 179 | ||
| 173 | void (*idle)(void); | ||
| 174 | void (*power_save)(void); | ||
| 175 | |||
| 176 | void (*heartbeat)(void); | ||
| 177 | unsigned long heartbeat_reset; | ||
| 178 | unsigned long heartbeat_count; | ||
| 179 | |||
| 180 | void (*setup_io_mappings)(void); | 180 | void (*setup_io_mappings)(void); |
| 181 | 181 | ||
| 182 | void (*early_serial_map)(void); | 182 | void (*early_serial_map)(void); |
| @@ -208,8 +208,6 @@ struct machdep_calls { | |||
| 208 | /* Called at then very end of pcibios_init() */ | 208 | /* Called at then very end of pcibios_init() */ |
| 209 | void (*pcibios_after_init)(void); | 209 | void (*pcibios_after_init)(void); |
| 210 | 210 | ||
| 211 | /* this is for modules, since _machine can be a define -- Cort */ | ||
| 212 | int ppc_machine; | ||
| 213 | #endif /* CONFIG_PPC32 */ | 211 | #endif /* CONFIG_PPC32 */ |
| 214 | 212 | ||
| 215 | /* Called to shutdown machine specific hardware not already controlled | 213 | /* Called to shutdown machine specific hardware not already controlled |
| @@ -242,10 +240,29 @@ struct machdep_calls { | |||
| 242 | #endif /* CONFIG_KEXEC */ | 240 | #endif /* CONFIG_KEXEC */ |
| 243 | }; | 241 | }; |
| 244 | 242 | ||
| 245 | extern void default_idle(void); | 243 | extern void power4_idle(void); |
| 246 | extern void native_idle(void); | 244 | extern void ppc6xx_idle(void); |
| 247 | 245 | ||
| 246 | /* | ||
| 247 | * ppc_md contains a copy of the machine description structure for the | ||
| 248 | * current platform. machine_id contains the initial address where the | ||
| 249 | * description was found during boot. | ||
| 250 | */ | ||
| 248 | extern struct machdep_calls ppc_md; | 251 | extern struct machdep_calls ppc_md; |
| 252 | extern struct machdep_calls *machine_id; | ||
| 253 | |||
| 254 | #define __machine_desc __attribute__ ((__section__ (".machine.desc"))) | ||
| 255 | |||
| 256 | #define define_machine(name) struct machdep_calls mach_##name __machine_desc = | ||
| 257 | #define machine_is(name) \ | ||
| 258 | ({ \ | ||
| 259 | extern struct machdep_calls mach_##name \ | ||
| 260 | __attribute__((weak)); \ | ||
| 261 | machine_id == &mach_##name; \ | ||
| 262 | }) | ||
| 263 | |||
| 264 | extern void probe_machine(void); | ||
| 265 | |||
| 249 | extern char cmd_line[COMMAND_LINE_SIZE]; | 266 | extern char cmd_line[COMMAND_LINE_SIZE]; |
| 250 | 267 | ||
| 251 | #ifdef CONFIG_PPC_PMAC | 268 | #ifdef CONFIG_PPC_PMAC |
diff --git a/include/asm-powerpc/oprofile_impl.h b/include/asm-powerpc/oprofile_impl.h index 338e6a7cff4a..5b33994cd488 100644 --- a/include/asm-powerpc/oprofile_impl.h +++ b/include/asm-powerpc/oprofile_impl.h | |||
| @@ -17,9 +17,6 @@ | |||
| 17 | 17 | ||
| 18 | /* Per-counter configuration as set via oprofilefs. */ | 18 | /* Per-counter configuration as set via oprofilefs. */ |
| 19 | struct op_counter_config { | 19 | struct op_counter_config { |
| 20 | #ifdef __powerpc64__ | ||
| 21 | unsigned long valid; | ||
| 22 | #endif | ||
| 23 | unsigned long enabled; | 20 | unsigned long enabled; |
| 24 | unsigned long event; | 21 | unsigned long event; |
| 25 | unsigned long count; | 22 | unsigned long count; |
| @@ -38,9 +35,6 @@ struct op_system_config { | |||
| 38 | #endif | 35 | #endif |
| 39 | unsigned long enable_kernel; | 36 | unsigned long enable_kernel; |
| 40 | unsigned long enable_user; | 37 | unsigned long enable_user; |
| 41 | #ifdef CONFIG_PPC64 | ||
| 42 | unsigned long backtrace_spinlocks; | ||
| 43 | #endif | ||
| 44 | }; | 38 | }; |
| 45 | 39 | ||
| 46 | /* Per-arch configuration */ | 40 | /* Per-arch configuration */ |
| @@ -56,17 +50,12 @@ struct op_powerpc_model { | |||
| 56 | int num_counters; | 50 | int num_counters; |
| 57 | }; | 51 | }; |
| 58 | 52 | ||
| 59 | #ifdef CONFIG_FSL_BOOKE | ||
| 60 | extern struct op_powerpc_model op_model_fsl_booke; | 53 | extern struct op_powerpc_model op_model_fsl_booke; |
| 61 | #else /* Otherwise, it's classic */ | ||
| 62 | |||
| 63 | #ifdef CONFIG_PPC64 | ||
| 64 | extern struct op_powerpc_model op_model_rs64; | 54 | extern struct op_powerpc_model op_model_rs64; |
| 65 | extern struct op_powerpc_model op_model_power4; | 55 | extern struct op_powerpc_model op_model_power4; |
| 66 | |||
| 67 | #else /* Otherwise, CONFIG_PPC32 */ | ||
| 68 | extern struct op_powerpc_model op_model_7450; | 56 | extern struct op_powerpc_model op_model_7450; |
| 69 | #endif | 57 | |
| 58 | #ifndef CONFIG_FSL_BOOKE | ||
| 70 | 59 | ||
| 71 | /* All the classic PPC parts use these */ | 60 | /* All the classic PPC parts use these */ |
| 72 | static inline unsigned int ctr_read(unsigned int i) | 61 | static inline unsigned int ctr_read(unsigned int i) |
| @@ -134,5 +123,7 @@ static inline void ctr_write(unsigned int i, unsigned int val) | |||
| 134 | } | 123 | } |
| 135 | #endif /* !CONFIG_FSL_BOOKE */ | 124 | #endif /* !CONFIG_FSL_BOOKE */ |
| 136 | 125 | ||
| 126 | extern void op_powerpc_backtrace(struct pt_regs * const regs, unsigned int depth); | ||
| 127 | |||
| 137 | #endif /* __KERNEL__ */ | 128 | #endif /* __KERNEL__ */ |
| 138 | #endif /* _ASM_POWERPC_OPROFILE_IMPL_H */ | 129 | #endif /* _ASM_POWERPC_OPROFILE_IMPL_H */ |
diff --git a/include/asm-powerpc/paca.h b/include/asm-powerpc/paca.h index 4465b95ebef0..706325f99a84 100644 --- a/include/asm-powerpc/paca.h +++ b/include/asm-powerpc/paca.h | |||
| @@ -105,5 +105,7 @@ struct paca_struct { | |||
| 105 | 105 | ||
| 106 | extern struct paca_struct paca[]; | 106 | extern struct paca_struct paca[]; |
| 107 | 107 | ||
| 108 | void setup_boot_paca(void); | ||
| 109 | |||
| 108 | #endif /* __KERNEL__ */ | 110 | #endif /* __KERNEL__ */ |
| 109 | #endif /* _ASM_POWERPC_PACA_H */ | 111 | #endif /* _ASM_POWERPC_PACA_H */ |
diff --git a/include/asm-powerpc/percpu.h b/include/asm-powerpc/percpu.h index 464301cd0d03..184a7a4d2fdf 100644 --- a/include/asm-powerpc/percpu.h +++ b/include/asm-powerpc/percpu.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #define percpu_modcopy(pcpudst, src, size) \ | 27 | #define percpu_modcopy(pcpudst, src, size) \ |
| 28 | do { \ | 28 | do { \ |
| 29 | unsigned int __i; \ | 29 | unsigned int __i; \ |
| 30 | for_each_cpu(__i) \ | 30 | for_each_possible_cpu(__i) \ |
| 31 | memcpy((pcpudst)+__per_cpu_offset(__i), \ | 31 | memcpy((pcpudst)+__per_cpu_offset(__i), \ |
| 32 | (src), (size)); \ | 32 | (src), (size)); \ |
| 33 | } while (0) | 33 | } while (0) |
diff --git a/include/asm-powerpc/pmac_feature.h b/include/asm-powerpc/pmac_feature.h index 3221628130c4..d3599cc9aa74 100644 --- a/include/asm-powerpc/pmac_feature.h +++ b/include/asm-powerpc/pmac_feature.h | |||
| @@ -305,7 +305,7 @@ extern void pmac_feature_init(void); | |||
| 305 | extern void pmac_set_early_video_resume(void (*proc)(void *data), void *data); | 305 | extern void pmac_set_early_video_resume(void (*proc)(void *data), void *data); |
| 306 | extern void pmac_call_early_video_resume(void); | 306 | extern void pmac_call_early_video_resume(void); |
| 307 | 307 | ||
| 308 | #define PMAC_FTR_DEF(x) ((_MACH_Pmac << 16) | (x)) | 308 | #define PMAC_FTR_DEF(x) ((0x6660000) | (x)) |
| 309 | 309 | ||
| 310 | /* The AGP driver registers itself here */ | 310 | /* The AGP driver registers itself here */ |
| 311 | extern void pmac_register_agp_pm(struct pci_dev *bridge, | 311 | extern void pmac_register_agp_pm(struct pci_dev *bridge, |
diff --git a/include/asm-powerpc/processor.h b/include/asm-powerpc/processor.h index 1c64a211cf19..93f83efeb310 100644 --- a/include/asm-powerpc/processor.h +++ b/include/asm-powerpc/processor.h | |||
| @@ -22,22 +22,6 @@ | |||
| 22 | * -- BenH. | 22 | * -- BenH. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | /* Platforms codes (to be obsoleted) */ | ||
| 26 | #define PLATFORM_PSERIES 0x0100 | ||
| 27 | #define PLATFORM_PSERIES_LPAR 0x0101 | ||
| 28 | #define PLATFORM_ISERIES_LPAR 0x0201 | ||
| 29 | #define PLATFORM_LPAR 0x0001 | ||
| 30 | #define PLATFORM_POWERMAC 0x0400 | ||
| 31 | #define PLATFORM_MAPLE 0x0500 | ||
| 32 | #define PLATFORM_PREP 0x0600 | ||
| 33 | #define PLATFORM_CHRP 0x0700 | ||
| 34 | #define PLATFORM_CELL 0x1000 | ||
| 35 | |||
| 36 | /* Compat platform codes for 32 bits */ | ||
| 37 | #define _MACH_prep PLATFORM_PREP | ||
| 38 | #define _MACH_Pmac PLATFORM_POWERMAC | ||
| 39 | #define _MACH_chrp PLATFORM_CHRP | ||
| 40 | |||
| 41 | /* PREP sub-platform types see residual.h for these */ | 25 | /* PREP sub-platform types see residual.h for these */ |
| 42 | #define _PREP_Motorola 0x01 /* motorola prep */ | 26 | #define _PREP_Motorola 0x01 /* motorola prep */ |
| 43 | #define _PREP_Firm 0x02 /* firmworks prep */ | 27 | #define _PREP_Firm 0x02 /* firmworks prep */ |
| @@ -49,18 +33,14 @@ | |||
| 49 | #define _CHRP_IBM 0x05 /* IBM chrp, the longtrail and longtrail 2 */ | 33 | #define _CHRP_IBM 0x05 /* IBM chrp, the longtrail and longtrail 2 */ |
| 50 | #define _CHRP_Pegasos 0x06 /* Genesi/bplan's Pegasos and Pegasos2 */ | 34 | #define _CHRP_Pegasos 0x06 /* Genesi/bplan's Pegasos and Pegasos2 */ |
| 51 | 35 | ||
| 52 | #ifdef __KERNEL__ | 36 | #if defined(__KERNEL__) && defined(CONFIG_PPC32) |
| 53 | #define platform_is_pseries() (_machine == PLATFORM_PSERIES || \ | ||
| 54 | _machine == PLATFORM_PSERIES_LPAR) | ||
| 55 | 37 | ||
| 56 | #if defined(CONFIG_PPC_MULTIPLATFORM) | 38 | extern int _chrp_type; |
| 57 | extern int _machine; | ||
| 58 | 39 | ||
| 59 | #ifdef CONFIG_PPC32 | 40 | #ifdef CONFIG_PPC_PREP |
| 60 | 41 | ||
| 61 | /* what kind of prep workstation we are */ | 42 | /* what kind of prep workstation we are */ |
| 62 | extern int _prep_type; | 43 | extern int _prep_type; |
| 63 | extern int _chrp_type; | ||
| 64 | 44 | ||
| 65 | /* | 45 | /* |
| 66 | * This is used to identify the board type from a given PReP board | 46 | * This is used to identify the board type from a given PReP board |
| @@ -70,17 +50,14 @@ extern int _chrp_type; | |||
| 70 | extern unsigned char ucBoardRev; | 50 | extern unsigned char ucBoardRev; |
| 71 | extern unsigned char ucBoardRevMaj, ucBoardRevMin; | 51 | extern unsigned char ucBoardRevMaj, ucBoardRevMin; |
| 72 | 52 | ||
| 73 | #endif /* CONFIG_PPC32 */ | 53 | #endif /* CONFIG_PPC_PREP */ |
| 74 | 54 | ||
| 75 | #elif defined(CONFIG_PPC_ISERIES) | 55 | #ifndef CONFIG_PPC_MULTIPLATFORM |
| 76 | /* | ||
| 77 | * iSeries is soon to become MULTIPLATFORM hopefully ... | ||
| 78 | */ | ||
| 79 | #define _machine PLATFORM_ISERIES_LPAR | ||
| 80 | #else | ||
| 81 | #define _machine 0 | 56 | #define _machine 0 |
| 82 | #endif /* CONFIG_PPC_MULTIPLATFORM */ | 57 | #endif /* CONFIG_PPC_MULTIPLATFORM */ |
| 83 | #endif /* __KERNEL__ */ | 58 | |
| 59 | #endif /* defined(__KERNEL__) && defined(CONFIG_PPC32) */ | ||
| 60 | |||
| 84 | /* | 61 | /* |
| 85 | * Default implementation of macro that returns current | 62 | * Default implementation of macro that returns current |
| 86 | * instruction pointer ("program counter"). | 63 | * instruction pointer ("program counter"). |
| @@ -251,6 +228,10 @@ static inline unsigned long __pack_fe01(unsigned int fpmode) | |||
| 251 | #define cpu_relax() barrier() | 228 | #define cpu_relax() barrier() |
| 252 | #endif | 229 | #endif |
| 253 | 230 | ||
| 231 | /* Check that a certain kernel stack pointer is valid in task_struct p */ | ||
| 232 | int validate_sp(unsigned long sp, struct task_struct *p, | ||
| 233 | unsigned long nbytes); | ||
| 234 | |||
| 254 | /* | 235 | /* |
| 255 | * Prefetch macros. | 236 | * Prefetch macros. |
| 256 | */ | 237 | */ |
diff --git a/include/asm-powerpc/prom.h b/include/asm-powerpc/prom.h index 782e13a070a1..97ef1cd71a4d 100644 --- a/include/asm-powerpc/prom.h +++ b/include/asm-powerpc/prom.h | |||
| @@ -149,12 +149,14 @@ extern struct device_node *of_node_get(struct device_node *node); | |||
| 149 | extern void of_node_put(struct device_node *node); | 149 | extern void of_node_put(struct device_node *node); |
| 150 | 150 | ||
| 151 | /* For scanning the flat device-tree at boot time */ | 151 | /* For scanning the flat device-tree at boot time */ |
| 152 | int __init of_scan_flat_dt(int (*it)(unsigned long node, | 152 | extern int __init of_scan_flat_dt(int (*it)(unsigned long node, |
| 153 | const char *uname, int depth, | 153 | const char *uname, int depth, |
| 154 | void *data), | 154 | void *data), |
| 155 | void *data); | 155 | void *data); |
| 156 | void* __init of_get_flat_dt_prop(unsigned long node, const char *name, | 156 | extern void* __init of_get_flat_dt_prop(unsigned long node, const char *name, |
| 157 | unsigned long *size); | 157 | unsigned long *size); |
| 158 | extern int __init of_flat_dt_is_compatible(unsigned long node, const char *name); | ||
| 159 | extern unsigned long __init of_get_flat_dt_root(void); | ||
| 158 | 160 | ||
| 159 | /* For updating the device tree at runtime */ | 161 | /* For updating the device tree at runtime */ |
| 160 | extern void of_attach_node(struct device_node *); | 162 | extern void of_attach_node(struct device_node *); |
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h index 72bfe3af0460..bd467bf5cf5a 100644 --- a/include/asm-powerpc/reg.h +++ b/include/asm-powerpc/reg.h | |||
| @@ -622,6 +622,10 @@ extern void ppc64_runlatch_off(void); | |||
| 622 | extern unsigned long scom970_read(unsigned int address); | 622 | extern unsigned long scom970_read(unsigned int address); |
| 623 | extern void scom970_write(unsigned int address, unsigned long value); | 623 | extern void scom970_write(unsigned int address, unsigned long value); |
| 624 | 624 | ||
| 625 | #else | ||
| 626 | #define ppc64_runlatch_on() | ||
| 627 | #define ppc64_runlatch_off() | ||
| 628 | |||
| 625 | #endif /* CONFIG_PPC64 */ | 629 | #endif /* CONFIG_PPC64 */ |
| 626 | 630 | ||
| 627 | #define __get_SP() ({unsigned long sp; \ | 631 | #define __get_SP() ({unsigned long sp; \ |
diff --git a/include/asm-powerpc/smp.h b/include/asm-powerpc/smp.h index 98581e5a8279..4a716f707cf6 100644 --- a/include/asm-powerpc/smp.h +++ b/include/asm-powerpc/smp.h | |||
| @@ -29,7 +29,6 @@ | |||
| 29 | #endif | 29 | #endif |
| 30 | 30 | ||
| 31 | extern int boot_cpuid; | 31 | extern int boot_cpuid; |
| 32 | extern int boot_cpuid_phys; | ||
| 33 | 32 | ||
| 34 | extern void cpu_die(void); | 33 | extern void cpu_die(void); |
| 35 | 34 | ||
| @@ -99,6 +98,7 @@ extern void smp_release_cpus(void); | |||
| 99 | #else | 98 | #else |
| 100 | /* 32-bit */ | 99 | /* 32-bit */ |
| 101 | #ifndef CONFIG_SMP | 100 | #ifndef CONFIG_SMP |
| 101 | extern int boot_cpuid_phys; | ||
| 102 | #define get_hard_smp_processor_id(cpu) boot_cpuid_phys | 102 | #define get_hard_smp_processor_id(cpu) boot_cpuid_phys |
| 103 | #define set_hard_smp_processor_id(cpu, phys) | 103 | #define set_hard_smp_processor_id(cpu, phys) |
| 104 | #endif | 104 | #endif |
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index 38bacf2f6e0c..f431d8b0b651 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
| @@ -110,6 +110,7 @@ struct spu { | |||
| 110 | char *name; | 110 | char *name; |
| 111 | unsigned long local_store_phys; | 111 | unsigned long local_store_phys; |
| 112 | u8 *local_store; | 112 | u8 *local_store; |
| 113 | unsigned long problem_phys; | ||
| 113 | struct spu_problem __iomem *problem; | 114 | struct spu_problem __iomem *problem; |
| 114 | struct spu_priv1 __iomem *priv1; | 115 | struct spu_priv1 __iomem *priv1; |
| 115 | struct spu_priv2 __iomem *priv2; | 116 | struct spu_priv2 __iomem *priv2; |
| @@ -137,6 +138,7 @@ struct spu { | |||
| 137 | void (* wbox_callback)(struct spu *spu); | 138 | void (* wbox_callback)(struct spu *spu); |
| 138 | void (* ibox_callback)(struct spu *spu); | 139 | void (* ibox_callback)(struct spu *spu); |
| 139 | void (* stop_callback)(struct spu *spu); | 140 | void (* stop_callback)(struct spu *spu); |
| 141 | void (* mfc_callback)(struct spu *spu); | ||
| 140 | 142 | ||
| 141 | char irq_c0[8]; | 143 | char irq_c0[8]; |
| 142 | char irq_c1[8]; | 144 | char irq_c1[8]; |
| @@ -149,6 +151,14 @@ int spu_irq_class_0_bottom(struct spu *spu); | |||
| 149 | int spu_irq_class_1_bottom(struct spu *spu); | 151 | int spu_irq_class_1_bottom(struct spu *spu); |
| 150 | void spu_irq_setaffinity(struct spu *spu, int cpu); | 152 | void spu_irq_setaffinity(struct spu *spu, int cpu); |
| 151 | 153 | ||
| 154 | /* system callbacks from the SPU */ | ||
| 155 | struct spu_syscall_block { | ||
| 156 | u64 nr_ret; | ||
| 157 | u64 parm[6]; | ||
| 158 | }; | ||
| 159 | extern long spu_sys_callback(struct spu_syscall_block *s); | ||
| 160 | |||
| 161 | /* syscalls implemented in spufs */ | ||
| 152 | extern struct spufs_calls { | 162 | extern struct spufs_calls { |
| 153 | asmlinkage long (*create_thread)(const char __user *name, | 163 | asmlinkage long (*create_thread)(const char __user *name, |
| 154 | unsigned int flags, mode_t mode); | 164 | unsigned int flags, mode_t mode); |
| @@ -399,7 +409,6 @@ struct spu_priv1 { | |||
| 399 | #define SPU_GET_REVISION_BITS(vr) (vr & SPU_REVISION_BITS) | 409 | #define SPU_GET_REVISION_BITS(vr) (vr & SPU_REVISION_BITS) |
| 400 | u8 pad_0x28_0x100[0x100 - 0x28]; /* 0x28 */ | 410 | u8 pad_0x28_0x100[0x100 - 0x28]; /* 0x28 */ |
| 401 | 411 | ||
| 402 | |||
| 403 | /* Interrupt Area */ | 412 | /* Interrupt Area */ |
| 404 | u64 int_mask_RW[3]; /* 0x100 */ | 413 | u64 int_mask_RW[3]; /* 0x100 */ |
| 405 | #define CLASS0_ENABLE_DMA_ALIGNMENT_INTR 0x1L | 414 | #define CLASS0_ENABLE_DMA_ALIGNMENT_INTR 0x1L |
diff --git a/include/asm-powerpc/syscalls.h b/include/asm-powerpc/syscalls.h new file mode 100644 index 000000000000..c2fe79d4f90f --- /dev/null +++ b/include/asm-powerpc/syscalls.h | |||
| @@ -0,0 +1,58 @@ | |||
| 1 | #ifndef __ASM_POWERPC_SYSCALLS_H | ||
| 2 | #define __ASM_POWERPC_SYSCALLS_H | ||
| 3 | #ifdef __KERNEL__ | ||
| 4 | |||
| 5 | #include <linux/compiler.h> | ||
| 6 | #include <linux/linkage.h> | ||
| 7 | #include <linux/types.h> | ||
| 8 | #include <asm/signal.h> | ||
| 9 | |||
| 10 | struct new_utsname; | ||
| 11 | struct pt_regs; | ||
| 12 | struct rtas_args; | ||
| 13 | struct sigaction; | ||
| 14 | |||
| 15 | asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len, | ||
| 16 | unsigned long prot, unsigned long flags, | ||
| 17 | unsigned long fd, off_t offset); | ||
| 18 | asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len, | ||
| 19 | unsigned long prot, unsigned long flags, | ||
| 20 | unsigned long fd, unsigned long pgoff); | ||
| 21 | asmlinkage int sys_execve(unsigned long a0, unsigned long a1, | ||
| 22 | unsigned long a2, unsigned long a3, unsigned long a4, | ||
| 23 | unsigned long a5, struct pt_regs *regs); | ||
| 24 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long usp, | ||
| 25 | int __user *parent_tidp, void __user *child_threadptr, | ||
| 26 | int __user *child_tidp, int p6, struct pt_regs *regs); | ||
| 27 | asmlinkage int sys_fork(unsigned long p1, unsigned long p2, | ||
| 28 | unsigned long p3, unsigned long p4, unsigned long p5, | ||
| 29 | unsigned long p6, struct pt_regs *regs); | ||
| 30 | asmlinkage int sys_vfork(unsigned long p1, unsigned long p2, | ||
| 31 | unsigned long p3, unsigned long p4, unsigned long p5, | ||
| 32 | unsigned long p6, struct pt_regs *regs); | ||
| 33 | asmlinkage int sys_pipe(int __user *fildes); | ||
| 34 | asmlinkage long sys_rt_sigaction(int sig, | ||
| 35 | const struct sigaction __user *act, | ||
| 36 | struct sigaction __user *oact, size_t sigsetsize); | ||
| 37 | asmlinkage int sys_ipc(uint call, int first, unsigned long second, | ||
| 38 | long third, void __user *ptr, long fifth); | ||
| 39 | asmlinkage long ppc64_personality(unsigned long personality); | ||
| 40 | asmlinkage int ppc_rtas(struct rtas_args __user *uargs); | ||
| 41 | asmlinkage time_t sys64_time(time_t __user * tloc); | ||
| 42 | asmlinkage long ppc_newuname(struct new_utsname __user * name); | ||
| 43 | |||
| 44 | asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, | ||
| 45 | size_t sigsetsize); | ||
| 46 | |||
| 47 | #ifndef __powerpc64__ | ||
| 48 | asmlinkage long sys_sigaltstack(const stack_t __user *uss, | ||
| 49 | stack_t __user *uoss, int r5, int r6, int r7, int r8, | ||
| 50 | struct pt_regs *regs); | ||
| 51 | #else /* __powerpc64__ */ | ||
| 52 | asmlinkage long sys_sigaltstack(const stack_t __user *uss, | ||
| 53 | stack_t __user *uoss, unsigned long r5, unsigned long r6, | ||
| 54 | unsigned long r7, unsigned long r8, struct pt_regs *regs); | ||
| 55 | #endif /* __powerpc64__ */ | ||
| 56 | |||
| 57 | #endif /* __KERNEL__ */ | ||
| 58 | #endif /* __ASM_POWERPC_SYSCALLS_H */ | ||
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h index 35556993f066..1e990747dce7 100644 --- a/include/asm-powerpc/unistd.h +++ b/include/asm-powerpc/unistd.h | |||
| @@ -425,6 +425,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
| 425 | #include <linux/types.h> | 425 | #include <linux/types.h> |
| 426 | #include <linux/compiler.h> | 426 | #include <linux/compiler.h> |
| 427 | #include <linux/linkage.h> | 427 | #include <linux/linkage.h> |
| 428 | #include <asm/syscalls.h> | ||
| 428 | 429 | ||
| 429 | #define __ARCH_WANT_IPC_PARSE_VERSION | 430 | #define __ARCH_WANT_IPC_PARSE_VERSION |
| 430 | #define __ARCH_WANT_OLD_READDIR | 431 | #define __ARCH_WANT_OLD_READDIR |
| @@ -460,44 +461,10 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
| 460 | * System call prototypes. | 461 | * System call prototypes. |
| 461 | */ | 462 | */ |
| 462 | #ifdef __KERNEL_SYSCALLS__ | 463 | #ifdef __KERNEL_SYSCALLS__ |
| 463 | extern pid_t setsid(void); | ||
| 464 | extern int write(int fd, const char *buf, off_t count); | ||
| 465 | extern int read(int fd, char *buf, off_t count); | ||
| 466 | extern off_t lseek(int fd, off_t offset, int count); | ||
| 467 | extern int dup(int fd); | ||
| 468 | extern int execve(const char *file, char **argv, char **envp); | 464 | extern int execve(const char *file, char **argv, char **envp); |
| 469 | extern int open(const char *file, int flag, int mode); | ||
| 470 | extern int close(int fd); | ||
| 471 | extern pid_t waitpid(pid_t pid, int *wait_stat, int options); | ||
| 472 | #endif /* __KERNEL_SYSCALLS__ */ | 465 | #endif /* __KERNEL_SYSCALLS__ */ |
| 473 | 466 | ||
| 474 | /* | 467 | /* |
| 475 | * Functions that implement syscalls. | ||
| 476 | */ | ||
| 477 | unsigned long sys_mmap(unsigned long addr, size_t len, unsigned long prot, | ||
| 478 | unsigned long flags, unsigned long fd, off_t offset); | ||
| 479 | unsigned long sys_mmap2(unsigned long addr, size_t len, | ||
| 480 | unsigned long prot, unsigned long flags, | ||
| 481 | unsigned long fd, unsigned long pgoff); | ||
| 482 | struct pt_regs; | ||
| 483 | int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, | ||
| 484 | unsigned long a3, unsigned long a4, unsigned long a5, | ||
| 485 | struct pt_regs *regs); | ||
| 486 | int sys_clone(unsigned long clone_flags, unsigned long usp, | ||
| 487 | int __user *parent_tidp, void __user *child_threadptr, | ||
| 488 | int __user *child_tidp, int p6, struct pt_regs *regs); | ||
| 489 | int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3, | ||
| 490 | unsigned long p4, unsigned long p5, unsigned long p6, | ||
| 491 | struct pt_regs *regs); | ||
| 492 | int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3, | ||
| 493 | unsigned long p4, unsigned long p5, unsigned long p6, | ||
| 494 | struct pt_regs *regs); | ||
| 495 | int sys_pipe(int __user *fildes); | ||
| 496 | struct sigaction; | ||
| 497 | long sys_rt_sigaction(int sig, const struct sigaction __user *act, | ||
| 498 | struct sigaction __user *oact, size_t sigsetsize); | ||
| 499 | |||
| 500 | /* | ||
| 501 | * "Conditional" syscalls | 468 | * "Conditional" syscalls |
| 502 | * | 469 | * |
| 503 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | 470 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), |
diff --git a/include/asm-powerpc/vdso_datapage.h b/include/asm-powerpc/vdso_datapage.h index 7aa92086c3fb..8a94f0eba5e9 100644 --- a/include/asm-powerpc/vdso_datapage.h +++ b/include/asm-powerpc/vdso_datapage.h | |||
| @@ -55,6 +55,9 @@ struct vdso_data { | |||
| 55 | __u32 minor; /* Minor number 0x14 */ | 55 | __u32 minor; /* Minor number 0x14 */ |
| 56 | } version; | 56 | } version; |
| 57 | 57 | ||
| 58 | /* Note about the platform flags: it now only contains the lpar | ||
| 59 | * bit. The actual platform number is dead and burried | ||
| 60 | */ | ||
| 58 | __u32 platform; /* Platform flags 0x18 */ | 61 | __u32 platform; /* Platform flags 0x18 */ |
| 59 | __u32 processor; /* Processor type 0x1C */ | 62 | __u32 processor; /* Processor type 0x1C */ |
| 60 | __u64 processorCount; /* # of physical processors 0x20 */ | 63 | __u64 processorCount; /* # of physical processors 0x20 */ |
