|
|
|
@ -38,6 +38,24 @@ |
|
|
|
|
#define MPIDR_AFFINITY_LEVEL(mpidr, level) \ |
|
|
|
|
((mpidr >> (MPIDR_LEVEL_BITS * level)) & MPIDR_LEVEL_MASK) |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_IMP_ARM 0x41 |
|
|
|
|
#define ARM_CPU_IMP_INTEL 0x69 |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_PART_ARM1136 0xB360 |
|
|
|
|
#define ARM_CPU_PART_ARM1156 0xB560 |
|
|
|
|
#define ARM_CPU_PART_ARM1176 0xB760 |
|
|
|
|
#define ARM_CPU_PART_ARM11MPCORE 0xB020 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A8 0xC080 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A9 0xC090 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A5 0xC050 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A15 0xC0F0 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A7 0xC070 |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_MASK 0xe000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V1 0x2000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V2 0x4000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V3 0x6000 |
|
|
|
|
|
|
|
|
|
extern unsigned int processor_id; |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_CPU_CP15 |
|
|
|
@ -50,6 +68,7 @@ extern unsigned int processor_id; |
|
|
|
|
: "cc"); \
|
|
|
|
|
__val; \
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
#define read_cpuid_ext(ext_reg) \ |
|
|
|
|
({ \
|
|
|
|
|
unsigned int __val; \
|
|
|
|
@ -59,29 +78,24 @@ extern unsigned int processor_id; |
|
|
|
|
: "cc"); \
|
|
|
|
|
__val; \
|
|
|
|
|
}) |
|
|
|
|
#else |
|
|
|
|
#define read_cpuid(reg) (processor_id) |
|
|
|
|
#define read_cpuid_ext(reg) 0 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_IMP_ARM 0x41 |
|
|
|
|
#define ARM_CPU_IMP_INTEL 0x69 |
|
|
|
|
#else /* ifdef CONFIG_CPU_CP15 */ |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_PART_ARM1136 0xB360 |
|
|
|
|
#define ARM_CPU_PART_ARM1156 0xB560 |
|
|
|
|
#define ARM_CPU_PART_ARM1176 0xB760 |
|
|
|
|
#define ARM_CPU_PART_ARM11MPCORE 0xB020 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A8 0xC080 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A9 0xC090 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A5 0xC050 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A15 0xC0F0 |
|
|
|
|
#define ARM_CPU_PART_CORTEX_A7 0xC070 |
|
|
|
|
/*
|
|
|
|
|
* read_cpuid and read_cpuid_ext should only ever be called on machines that |
|
|
|
|
* have cp15 so warn on other usages. |
|
|
|
|
*/ |
|
|
|
|
#define read_cpuid(reg) \ |
|
|
|
|
({ \
|
|
|
|
|
WARN_ON_ONCE(1); \
|
|
|
|
|
0; \
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_MASK 0xe000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V1 0x2000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V2 0x4000 |
|
|
|
|
#define ARM_CPU_XSCALE_ARCH_V3 0x6000 |
|
|
|
|
#define read_cpuid_ext(reg) read_cpuid(reg) |
|
|
|
|
|
|
|
|
|
#endif /* ifdef CONFIG_CPU_CP15 / else */ |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_CPU_CP15 |
|
|
|
|
/*
|
|
|
|
|
* The CPU ID never changes at run time, so we might as well tell the |
|
|
|
|
* compiler that it's constant. Use this function to read the CPU ID |
|
|
|
@ -92,6 +106,15 @@ static inline unsigned int __attribute_const__ read_cpuid_id(void) |
|
|
|
|
return read_cpuid(CPUID_ID); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#else /* ifdef CONFIG_CPU_CP15 */ |
|
|
|
|
|
|
|
|
|
static inline unsigned int __attribute_const__ read_cpuid_id(void) |
|
|
|
|
{ |
|
|
|
|
return processor_id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif /* ifdef CONFIG_CPU_CP15 / else */ |
|
|
|
|
|
|
|
|
|
static inline unsigned int __attribute_const__ read_cpuid_implementor(void) |
|
|
|
|
{ |
|
|
|
|
return (read_cpuid_id() & 0xFF000000) >> 24; |
|
|
|
|