#define PPC_FEATURE_HAS_SPE 0x00800000
#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000
#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000
+#define PPC_FEATURE_NO_TB 0x00100000
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
struct cpu_spec;
struct op_powerpc_model;
-#ifdef __powerpc64__
typedef void (*cpu_setup_t)(unsigned long offset, struct cpu_spec* spec);
-#else /* __powerpc64__ */
-typedef void (*cpu_setup_t)(unsigned long offset, int cpu_nr, struct cpu_spec* spec);
-#endif /* __powerpc64__ */
struct cpu_spec {
/* CPU is matched via (PVR & pvr_mask) == pvr_value */
* BHT, SPD, etc... from head.S before branching to identify_machine
*/
cpu_setup_t cpu_setup;
-#ifdef __powerpc64__
/* Used by oprofile userspace to select the right counters */
char *oprofile_cpu_type;
/* Processor specific oprofile operations */
struct op_powerpc_model *oprofile_model;
-#endif /* __powerpc64__ */
};
-extern struct cpu_spec cpu_specs[];
-
-#ifdef __powerpc64__
extern struct cpu_spec *cur_cpu_spec;
-#else /* __powerpc64__ */
-extern struct cpu_spec *cur_cpu_spec[];
-#endif /* __powerpc64__ */
+
+extern void identify_cpu(unsigned long offset, unsigned long cpu);
+extern void do_cpu_ftr_fixups(unsigned long offset);
#endif /* __ASSEMBLY__ */
#ifndef __ASSEMBLY__
-#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_64 | \
- PPC_FEATURE_HAS_FPU | PPC_FEATURE_HAS_MMU)
-
#define CPU_FTR_PPCAS_ARCH_V2_BASE (CPU_FTR_SLB | \
CPU_FTR_TLBIEL | CPU_FTR_NOEXECUTE | \
CPU_FTR_NODSISRALIGN | CPU_FTR_CTRL)
{
return (CPU_FTRS_ALWAYS & feature) ||
(CPU_FTRS_POSSIBLE
-#ifndef __powerpc64__
- & cur_cpu_spec[0]->cpu_features
-#else
& cur_cpu_spec->cpu_features
-#endif
& feature);
}