diff options
46 files changed, 913 insertions, 2053 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 65c3f2474f5e..29035e86a59d 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
| @@ -293,4 +293,13 @@ | |||
| 293 | .macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f | 293 | .macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f |
| 294 | usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort | 294 | usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort |
| 295 | .endm | 295 | .endm |
| 296 | |||
| 297 | /* Utility macro for declaring string literals */ | ||
| 298 | .macro string name:req, string | ||
| 299 | .type \name , #object | ||
| 300 | \name: | ||
| 301 | .asciz "\string" | ||
| 302 | .size \name , . - \name | ||
| 303 | .endm | ||
| 304 | |||
| 296 | #endif /* __ASM_ASSEMBLER_H__ */ | 305 | #endif /* __ASM_ASSEMBLER_H__ */ |
diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h index c1062c317103..c93a22a8b924 100644 --- a/arch/arm/include/asm/hwcap.h +++ b/arch/arm/include/asm/hwcap.h | |||
| @@ -4,22 +4,26 @@ | |||
| 4 | /* | 4 | /* |
| 5 | * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP | 5 | * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP |
| 6 | */ | 6 | */ |
| 7 | #define HWCAP_SWP 1 | 7 | #define HWCAP_SWP (1 << 0) |
| 8 | #define HWCAP_HALF 2 | 8 | #define HWCAP_HALF (1 << 1) |
| 9 | #define HWCAP_THUMB 4 | 9 | #define HWCAP_THUMB (1 << 2) |
| 10 | #define HWCAP_26BIT 8 /* Play it safe */ | 10 | #define HWCAP_26BIT (1 << 3) /* Play it safe */ |
| 11 | #define HWCAP_FAST_MULT 16 | 11 | #define HWCAP_FAST_MULT (1 << 4) |
| 12 | #define HWCAP_FPA 32 | 12 | #define HWCAP_FPA (1 << 5) |
| 13 | #define HWCAP_VFP 64 | 13 | #define HWCAP_VFP (1 << 6) |
| 14 | #define HWCAP_EDSP 128 | 14 | #define HWCAP_EDSP (1 << 7) |
| 15 | #define HWCAP_JAVA 256 | 15 | #define HWCAP_JAVA (1 << 8) |
| 16 | #define HWCAP_IWMMXT 512 | 16 | #define HWCAP_IWMMXT (1 << 9) |
| 17 | #define HWCAP_CRUNCH 1024 | 17 | #define HWCAP_CRUNCH (1 << 10) |
| 18 | #define HWCAP_THUMBEE 2048 | 18 | #define HWCAP_THUMBEE (1 << 11) |
| 19 | #define HWCAP_NEON 4096 | 19 | #define HWCAP_NEON (1 << 12) |
| 20 | #define HWCAP_VFPv3 8192 | 20 | #define HWCAP_VFPv3 (1 << 13) |
| 21 | #define HWCAP_VFPv3D16 16384 | 21 | #define HWCAP_VFPv3D16 (1 << 14) |
| 22 | #define HWCAP_TLS 32768 | 22 | #define HWCAP_TLS (1 << 15) |
| 23 | #define HWCAP_VFPv4 (1 << 16) | ||
| 24 | #define HWCAP_IDIVA (1 << 17) | ||
| 25 | #define HWCAP_IDIVT (1 << 18) | ||
| 26 | #define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) | ||
| 23 | 27 | ||
| 24 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) | 28 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) |
| 25 | /* | 29 | /* |
diff --git a/arch/arm/include/asm/perf_event.h b/arch/arm/include/asm/perf_event.h index c4aa4e8c6af9..0f8e3827a89b 100644 --- a/arch/arm/include/asm/perf_event.h +++ b/arch/arm/include/asm/perf_event.h | |||
| @@ -24,6 +24,8 @@ enum arm_perf_pmu_ids { | |||
| 24 | ARM_PERF_PMU_ID_V6MP, | 24 | ARM_PERF_PMU_ID_V6MP, |
| 25 | ARM_PERF_PMU_ID_CA8, | 25 | ARM_PERF_PMU_ID_CA8, |
| 26 | ARM_PERF_PMU_ID_CA9, | 26 | ARM_PERF_PMU_ID_CA9, |
| 27 | ARM_PERF_PMU_ID_CA5, | ||
| 28 | ARM_PERF_PMU_ID_CA15, | ||
| 27 | ARM_NUM_PMU_IDS, | 29 | ARM_NUM_PMU_IDS, |
| 28 | }; | 30 | }; |
| 29 | 31 | ||
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index d53c0abc4dd3..262ea67f60ae 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c | |||
| @@ -660,6 +660,12 @@ init_hw_perf_events(void) | |||
| 660 | case 0xC090: /* Cortex-A9 */ | 660 | case 0xC090: /* Cortex-A9 */ |
| 661 | armpmu = armv7_a9_pmu_init(); | 661 | armpmu = armv7_a9_pmu_init(); |
| 662 | break; | 662 | break; |
| 663 | case 0xC050: /* Cortex-A5 */ | ||
| 664 | armpmu = armv7_a5_pmu_init(); | ||
| 665 | break; | ||
| 666 | case 0xC0F0: /* Cortex-A15 */ | ||
| 667 | armpmu = armv7_a15_pmu_init(); | ||
| 668 | break; | ||
| 663 | } | 669 | } |
| 664 | /* Intel CPUs [xscale]. */ | 670 | /* Intel CPUs [xscale]. */ |
| 665 | } else if (0x69 == implementor) { | 671 | } else if (0x69 == implementor) { |
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index 4960686afb58..963317896c80 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c | |||
| @@ -17,17 +17,23 @@ | |||
| 17 | */ | 17 | */ |
| 18 | 18 | ||
| 19 | #ifdef CONFIG_CPU_V7 | 19 | #ifdef CONFIG_CPU_V7 |
| 20 | /* Common ARMv7 event types */ | 20 | /* |
| 21 | * Common ARMv7 event types | ||
| 22 | * | ||
| 23 | * Note: An implementation may not be able to count all of these events | ||
| 24 | * but the encodings are considered to be `reserved' in the case that | ||
| 25 | * they are not available. | ||
| 26 | */ | ||
| 21 | enum armv7_perf_types { | 27 | enum armv7_perf_types { |
| 22 | ARMV7_PERFCTR_PMNC_SW_INCR = 0x00, | 28 | ARMV7_PERFCTR_PMNC_SW_INCR = 0x00, |
| 23 | ARMV7_PERFCTR_IFETCH_MISS = 0x01, | 29 | ARMV7_PERFCTR_IFETCH_MISS = 0x01, |
| 24 | ARMV7_PERFCTR_ITLB_MISS = 0x02, | 30 | ARMV7_PERFCTR_ITLB_MISS = 0x02, |
| 25 | ARMV7_PERFCTR_DCACHE_REFILL = 0x03, | 31 | ARMV7_PERFCTR_DCACHE_REFILL = 0x03, /* L1 */ |
| 26 | ARMV7_PERFCTR_DCACHE_ACCESS = 0x04, | 32 | ARMV7_PERFCTR_DCACHE_ACCESS = 0x04, /* L1 */ |
| 27 | ARMV7_PERFCTR_DTLB_REFILL = 0x05, | 33 | ARMV7_PERFCTR_DTLB_REFILL = 0x05, |
| 28 | ARMV7_PERFCTR_DREAD = 0x06, | 34 | ARMV7_PERFCTR_DREAD = 0x06, |
| 29 | ARMV7_PERFCTR_DWRITE = 0x07, | 35 | ARMV7_PERFCTR_DWRITE = 0x07, |
| 30 | 36 | ARMV7_PERFCTR_INSTR_EXECUTED = 0x08, | |
| 31 | ARMV7_PERFCTR_EXC_TAKEN = 0x09, | 37 | ARMV7_PERFCTR_EXC_TAKEN = 0x09, |
| 32 | ARMV7_PERFCTR_EXC_EXECUTED = 0x0A, | 38 | ARMV7_PERFCTR_EXC_EXECUTED = 0x0A, |
| 33 | ARMV7_PERFCTR_CID_WRITE = 0x0B, | 39 | ARMV7_PERFCTR_CID_WRITE = 0x0B, |
| @@ -39,21 +45,30 @@ enum armv7_perf_types { | |||
| 39 | */ | 45 | */ |
| 40 | ARMV7_PERFCTR_PC_WRITE = 0x0C, | 46 | ARMV7_PERFCTR_PC_WRITE = 0x0C, |
| 41 | ARMV7_PERFCTR_PC_IMM_BRANCH = 0x0D, | 47 | ARMV7_PERFCTR_PC_IMM_BRANCH = 0x0D, |
| 48 | ARMV7_PERFCTR_PC_PROC_RETURN = 0x0E, | ||
| 42 | ARMV7_PERFCTR_UNALIGNED_ACCESS = 0x0F, | 49 | ARMV7_PERFCTR_UNALIGNED_ACCESS = 0x0F, |
| 50 | |||
| 51 | /* These events are defined by the PMUv2 supplement (ARM DDI 0457A). */ | ||
| 43 | ARMV7_PERFCTR_PC_BRANCH_MIS_PRED = 0x10, | 52 | ARMV7_PERFCTR_PC_BRANCH_MIS_PRED = 0x10, |
| 44 | ARMV7_PERFCTR_CLOCK_CYCLES = 0x11, | 53 | ARMV7_PERFCTR_CLOCK_CYCLES = 0x11, |
| 45 | 54 | ARMV7_PERFCTR_PC_BRANCH_PRED = 0x12, | |
| 46 | ARMV7_PERFCTR_PC_BRANCH_MIS_USED = 0x12, | 55 | ARMV7_PERFCTR_MEM_ACCESS = 0x13, |
| 56 | ARMV7_PERFCTR_L1_ICACHE_ACCESS = 0x14, | ||
| 57 | ARMV7_PERFCTR_L1_DCACHE_WB = 0x15, | ||
| 58 | ARMV7_PERFCTR_L2_DCACHE_ACCESS = 0x16, | ||
| 59 | ARMV7_PERFCTR_L2_DCACHE_REFILL = 0x17, | ||
| 60 | ARMV7_PERFCTR_L2_DCACHE_WB = 0x18, | ||
| 61 | ARMV7_PERFCTR_BUS_ACCESS = 0x19, | ||
| 62 | ARMV7_PERFCTR_MEMORY_ERROR = 0x1A, | ||
| 63 | ARMV7_PERFCTR_INSTR_SPEC = 0x1B, | ||
| 64 | ARMV7_PERFCTR_TTBR_WRITE = 0x1C, | ||
| 65 | ARMV7_PERFCTR_BUS_CYCLES = 0x1D, | ||
| 47 | 66 | ||
| 48 | ARMV7_PERFCTR_CPU_CYCLES = 0xFF | 67 | ARMV7_PERFCTR_CPU_CYCLES = 0xFF |
| 49 | }; | 68 | }; |
| 50 | 69 | ||
| 51 | /* ARMv7 Cortex-A8 specific event types */ | 70 | /* ARMv7 Cortex-A8 specific event types */ |
| 52 | enum armv7_a8_perf_types { | 71 | enum armv7_a8_perf_types { |
| 53 | ARMV7_PERFCTR_INSTR_EXECUTED = 0x08, | ||
| 54 | |||
| 55 | ARMV7_PERFCTR_PC_PROC_RETURN = 0x0E, | ||
| 56 | |||
| 57 | ARMV7_PERFCTR_WRITE_BUFFER_FULL = 0x40, | 72 | ARMV7_PERFCTR_WRITE_BUFFER_FULL = 0x40, |
| 58 | ARMV7_PERFCTR_L2_STORE_MERGED = 0x41, | 73 | ARMV7_PERFCTR_L2_STORE_MERGED = 0x41, |
| 59 | ARMV7_PERFCTR_L2_STORE_BUFF = 0x42, | 74 | ARMV7_PERFCTR_L2_STORE_BUFF = 0x42, |
| @@ -138,6 +153,39 @@ enum armv7_a9_perf_types { | |||
| 138 | ARMV7_PERFCTR_PLE_RQST_PROG = 0xA5 | 153 | ARMV7_PERFCTR_PLE_RQST_PROG = 0xA5 |
| 139 | }; | 154 | }; |
| 140 | 155 | ||
| 156 | /* ARMv7 Cortex-A5 specific event types */ | ||
| 157 | enum armv7_a5_perf_types { | ||
| 158 | ARMV7_PERFCTR_IRQ_TAKEN = 0x86, | ||
| 159 | ARMV7_PERFCTR_FIQ_TAKEN = 0x87, | ||
| 160 | |||
| 161 | ARMV7_PERFCTR_EXT_MEM_RQST = 0xc0, | ||
| 162 | ARMV7_PERFCTR_NC_EXT_MEM_RQST = 0xc1, | ||
| 163 | ARMV7_PERFCTR_PREFETCH_LINEFILL = 0xc2, | ||
| 164 | ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP = 0xc3, | ||
| 165 | ARMV7_PERFCTR_ENTER_READ_ALLOC = 0xc4, | ||
| 166 | ARMV7_PERFCTR_READ_ALLOC = 0xc5, | ||
| 167 | |||
| 168 | ARMV7_PERFCTR_STALL_SB_FULL = 0xc9, | ||
| 169 | }; | ||
| 170 | |||
| 171 | /* ARMv7 Cortex-A15 specific event types */ | ||
| 172 | enum armv7_a15_perf_types { | ||
| 173 | ARMV7_PERFCTR_L1_DCACHE_READ_ACCESS = 0x40, | ||
| 174 | ARMV7_PERFCTR_L1_DCACHE_WRITE_ACCESS = 0x41, | ||
| 175 | ARMV7_PERFCTR_L1_DCACHE_READ_REFILL = 0x42, | ||
| 176 | ARMV7_PERFCTR_L1_DCACHE_WRITE_REFILL = 0x43, | ||
| 177 | |||
| 178 | ARMV7_PERFCTR_L1_DTLB_READ_REFILL = 0x4C, | ||
| 179 | ARMV7_PERFCTR_L1_DTLB_WRITE_REFILL = 0x4D, | ||
| 180 | |||
| 181 | ARMV7_PERFCTR_L2_DCACHE_READ_ACCESS = 0x50, | ||
| 182 | ARMV7_PERFCTR_L2_DCACHE_WRITE_ACCESS = 0x51, | ||
| 183 | ARMV7_PERFCTR_L2_DCACHE_READ_REFILL = 0x52, | ||
| 184 | ARMV7_PERFCTR_L2_DCACHE_WRITE_REFILL = 0x53, | ||
| 185 | |||
| 186 | ARMV7_PERFCTR_SPEC_PC_WRITE = 0x76, | ||
| 187 | }; | ||
| 188 | |||
| 141 | /* | 189 | /* |
| 142 | * Cortex-A8 HW events mapping | 190 | * Cortex-A8 HW events mapping |
| 143 | * | 191 | * |
| @@ -207,11 +255,6 @@ static const unsigned armv7_a8_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
| 207 | }, | 255 | }, |
| 208 | }, | 256 | }, |
| 209 | [C(DTLB)] = { | 257 | [C(DTLB)] = { |
| 210 | /* | ||
| 211 | * Only ITLB misses and DTLB refills are supported. | ||
| 212 | * If users want the DTLB refills misses a raw counter | ||
| 213 | * must be used. | ||
| 214 | */ | ||
| 215 | [C(OP_READ)] = { | 258 | [C(OP_READ)] = { |
| 216 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | 259 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, |
| 217 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, | 260 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, |
| @@ -323,11 +366,6 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
| 323 | }, | 366 | }, |
| 324 | }, | 367 | }, |
| 325 | [C(DTLB)] = { | 368 | [C(DTLB)] = { |
| 326 | /* | ||
| 327 | * Only ITLB misses and DTLB refills are supported. | ||
| 328 | * If users want the DTLB refills misses a raw counter | ||
| 329 | * must be used. | ||
| 330 | */ | ||
| 331 | [C(OP_READ)] = { | 369 | [C(OP_READ)] = { |
| 332 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | 370 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, |
| 333 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, | 371 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, |
| @@ -374,6 +412,242 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
| 374 | }; | 412 | }; |
| 375 | 413 | ||
| 376 | /* | 414 | /* |
| 415 | * Cortex-A5 HW events mapping | ||
| 416 | */ | ||
| 417 | static const unsigned armv7_a5_perf_map[PERF_COUNT_HW_MAX] = { | ||
| 418 | [PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES, | ||
| 419 | [PERF_COUNT_HW_INSTRUCTIONS] = ARMV7_PERFCTR_INSTR_EXECUTED, | ||
| 420 | [PERF_COUNT_HW_CACHE_REFERENCES] = HW_OP_UNSUPPORTED, | ||
| 421 | [PERF_COUNT_HW_CACHE_MISSES] = HW_OP_UNSUPPORTED, | ||
| 422 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_PC_WRITE, | ||
| 423 | [PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 424 | [PERF_COUNT_HW_BUS_CYCLES] = HW_OP_UNSUPPORTED, | ||
| 425 | }; | ||
| 426 | |||
| 427 | static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | ||
| 428 | [PERF_COUNT_HW_CACHE_OP_MAX] | ||
| 429 | [PERF_COUNT_HW_CACHE_RESULT_MAX] = { | ||
| 430 | [C(L1D)] = { | ||
| 431 | [C(OP_READ)] = { | ||
| 432 | [C(RESULT_ACCESS)] | ||
| 433 | = ARMV7_PERFCTR_DCACHE_ACCESS, | ||
| 434 | [C(RESULT_MISS)] | ||
| 435 | = ARMV7_PERFCTR_DCACHE_REFILL, | ||
| 436 | }, | ||
| 437 | [C(OP_WRITE)] = { | ||
| 438 | [C(RESULT_ACCESS)] | ||
| 439 | = ARMV7_PERFCTR_DCACHE_ACCESS, | ||
| 440 | [C(RESULT_MISS)] | ||
| 441 | = ARMV7_PERFCTR_DCACHE_REFILL, | ||
| 442 | }, | ||
| 443 | [C(OP_PREFETCH)] = { | ||
| 444 | [C(RESULT_ACCESS)] | ||
| 445 | = ARMV7_PERFCTR_PREFETCH_LINEFILL, | ||
| 446 | [C(RESULT_MISS)] | ||
| 447 | = ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP, | ||
| 448 | }, | ||
| 449 | }, | ||
| 450 | [C(L1I)] = { | ||
| 451 | [C(OP_READ)] = { | ||
| 452 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS, | ||
| 453 | [C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS, | ||
| 454 | }, | ||
| 455 | [C(OP_WRITE)] = { | ||
| 456 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS, | ||
| 457 | [C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS, | ||
| 458 | }, | ||
| 459 | /* | ||
| 460 | * The prefetch counters don't differentiate between the I | ||
| 461 | * side and the D side. | ||
| 462 | */ | ||
| 463 | [C(OP_PREFETCH)] = { | ||
| 464 | [C(RESULT_ACCESS)] | ||
| 465 | = ARMV7_PERFCTR_PREFETCH_LINEFILL, | ||
| 466 | [C(RESULT_MISS)] | ||
| 467 | = ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP, | ||
| 468 | }, | ||
| 469 | }, | ||
| 470 | [C(LL)] = { | ||
| 471 | [C(OP_READ)] = { | ||
| 472 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 473 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 474 | }, | ||
| 475 | [C(OP_WRITE)] = { | ||
| 476 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 477 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 478 | }, | ||
| 479 | [C(OP_PREFETCH)] = { | ||
| 480 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 481 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 482 | }, | ||
| 483 | }, | ||
| 484 | [C(DTLB)] = { | ||
| 485 | [C(OP_READ)] = { | ||
| 486 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 487 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, | ||
| 488 | }, | ||
| 489 | [C(OP_WRITE)] = { | ||
| 490 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 491 | [C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL, | ||
| 492 | }, | ||
| 493 | [C(OP_PREFETCH)] = { | ||
| 494 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 495 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 496 | }, | ||
| 497 | }, | ||
| 498 | [C(ITLB)] = { | ||
| 499 | [C(OP_READ)] = { | ||
| 500 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 501 | [C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS, | ||
| 502 | }, | ||
| 503 | [C(OP_WRITE)] = { | ||
| 504 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 505 | [C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS, | ||
| 506 | }, | ||
| 507 | [C(OP_PREFETCH)] = { | ||
| 508 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 509 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 510 | }, | ||
| 511 | }, | ||
| 512 | [C(BPU)] = { | ||
| 513 | [C(OP_READ)] = { | ||
| 514 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED, | ||
| 515 | [C(RESULT_MISS)] | ||
| 516 | = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 517 | }, | ||
| 518 | [C(OP_WRITE)] = { | ||
| 519 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED, | ||
| 520 | [C(RESULT_MISS)] | ||
| 521 | = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 522 | }, | ||
| 523 | [C(OP_PREFETCH)] = { | ||
| 524 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 525 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 526 | }, | ||
| 527 | }, | ||
| 528 | }; | ||
| 529 | |||
| 530 | /* | ||
| 531 | * Cortex-A15 HW events mapping | ||
| 532 | */ | ||
| 533 | static const unsigned armv7_a15_perf_map[PERF_COUNT_HW_MAX] = { | ||
| 534 | [PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES, | ||
| 535 | [PERF_COUNT_HW_INSTRUCTIONS] = ARMV7_PERFCTR_INSTR_EXECUTED, | ||
| 536 | [PERF_COUNT_HW_CACHE_REFERENCES] = HW_OP_UNSUPPORTED, | ||
| 537 | [PERF_COUNT_HW_CACHE_MISSES] = HW_OP_UNSUPPORTED, | ||
| 538 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_SPEC_PC_WRITE, | ||
| 539 | [PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 540 | [PERF_COUNT_HW_BUS_CYCLES] = ARMV7_PERFCTR_BUS_CYCLES, | ||
| 541 | }; | ||
| 542 | |||
| 543 | static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | ||
| 544 | [PERF_COUNT_HW_CACHE_OP_MAX] | ||
| 545 | [PERF_COUNT_HW_CACHE_RESULT_MAX] = { | ||
| 546 | [C(L1D)] = { | ||
| 547 | [C(OP_READ)] = { | ||
| 548 | [C(RESULT_ACCESS)] | ||
| 549 | = ARMV7_PERFCTR_L1_DCACHE_READ_ACCESS, | ||
| 550 | [C(RESULT_MISS)] | ||
| 551 | = ARMV7_PERFCTR_L1_DCACHE_READ_REFILL, | ||
| 552 | }, | ||
| 553 | [C(OP_WRITE)] = { | ||
| 554 | [C(RESULT_ACCESS)] | ||
| 555 | = ARMV7_PERFCTR_L1_DCACHE_WRITE_ACCESS, | ||
| 556 | [C(RESULT_MISS)] | ||
| 557 | = ARMV7_PERFCTR_L1_DCACHE_WRITE_REFILL, | ||
| 558 | }, | ||
| 559 | [C(OP_PREFETCH)] = { | ||
| 560 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 561 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 562 | }, | ||
| 563 | }, | ||
| 564 | [C(L1I)] = { | ||
| 565 | /* | ||
| 566 | * Not all performance counters differentiate between read | ||
| 567 | * and write accesses/misses so we're not always strictly | ||
| 568 | * correct, but it's the best we can do. Writes and reads get | ||
| 569 | * combined in these cases. | ||
| 570 | */ | ||
| 571 | [C(OP_READ)] = { | ||
| 572 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS, | ||
| 573 | [C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS, | ||
| 574 | }, | ||
| 575 | [C(OP_WRITE)] = { | ||
| 576 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS, | ||
| 577 | [C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS, | ||
| 578 | }, | ||
| 579 | [C(OP_PREFETCH)] = { | ||
| 580 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 581 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 582 | }, | ||
| 583 | }, | ||
| 584 | [C(LL)] = { | ||
| 585 | [C(OP_READ)] = { | ||
| 586 | [C(RESULT_ACCESS)] | ||
| 587 | = ARMV7_PERFCTR_L2_DCACHE_READ_ACCESS, | ||
| 588 | [C(RESULT_MISS)] | ||
| 589 | = ARMV7_PERFCTR_L2_DCACHE_READ_REFILL, | ||
| 590 | }, | ||
| 591 | [C(OP_WRITE)] = { | ||
| 592 | [C(RESULT_ACCESS)] | ||
| 593 | = ARMV7_PERFCTR_L2_DCACHE_WRITE_ACCESS, | ||
| 594 | [C(RESULT_MISS)] | ||
| 595 | = ARMV7_PERFCTR_L2_DCACHE_WRITE_REFILL, | ||
| 596 | }, | ||
| 597 | [C(OP_PREFETCH)] = { | ||
| 598 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 599 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 600 | }, | ||
| 601 | }, | ||
| 602 | [C(DTLB)] = { | ||
| 603 | [C(OP_READ)] = { | ||
| 604 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 605 | [C(RESULT_MISS)] | ||
| 606 | = ARMV7_PERFCTR_L1_DTLB_READ_REFILL, | ||
| 607 | }, | ||
| 608 | [C(OP_WRITE)] = { | ||
| 609 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 610 | [C(RESULT_MISS)] | ||
| 611 | = ARMV7_PERFCTR_L1_DTLB_WRITE_REFILL, | ||
| 612 | }, | ||
| 613 | [C(OP_PREFETCH)] = { | ||
| 614 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 615 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 616 | }, | ||
| 617 | }, | ||
| 618 | [C(ITLB)] = { | ||
| 619 | [C(OP_READ)] = { | ||
| 620 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 621 | [C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS, | ||
| 622 | }, | ||
| 623 | [C(OP_WRITE)] = { | ||
| 624 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 625 | [C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS, | ||
| 626 | }, | ||
| 627 | [C(OP_PREFETCH)] = { | ||
| 628 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 629 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 630 | }, | ||
| 631 | }, | ||
| 632 | [C(BPU)] = { | ||
| 633 | [C(OP_READ)] = { | ||
| 634 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED, | ||
| 635 | [C(RESULT_MISS)] | ||
| 636 | = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 637 | }, | ||
| 638 | [C(OP_WRITE)] = { | ||
| 639 | [C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED, | ||
| 640 | [C(RESULT_MISS)] | ||
| 641 | = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, | ||
| 642 | }, | ||
| 643 | [C(OP_PREFETCH)] = { | ||
| 644 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
| 645 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
| 646 | }, | ||
| 647 | }, | ||
| 648 | }; | ||
| 649 | |||
| 650 | /* | ||
| 377 | * Perf Events counters | 651 | * Perf Events counters |
| 378 | */ | 652 | */ |
| 379 | enum armv7_counters { | 653 | enum armv7_counters { |
| @@ -905,6 +1179,26 @@ static const struct arm_pmu *__init armv7_a9_pmu_init(void) | |||
| 905 | armv7pmu.num_events = armv7_read_num_pmnc_events(); | 1179 | armv7pmu.num_events = armv7_read_num_pmnc_events(); |
| 906 | return &armv7pmu; | 1180 | return &armv7pmu; |
| 907 | } | 1181 | } |
| 1182 | |||
| 1183 | static const struct arm_pmu *__init armv7_a5_pmu_init(void) | ||
| 1184 | { | ||
| 1185 | armv7pmu.id = ARM_PERF_PMU_ID_CA5; | ||
| 1186 | armv7pmu.name = "ARMv7 Cortex-A5"; | ||
| 1187 | armv7pmu.cache_map = &armv7_a5_perf_cache_map; | ||
| 1188 | armv7pmu.event_map = &armv7_a5_perf_map; | ||
| 1189 | armv7pmu.num_events = armv7_read_num_pmnc_events(); | ||
| 1190 | return &armv7pmu; | ||
| 1191 | } | ||
| 1192 | |||
| 1193 | static const struct arm_pmu *__init armv7_a15_pmu_init(void) | ||
| 1194 | { | ||
| 1195 | armv7pmu.id = ARM_PERF_PMU_ID_CA15; | ||
| 1196 | armv7pmu.name = "ARMv7 Cortex-A15"; | ||
| 1197 | armv7pmu.cache_map = &armv7_a15_perf_cache_map; | ||
| 1198 | armv7pmu.event_map = &armv7_a15_perf_map; | ||
| 1199 | armv7pmu.num_events = armv7_read_num_pmnc_events(); | ||
| 1200 | return &armv7pmu; | ||
| 1201 | } | ||
| 908 | #else | 1202 | #else |
| 909 | static const struct arm_pmu *__init armv7_a8_pmu_init(void) | 1203 | static const struct arm_pmu *__init armv7_a8_pmu_init(void) |
| 910 | { | 1204 | { |
| @@ -915,4 +1209,14 @@ static const struct arm_pmu *__init armv7_a9_pmu_init(void) | |||
| 915 | { | 1209 | { |
| 916 | return NULL; | 1210 | return NULL; |
| 917 | } | 1211 | } |
| 1212 | |||
| 1213 | static const struct arm_pmu *__init armv7_a5_pmu_init(void) | ||
| 1214 | { | ||
| 1215 | return NULL; | ||
| 1216 | } | ||
| 1217 | |||
| 1218 | static const struct arm_pmu *__init armv7_a15_pmu_init(void) | ||
| 1219 | { | ||
| 1220 | return NULL; | ||
| 1221 | } | ||
| 918 | #endif /* CONFIG_CPU_V7 */ | 1222 | #endif /* CONFIG_CPU_V7 */ |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index ed11fb08b05a..699df68fc840 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -977,6 +977,10 @@ static const char *hwcap_str[] = { | |||
| 977 | "neon", | 977 | "neon", |
| 978 | "vfpv3", | 978 | "vfpv3", |
| 979 | "vfpv3d16", | 979 | "vfpv3d16", |
| 980 | "tls", | ||
| 981 | "vfpv4", | ||
| 982 | "idiva", | ||
| 983 | "idivt", | ||
| 980 | NULL | 984 | NULL |
| 981 | }; | 985 | }; |
| 982 | 986 | ||
diff --git a/arch/arm/mm/cache-fa.S b/arch/arm/mm/cache-fa.S index 1fa6f71470de..072016371093 100644 --- a/arch/arm/mm/cache-fa.S +++ b/arch/arm/mm/cache-fa.S | |||
| @@ -242,16 +242,5 @@ ENDPROC(fa_dma_unmap_area) | |||
| 242 | 242 | ||
| 243 | __INITDATA | 243 | __INITDATA |
| 244 | 244 | ||
| 245 | .type fa_cache_fns, #object | 245 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 246 | ENTRY(fa_cache_fns) | 246 | define_cache_functions fa |
| 247 | .long fa_flush_icache_all | ||
| 248 | .long fa_flush_kern_cache_all | ||
| 249 | .long fa_flush_user_cache_all | ||
| 250 | .long fa_flush_user_cache_range | ||
| 251 | .long fa_coherent_kern_range | ||
| 252 | .long fa_coherent_user_range | ||
| 253 | .long fa_flush_kern_dcache_area | ||
| 254 | .long fa_dma_map_area | ||
| 255 | .long fa_dma_unmap_area | ||
| 256 | .long fa_dma_flush_range | ||
| 257 | .size fa_cache_fns, . - fa_cache_fns | ||
diff --git a/arch/arm/mm/cache-v3.S b/arch/arm/mm/cache-v3.S index 2e2bc406a18d..c2301f226100 100644 --- a/arch/arm/mm/cache-v3.S +++ b/arch/arm/mm/cache-v3.S | |||
| @@ -129,16 +129,5 @@ ENDPROC(v3_dma_map_area) | |||
| 129 | 129 | ||
| 130 | __INITDATA | 130 | __INITDATA |
| 131 | 131 | ||
| 132 | .type v3_cache_fns, #object | 132 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 133 | ENTRY(v3_cache_fns) | 133 | define_cache_functions v3 |
| 134 | .long v3_flush_icache_all | ||
| 135 | .long v3_flush_kern_cache_all | ||
| 136 | .long v3_flush_user_cache_all | ||
| 137 | .long v3_flush_user_cache_range | ||
| 138 | .long v3_coherent_kern_range | ||
| 139 | .long v3_coherent_user_range | ||
| 140 | .long v3_flush_kern_dcache_area | ||
| 141 | .long v3_dma_map_area | ||
| 142 | .long v3_dma_unmap_area | ||
| 143 | .long v3_dma_flush_range | ||
| 144 | .size v3_cache_fns, . - v3_cache_fns | ||
diff --git a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S index a8fefb523f19..fd9bb7addc8d 100644 --- a/arch/arm/mm/cache-v4.S +++ b/arch/arm/mm/cache-v4.S | |||
| @@ -141,16 +141,5 @@ ENDPROC(v4_dma_map_area) | |||
| 141 | 141 | ||
| 142 | __INITDATA | 142 | __INITDATA |
| 143 | 143 | ||
| 144 | .type v4_cache_fns, #object | 144 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 145 | ENTRY(v4_cache_fns) | 145 | define_cache_functions v4 |
| 146 | .long v4_flush_icache_all | ||
| 147 | .long v4_flush_kern_cache_all | ||
| 148 | .long v4_flush_user_cache_all | ||
| 149 | .long v4_flush_user_cache_range | ||
| 150 | .long v4_coherent_kern_range | ||
| 151 | .long v4_coherent_user_range | ||
| 152 | .long v4_flush_kern_dcache_area | ||
| 153 | .long v4_dma_map_area | ||
| 154 | .long v4_dma_unmap_area | ||
| 155 | .long v4_dma_flush_range | ||
| 156 | .size v4_cache_fns, . - v4_cache_fns | ||
diff --git a/arch/arm/mm/cache-v4wb.S b/arch/arm/mm/cache-v4wb.S index f40c69656d8d..4f2c14151ccb 100644 --- a/arch/arm/mm/cache-v4wb.S +++ b/arch/arm/mm/cache-v4wb.S | |||
| @@ -253,16 +253,5 @@ ENDPROC(v4wb_dma_unmap_area) | |||
| 253 | 253 | ||
| 254 | __INITDATA | 254 | __INITDATA |
| 255 | 255 | ||
| 256 | .type v4wb_cache_fns, #object | 256 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 257 | ENTRY(v4wb_cache_fns) | 257 | define_cache_functions v4wb |
| 258 | .long v4wb_flush_icache_all | ||
| 259 | .long v4wb_flush_kern_cache_all | ||
| 260 | .long v4wb_flush_user_cache_all | ||
| 261 | .long v4wb_flush_user_cache_range | ||
| 262 | .long v4wb_coherent_kern_range | ||
| 263 | .long v4wb_coherent_user_range | ||
| 264 | .long v4wb_flush_kern_dcache_area | ||
| 265 | .long v4wb_dma_map_area | ||
| 266 | .long v4wb_dma_unmap_area | ||
| 267 | .long v4wb_dma_flush_range | ||
| 268 | .size v4wb_cache_fns, . - v4wb_cache_fns | ||
diff --git a/arch/arm/mm/cache-v4wt.S b/arch/arm/mm/cache-v4wt.S index a7b276dbda11..4d7b467631ce 100644 --- a/arch/arm/mm/cache-v4wt.S +++ b/arch/arm/mm/cache-v4wt.S | |||
| @@ -197,16 +197,5 @@ ENDPROC(v4wt_dma_map_area) | |||
| 197 | 197 | ||
| 198 | __INITDATA | 198 | __INITDATA |
| 199 | 199 | ||
| 200 | .type v4wt_cache_fns, #object | 200 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 201 | ENTRY(v4wt_cache_fns) | 201 | define_cache_functions v4wt |
| 202 | .long v4wt_flush_icache_all | ||
| 203 | .long v4wt_flush_kern_cache_all | ||
| 204 | .long v4wt_flush_user_cache_all | ||
| 205 | .long v4wt_flush_user_cache_range | ||
| 206 | .long v4wt_coherent_kern_range | ||
| 207 | .long v4wt_coherent_user_range | ||
| 208 | .long v4wt_flush_kern_dcache_area | ||
| 209 | .long v4wt_dma_map_area | ||
| 210 | .long v4wt_dma_unmap_area | ||
| 211 | .long v4wt_dma_flush_range | ||
| 212 | .size v4wt_cache_fns, . - v4wt_cache_fns | ||
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 73b4a8b66a57..74c2e5a33a4d 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S | |||
| @@ -330,16 +330,5 @@ ENDPROC(v6_dma_unmap_area) | |||
| 330 | 330 | ||
| 331 | __INITDATA | 331 | __INITDATA |
| 332 | 332 | ||
| 333 | .type v6_cache_fns, #object | 333 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 334 | ENTRY(v6_cache_fns) | 334 | define_cache_functions v6 |
| 335 | .long v6_flush_icache_all | ||
| 336 | .long v6_flush_kern_cache_all | ||
| 337 | .long v6_flush_user_cache_all | ||
| 338 | .long v6_flush_user_cache_range | ||
| 339 | .long v6_coherent_kern_range | ||
| 340 | .long v6_coherent_user_range | ||
| 341 | .long v6_flush_kern_dcache_area | ||
| 342 | .long v6_dma_map_area | ||
| 343 | .long v6_dma_unmap_area | ||
| 344 | .long v6_dma_flush_range | ||
| 345 | .size v6_cache_fns, . - v6_cache_fns | ||
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index d32f02b61866..3b24bfa3b828 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
| @@ -325,16 +325,5 @@ ENDPROC(v7_dma_unmap_area) | |||
| 325 | 325 | ||
| 326 | __INITDATA | 326 | __INITDATA |
| 327 | 327 | ||
| 328 | .type v7_cache_fns, #object | 328 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 329 | ENTRY(v7_cache_fns) | 329 | define_cache_functions v7 |
| 330 | .long v7_flush_icache_all | ||
| 331 | .long v7_flush_kern_cache_all | ||
| 332 | .long v7_flush_user_cache_all | ||
| 333 | .long v7_flush_user_cache_range | ||
| 334 | .long v7_coherent_kern_range | ||
| 335 | .long v7_coherent_user_range | ||
| 336 | .long v7_flush_kern_dcache_area | ||
| 337 | .long v7_dma_map_area | ||
| 338 | .long v7_dma_unmap_area | ||
| 339 | .long v7_dma_flush_range | ||
| 340 | .size v7_cache_fns, . - v7_cache_fns | ||
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index 6c4e7fd6c8af..67469665d47a 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S | |||
| @@ -364,17 +364,8 @@ ENTRY(arm1020_dma_unmap_area) | |||
| 364 | mov pc, lr | 364 | mov pc, lr |
| 365 | ENDPROC(arm1020_dma_unmap_area) | 365 | ENDPROC(arm1020_dma_unmap_area) |
| 366 | 366 | ||
| 367 | ENTRY(arm1020_cache_fns) | 367 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 368 | .long arm1020_flush_icache_all | 368 | define_cache_functions arm1020 |
| 369 | .long arm1020_flush_kern_cache_all | ||
| 370 | .long arm1020_flush_user_cache_all | ||
| 371 | .long arm1020_flush_user_cache_range | ||
| 372 | .long arm1020_coherent_kern_range | ||
| 373 | .long arm1020_coherent_user_range | ||
| 374 | .long arm1020_flush_kern_dcache_area | ||
| 375 | .long arm1020_dma_map_area | ||
| 376 | .long arm1020_dma_unmap_area | ||
| 377 | .long arm1020_dma_flush_range | ||
| 378 | 369 | ||
| 379 | .align 5 | 370 | .align 5 |
| 380 | ENTRY(cpu_arm1020_dcache_clean_area) | 371 | ENTRY(cpu_arm1020_dcache_clean_area) |
| @@ -477,38 +468,14 @@ arm1020_crval: | |||
| 477 | crval clear=0x0000593f, mmuset=0x00003935, ucset=0x00001930 | 468 | crval clear=0x0000593f, mmuset=0x00003935, ucset=0x00001930 |
| 478 | 469 | ||
| 479 | __INITDATA | 470 | __INITDATA |
| 471 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | ||
| 472 | define_processor_functions arm1020, dabort=v4t_early_abort, pabort=legacy_pabort | ||
| 480 | 473 | ||
| 481 | /* | ||
| 482 | * Purpose : Function pointers used to access above functions - all calls | ||
| 483 | * come through these | ||
| 484 | */ | ||
| 485 | .type arm1020_processor_functions, #object | ||
| 486 | arm1020_processor_functions: | ||
| 487 | .word v4t_early_abort | ||
| 488 | .word legacy_pabort | ||
| 489 | .word cpu_arm1020_proc_init | ||
| 490 | .word cpu_arm1020_proc_fin | ||
| 491 | .word cpu_arm1020_reset | ||
| 492 | .word cpu_arm1020_do_idle | ||
| 493 | .word cpu_arm1020_dcache_clean_area | ||
| 494 | .word cpu_arm1020_switch_mm | ||
| 495 | .word cpu_arm1020_set_pte_ext | ||
| 496 | .word 0 | ||
| 497 | .word 0 | ||
| 498 | .word 0 | ||
| 499 | .size arm1020_processor_functions, . - arm1020_processor_functions | ||
| 500 | 474 | ||
| 501 | .section ".rodata" | 475 | .section ".rodata" |
| 502 | 476 | ||
| 503 | .type cpu_arch_name, #object | 477 | string cpu_arch_name, "armv5t" |
| 504 | cpu_arch_name: | 478 | string cpu_elf_name, "v5" |
| 505 | .asciz "armv5t" | ||
| 506 | .size cpu_arch_name, . - cpu_arch_name | ||
| 507 | |||
| 508 | .type cpu_elf_name, #object | ||
| 509 | cpu_elf_name: | ||
| 510 | .asciz "v5" | ||
| 511 | .size cpu_elf_name, . - cpu_elf_name | ||
| 512 | 479 | ||
| 513 | .type cpu_arm1020_name, #object | 480 | .type cpu_arm1020_name, #object |
| 514 | cpu_arm1020_name: | 481 | cpu_arm1020_name: |
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index 4ce947c19623..4251421c0ed5 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S | |||
| @@ -350,17 +350,8 @@ ENTRY(arm1020e_dma_unmap_area) | |||
| 350 | mov pc, lr | 350 | mov pc, lr |
| 351 | ENDPROC(arm1020e_dma_unmap_area) | 351 | ENDPROC(arm1020e_dma_unmap_area) |
| 352 | 352 | ||
| 353 | ENTRY(arm1020e_cache_fns) | 353 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 354 | .long arm1020e_flush_icache_all | 354 | define_cache_functions arm1020e |
| 355 | .long arm1020e_flush_kern_cache_all | ||
| 356 | .long arm1020e_flush_user_cache_all | ||
| 357 | .long arm1020e_flush_user_cache_range | ||
| 358 | .long arm1020e_coherent_kern_range | ||
| 359 | .long arm1020e_coherent_user_range | ||
| 360 | .long arm1020e_flush_kern_dcache_area | ||
| 361 | .long arm1020e_dma_map_area | ||
| 362 | .long arm1020e_dma_unmap_area | ||
| 363 | .long arm1020e_dma_flush_range | ||
| 364 | 355 | ||
| 365 | .align 5 | 356 | .align 5 |
| 366 | ENTRY(cpu_arm1020e_dcache_clean_area) | 357 | ENTRY(cpu_arm1020e_dcache_clean_area) |
| @@ -458,43 +449,14 @@ arm1020e_crval: | |||
| 458 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930 | 449 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930 |
| 459 | 450 | ||
| 460 | __INITDATA | 451 | __INITDATA |
| 461 | 452 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 462 | /* | 453 | define_processor_functions arm1020e, dabort=v4t_early_abort, pabort=legacy_pabort |
| 463 | * Purpose : Function pointers used to access above functions - all calls | ||
| 464 | * come through these | ||
| 465 | */ | ||
| 466 | .type arm1020e_processor_functions, #object | ||
| 467 | arm1020e_processor_functions: | ||
| 468 | .word v4t_early_abort | ||
| 469 | .word legacy_pabort | ||
| 470 | .word cpu_arm1020e_proc_init | ||
| 471 | .word cpu_arm1020e_proc_fin | ||
| 472 | .word cpu_arm1020e_reset | ||
| 473 | .word cpu_arm1020e_do_idle | ||
| 474 | .word cpu_arm1020e_dcache_clean_area | ||
| 475 | .word cpu_arm1020e_switch_mm | ||
| 476 | .word cpu_arm1020e_set_pte_ext | ||
| 477 | .word 0 | ||
| 478 | .word 0 | ||
| 479 | .word 0 | ||
| 480 | .size arm1020e_processor_functions, . - arm1020e_processor_functions | ||
| 481 | 454 | ||
| 482 | .section ".rodata" | 455 | .section ".rodata" |
| 483 | 456 | ||
| 484 | .type cpu_arch_name, #object | 457 | string cpu_arch_name, "armv5te" |
| 485 | cpu_arch_name: | 458 | string cpu_elf_name, "v5" |
| 486 | .asciz "armv5te" | 459 | string cpu_arm1020e_name, "ARM1020E" |
| 487 | .size cpu_arch_name, . - cpu_arch_name | ||
| 488 | |||
| 489 | .type cpu_elf_name, #object | ||
| 490 | cpu_elf_name: | ||
| 491 | .asciz "v5" | ||
| 492 | .size cpu_elf_name, . - cpu_elf_name | ||
| 493 | |||
| 494 | .type cpu_arm1020e_name, #object | ||
| 495 | cpu_arm1020e_name: | ||
| 496 | .asciz "ARM1020E" | ||
| 497 | .size cpu_arm1020e_name, . - cpu_arm1020e_name | ||
| 498 | 460 | ||
| 499 | .align | 461 | .align |
| 500 | 462 | ||
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index c8884c5413a2..d283cf3d06e3 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S | |||
| @@ -339,17 +339,8 @@ ENTRY(arm1022_dma_unmap_area) | |||
| 339 | mov pc, lr | 339 | mov pc, lr |
| 340 | ENDPROC(arm1022_dma_unmap_area) | 340 | ENDPROC(arm1022_dma_unmap_area) |
| 341 | 341 | ||
| 342 | ENTRY(arm1022_cache_fns) | 342 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 343 | .long arm1022_flush_icache_all | 343 | define_cache_functions arm1022 |
| 344 | .long arm1022_flush_kern_cache_all | ||
| 345 | .long arm1022_flush_user_cache_all | ||
| 346 | .long arm1022_flush_user_cache_range | ||
| 347 | .long arm1022_coherent_kern_range | ||
| 348 | .long arm1022_coherent_user_range | ||
| 349 | .long arm1022_flush_kern_dcache_area | ||
| 350 | .long arm1022_dma_map_area | ||
| 351 | .long arm1022_dma_unmap_area | ||
| 352 | .long arm1022_dma_flush_range | ||
| 353 | 344 | ||
| 354 | .align 5 | 345 | .align 5 |
| 355 | ENTRY(cpu_arm1022_dcache_clean_area) | 346 | ENTRY(cpu_arm1022_dcache_clean_area) |
| @@ -441,43 +432,14 @@ arm1022_crval: | |||
| 441 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930 | 432 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930 |
| 442 | 433 | ||
| 443 | __INITDATA | 434 | __INITDATA |
| 444 | 435 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 445 | /* | 436 | define_processor_functions arm1022, dabort=v4t_early_abort, pabort=legacy_pabort |
| 446 | * Purpose : Function pointers used to access above functions - all calls | ||
| 447 | * come through these | ||
| 448 | */ | ||
| 449 | .type arm1022_processor_functions, #object | ||
| 450 | arm1022_processor_functions: | ||
| 451 | .word v4t_early_abort | ||
| 452 | .word legacy_pabort | ||
| 453 | .word cpu_arm1022_proc_init | ||
| 454 | .word cpu_arm1022_proc_fin | ||
| 455 | .word cpu_arm1022_reset | ||
| 456 | .word cpu_arm1022_do_idle | ||
| 457 | .word cpu_arm1022_dcache_clean_area | ||
| 458 | .word cpu_arm1022_switch_mm | ||
| 459 | .word cpu_arm1022_set_pte_ext | ||
| 460 | .word 0 | ||
| 461 | .word 0 | ||
| 462 | .word 0 | ||
| 463 | .size arm1022_processor_functions, . - arm1022_processor_functions | ||
| 464 | 437 | ||
| 465 | .section ".rodata" | 438 | .section ".rodata" |
| 466 | 439 | ||
| 467 | .type cpu_arch_name, #object | 440 | string cpu_arch_name, "armv5te" |
| 468 | cpu_arch_name: | 441 | string cpu_elf_name, "v5" |
| 469 | .asciz "armv5te" | 442 | string cpu_arm1022_name, "ARM1022" |
| 470 | .size cpu_arch_name, . - cpu_arch_name | ||
| 471 | |||
| 472 | .type cpu_elf_name, #object | ||
| 473 | cpu_elf_name: | ||
| 474 | .asciz "v5" | ||
| 475 | .size cpu_elf_name, . - cpu_elf_name | ||
| 476 | |||
| 477 | .type cpu_arm1022_name, #object | ||
| 478 | cpu_arm1022_name: | ||
| 479 | .asciz "ARM1022" | ||
| 480 | .size cpu_arm1022_name, . - cpu_arm1022_name | ||
| 481 | 443 | ||
| 482 | .align | 444 | .align |
| 483 | 445 | ||
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 413684660aad..678a1ceafed2 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S | |||
| @@ -333,17 +333,8 @@ ENTRY(arm1026_dma_unmap_area) | |||
| 333 | mov pc, lr | 333 | mov pc, lr |
| 334 | ENDPROC(arm1026_dma_unmap_area) | 334 | ENDPROC(arm1026_dma_unmap_area) |
| 335 | 335 | ||
| 336 | ENTRY(arm1026_cache_fns) | 336 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 337 | .long arm1026_flush_icache_all | 337 | define_cache_functions arm1026 |
| 338 | .long arm1026_flush_kern_cache_all | ||
| 339 | .long arm1026_flush_user_cache_all | ||
| 340 | .long arm1026_flush_user_cache_range | ||
| 341 | .long arm1026_coherent_kern_range | ||
| 342 | .long arm1026_coherent_user_range | ||
| 343 | .long arm1026_flush_kern_dcache_area | ||
| 344 | .long arm1026_dma_map_area | ||
| 345 | .long arm1026_dma_unmap_area | ||
| 346 | .long arm1026_dma_flush_range | ||
| 347 | 338 | ||
| 348 | .align 5 | 339 | .align 5 |
| 349 | ENTRY(cpu_arm1026_dcache_clean_area) | 340 | ENTRY(cpu_arm1026_dcache_clean_area) |
| @@ -436,45 +427,15 @@ arm1026_crval: | |||
| 436 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001934 | 427 | crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001934 |
| 437 | 428 | ||
| 438 | __INITDATA | 429 | __INITDATA |
| 439 | 430 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 440 | /* | 431 | define_processor_functions arm1026, dabort=v5t_early_abort, pabort=legacy_pabort |
| 441 | * Purpose : Function pointers used to access above functions - all calls | ||
| 442 | * come through these | ||
| 443 | */ | ||
| 444 | .type arm1026_processor_functions, #object | ||
| 445 | arm1026_processor_functions: | ||
| 446 | .word v5t_early_abort | ||
| 447 | .word legacy_pabort | ||
| 448 | .word cpu_arm1026_proc_init | ||
| 449 | .word cpu_arm1026_proc_fin | ||
| 450 | .word cpu_arm1026_reset | ||
| 451 | .word cpu_arm1026_do_idle | ||
| 452 | .word cpu_arm1026_dcache_clean_area | ||
| 453 | .word cpu_arm1026_switch_mm | ||
| 454 | .word cpu_arm1026_set_pte_ext | ||
| 455 | .word 0 | ||
| 456 | .word 0 | ||
| 457 | .word 0 | ||
| 458 | .size arm1026_processor_functions, . - arm1026_processor_functions | ||
| 459 | 432 | ||
| 460 | .section .rodata | 433 | .section .rodata |
| 461 | 434 | ||
| 462 | .type cpu_arch_name, #object | 435 | string cpu_arch_name, "armv5tej" |
| 463 | cpu_arch_name: | 436 | string cpu_elf_name, "v5" |
| 464 | .asciz "armv5tej" | ||
| 465 | .size cpu_arch_name, . - cpu_arch_name | ||
| 466 | |||
| 467 | .type cpu_elf_name, #object | ||
| 468 | cpu_elf_name: | ||
| 469 | .asciz "v5" | ||
| 470 | .size cpu_elf_name, . - cpu_elf_name | ||
| 471 | .align | 437 | .align |
| 472 | 438 | string cpu_arm1026_name, "ARM1026EJ-S" | |
| 473 | .type cpu_arm1026_name, #object | ||
| 474 | cpu_arm1026_name: | ||
| 475 | .asciz "ARM1026EJ-S" | ||
| 476 | .size cpu_arm1026_name, . - cpu_arm1026_name | ||
| 477 | |||
| 478 | .align | 439 | .align |
| 479 | 440 | ||
| 480 | .section ".proc.info.init", #alloc, #execinstr | 441 | .section ".proc.info.init", #alloc, #execinstr |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 5f79dc4ce3fb..ebc0ca7f1a15 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
| @@ -269,159 +269,57 @@ __arm7_setup: mov r0, #0 | |||
| 269 | 269 | ||
| 270 | __INITDATA | 270 | __INITDATA |
| 271 | 271 | ||
| 272 | /* | 272 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 273 | * Purpose : Function pointers used to access above functions - all calls | 273 | define_processor_functions arm6, dabort=cpu_arm6_data_abort, pabort=legacy_pabort |
| 274 | * come through these | 274 | define_processor_functions arm7, dabort=cpu_arm7_data_abort, pabort=legacy_pabort |
| 275 | */ | ||
| 276 | .type arm6_processor_functions, #object | ||
| 277 | ENTRY(arm6_processor_functions) | ||
| 278 | .word cpu_arm6_data_abort | ||
| 279 | .word legacy_pabort | ||
| 280 | .word cpu_arm6_proc_init | ||
| 281 | .word cpu_arm6_proc_fin | ||
| 282 | .word cpu_arm6_reset | ||
| 283 | .word cpu_arm6_do_idle | ||
| 284 | .word cpu_arm6_dcache_clean_area | ||
| 285 | .word cpu_arm6_switch_mm | ||
| 286 | .word cpu_arm6_set_pte_ext | ||
| 287 | .word 0 | ||
| 288 | .word 0 | ||
| 289 | .word 0 | ||
| 290 | .size arm6_processor_functions, . - arm6_processor_functions | ||
| 291 | |||
| 292 | /* | ||
| 293 | * Purpose : Function pointers used to access above functions - all calls | ||
| 294 | * come through these | ||
| 295 | */ | ||
| 296 | .type arm7_processor_functions, #object | ||
| 297 | ENTRY(arm7_processor_functions) | ||
| 298 | .word cpu_arm7_data_abort | ||
| 299 | .word legacy_pabort | ||
| 300 | .word cpu_arm7_proc_init | ||
| 301 | .word cpu_arm7_proc_fin | ||
| 302 | .word cpu_arm7_reset | ||
| 303 | .word cpu_arm7_do_idle | ||
| 304 | .word cpu_arm7_dcache_clean_area | ||
| 305 | .word cpu_arm7_switch_mm | ||
| 306 | .word cpu_arm7_set_pte_ext | ||
| 307 | .word 0 | ||
| 308 | .word 0 | ||
| 309 | .word 0 | ||
| 310 | .size arm7_processor_functions, . - arm7_processor_functions | ||
| 311 | 275 | ||
| 312 | .section ".rodata" | 276 | .section ".rodata" |
| 313 | 277 | ||
| 314 | .type cpu_arch_name, #object | 278 | string cpu_arch_name, "armv3" |
| 315 | cpu_arch_name: .asciz "armv3" | 279 | string cpu_elf_name, "v3" |
| 316 | .size cpu_arch_name, . - cpu_arch_name | 280 | string cpu_arm6_name, "ARM6" |
| 317 | 281 | string cpu_arm610_name, "ARM610" | |
| 318 | .type cpu_elf_name, #object | 282 | string cpu_arm7_name, "ARM7" |
| 319 | cpu_elf_name: .asciz "v3" | 283 | string cpu_arm710_name, "ARM710" |
| 320 | .size cpu_elf_name, . - cpu_elf_name | ||
| 321 | |||
| 322 | .type cpu_arm6_name, #object | ||
| 323 | cpu_arm6_name: .asciz "ARM6" | ||
| 324 | .size cpu_arm6_name, . - cpu_arm6_name | ||
| 325 | |||
| 326 | .type cpu_arm610_name, #object | ||
| 327 | cpu_arm610_name: | ||
| 328 | .asciz "ARM610" | ||
| 329 | .size cpu_arm610_name, . - cpu_arm610_name | ||
| 330 | |||
| 331 | .type cpu_arm7_name, #object | ||
| 332 | cpu_arm7_name: .asciz "ARM7" | ||
| 333 | .size cpu_arm7_name, . - cpu_arm7_name | ||
| 334 | |||
| 335 | .type cpu_arm710_name, #object | ||
| 336 | cpu_arm710_name: | ||
| 337 | .asciz "ARM710" | ||
| 338 | .size cpu_arm710_name, . - cpu_arm710_name | ||
| 339 | 284 | ||
| 340 | .align | 285 | .align |
| 341 | 286 | ||
| 342 | .section ".proc.info.init", #alloc, #execinstr | 287 | .section ".proc.info.init", #alloc, #execinstr |
| 343 | 288 | ||
| 344 | .type __arm6_proc_info, #object | 289 | .macro arm67_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ |
| 345 | __arm6_proc_info: | 290 | cpu_mm_mmu_flags:req, cpu_flush:req, cpu_proc_funcs:req |
| 346 | .long 0x41560600 | 291 | .type __\name\()_proc_info, #object |
| 347 | .long 0xfffffff0 | 292 | __\name\()_proc_info: |
| 348 | .long 0x00000c1e | 293 | .long \cpu_val |
| 294 | .long \cpu_mask | ||
| 295 | .long \cpu_mm_mmu_flags | ||
| 349 | .long PMD_TYPE_SECT | \ | 296 | .long PMD_TYPE_SECT | \ |
| 350 | PMD_BIT4 | \ | 297 | PMD_BIT4 | \ |
| 351 | PMD_SECT_AP_WRITE | \ | 298 | PMD_SECT_AP_WRITE | \ |
| 352 | PMD_SECT_AP_READ | 299 | PMD_SECT_AP_READ |
| 353 | b __arm6_setup | 300 | b \cpu_flush |
| 354 | .long cpu_arch_name | 301 | .long cpu_arch_name |
| 355 | .long cpu_elf_name | 302 | .long cpu_elf_name |
| 356 | .long HWCAP_SWP | HWCAP_26BIT | 303 | .long HWCAP_SWP | HWCAP_26BIT |
| 357 | .long cpu_arm6_name | 304 | .long \cpu_name |
| 358 | .long arm6_processor_functions | 305 | .long \cpu_proc_funcs |
| 359 | .long v3_tlb_fns | 306 | .long v3_tlb_fns |
| 360 | .long v3_user_fns | 307 | .long v3_user_fns |
| 361 | .long v3_cache_fns | 308 | .long v3_cache_fns |
| 362 | .size __arm6_proc_info, . - __arm6_proc_info | 309 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 363 | 310 | .endm | |
| 364 | .type __arm610_proc_info, #object | 311 | |
| 365 | __arm610_proc_info: | 312 | arm67_proc_info arm6, 0x41560600, 0xfffffff0, cpu_arm6_name, \ |
| 366 | .long 0x41560610 | 313 | 0x00000c1e, __arm6_setup, arm6_processor_functions |
| 367 | .long 0xfffffff0 | 314 | arm67_proc_info arm610, 0x41560610, 0xfffffff0, cpu_arm610_name, \ |
| 368 | .long 0x00000c1e | 315 | 0x00000c1e, __arm6_setup, arm6_processor_functions |
| 369 | .long PMD_TYPE_SECT | \ | 316 | arm67_proc_info arm7, 0x41007000, 0xffffff00, cpu_arm7_name, \ |
| 370 | PMD_BIT4 | \ | 317 | 0x00000c1e, __arm7_setup, arm7_processor_functions |
| 371 | PMD_SECT_AP_WRITE | \ | 318 | arm67_proc_info arm710, 0x41007100, 0xfff8ff00, cpu_arm710_name, \ |
| 372 | PMD_SECT_AP_READ | 319 | PMD_TYPE_SECT | \ |
| 373 | b __arm6_setup | ||
| 374 | .long cpu_arch_name | ||
| 375 | .long cpu_elf_name | ||
| 376 | .long HWCAP_SWP | HWCAP_26BIT | ||
| 377 | .long cpu_arm610_name | ||
| 378 | .long arm6_processor_functions | ||
| 379 | .long v3_tlb_fns | ||
| 380 | .long v3_user_fns | ||
| 381 | .long v3_cache_fns | ||
| 382 | .size __arm610_proc_info, . - __arm610_proc_info | ||
| 383 | |||
| 384 | .type __arm7_proc_info, #object | ||
| 385 | __arm7_proc_info: | ||
| 386 | .long 0x41007000 | ||
| 387 | .long 0xffffff00 | ||
| 388 | .long 0x00000c1e | ||
| 389 | .long PMD_TYPE_SECT | \ | ||
| 390 | PMD_BIT4 | \ | ||
| 391 | PMD_SECT_AP_WRITE | \ | ||
| 392 | PMD_SECT_AP_READ | ||
| 393 | b __arm7_setup | ||
| 394 | .long cpu_arch_name | ||
| 395 | .long cpu_elf_name | ||
| 396 | .long HWCAP_SWP | HWCAP_26BIT | ||
| 397 | .long cpu_arm7_name | ||
| 398 | .long arm7_processor_functions | ||
| 399 | .long v3_tlb_fns | ||
| 400 | .long v3_user_fns | ||
| 401 | .long v3_cache_fns | ||
| 402 | .size __arm7_proc_info, . - __arm7_proc_info | ||
| 403 | |||
| 404 | .type __arm710_proc_info, #object | ||
| 405 | __arm710_proc_info: | ||
| 406 | .long 0x41007100 | ||
| 407 | .long 0xfff8ff00 | ||
| 408 | .long PMD_TYPE_SECT | \ | ||
| 409 | PMD_SECT_BUFFERABLE | \ | 320 | PMD_SECT_BUFFERABLE | \ |
| 410 | PMD_SECT_CACHEABLE | \ | 321 | PMD_SECT_CACHEABLE | \ |
| 411 | PMD_BIT4 | \ | 322 | PMD_BIT4 | \ |
| 412 | PMD_SECT_AP_WRITE | \ | 323 | PMD_SECT_AP_WRITE | \ |
| 413 | PMD_SECT_AP_READ | 324 | PMD_SECT_AP_READ, \ |
| 414 | .long PMD_TYPE_SECT | \ | 325 | __arm7_setup, arm7_processor_functions |
| 415 | PMD_BIT4 | \ | ||
| 416 | PMD_SECT_AP_WRITE | \ | ||
| 417 | PMD_SECT_AP_READ | ||
| 418 | b __arm7_setup | ||
| 419 | .long cpu_arch_name | ||
| 420 | .long cpu_elf_name | ||
| 421 | .long HWCAP_SWP | HWCAP_26BIT | ||
| 422 | .long cpu_arm710_name | ||
| 423 | .long arm7_processor_functions | ||
| 424 | .long v3_tlb_fns | ||
| 425 | .long v3_user_fns | ||
| 426 | .long v3_cache_fns | ||
| 427 | .size __arm710_proc_info, . - __arm710_proc_info | ||
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 7a06e5964f59..55f4e290665a 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S | |||
| @@ -169,46 +169,15 @@ arm720_crval: | |||
| 169 | crval clear=0x00002f3f, mmuset=0x0000213d, ucset=0x00000130 | 169 | crval clear=0x00002f3f, mmuset=0x0000213d, ucset=0x00000130 |
| 170 | 170 | ||
| 171 | __INITDATA | 171 | __INITDATA |
| 172 | 172 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 173 | /* | 173 | define_processor_functions arm720, dabort=v4t_late_abort, pabort=legacy_pabort |
| 174 | * Purpose : Function pointers used to access above functions - all calls | ||
| 175 | * come through these | ||
| 176 | */ | ||
| 177 | .type arm720_processor_functions, #object | ||
| 178 | ENTRY(arm720_processor_functions) | ||
| 179 | .word v4t_late_abort | ||
| 180 | .word legacy_pabort | ||
| 181 | .word cpu_arm720_proc_init | ||
| 182 | .word cpu_arm720_proc_fin | ||
| 183 | .word cpu_arm720_reset | ||
| 184 | .word cpu_arm720_do_idle | ||
| 185 | .word cpu_arm720_dcache_clean_area | ||
| 186 | .word cpu_arm720_switch_mm | ||
| 187 | .word cpu_arm720_set_pte_ext | ||
| 188 | .word 0 | ||
| 189 | .word 0 | ||
| 190 | .word 0 | ||
| 191 | .size arm720_processor_functions, . - arm720_processor_functions | ||
| 192 | 174 | ||
| 193 | .section ".rodata" | 175 | .section ".rodata" |
| 194 | 176 | ||
| 195 | .type cpu_arch_name, #object | 177 | string cpu_arch_name, "armv4t" |
| 196 | cpu_arch_name: .asciz "armv4t" | 178 | string cpu_elf_name, "v4" |
| 197 | .size cpu_arch_name, . - cpu_arch_name | 179 | string cpu_arm710_name, "ARM710T" |
| 198 | 180 | string cpu_arm720_name, "ARM720T" | |
| 199 | .type cpu_elf_name, #object | ||
| 200 | cpu_elf_name: .asciz "v4" | ||
| 201 | .size cpu_elf_name, . - cpu_elf_name | ||
| 202 | |||
| 203 | .type cpu_arm710_name, #object | ||
| 204 | cpu_arm710_name: | ||
| 205 | .asciz "ARM710T" | ||
| 206 | .size cpu_arm710_name, . - cpu_arm710_name | ||
| 207 | |||
| 208 | .type cpu_arm720_name, #object | ||
| 209 | cpu_arm720_name: | ||
| 210 | .asciz "ARM720T" | ||
| 211 | .size cpu_arm720_name, . - cpu_arm720_name | ||
| 212 | 181 | ||
| 213 | .align | 182 | .align |
| 214 | 183 | ||
| @@ -218,10 +187,11 @@ cpu_arm720_name: | |||
| 218 | 187 | ||
| 219 | .section ".proc.info.init", #alloc, #execinstr | 188 | .section ".proc.info.init", #alloc, #execinstr |
| 220 | 189 | ||
| 221 | .type __arm710_proc_info, #object | 190 | .macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req |
| 222 | __arm710_proc_info: | 191 | .type __\name\()_proc_info,#object |
| 223 | .long 0x41807100 @ cpu_val | 192 | __\name\()_proc_info: |
| 224 | .long 0xffffff00 @ cpu_mask | 193 | .long \cpu_val |
| 194 | .long \cpu_mask | ||
| 225 | .long PMD_TYPE_SECT | \ | 195 | .long PMD_TYPE_SECT | \ |
| 226 | PMD_SECT_BUFFERABLE | \ | 196 | PMD_SECT_BUFFERABLE | \ |
| 227 | PMD_SECT_CACHEABLE | \ | 197 | PMD_SECT_CACHEABLE | \ |
| @@ -232,38 +202,17 @@ __arm710_proc_info: | |||
| 232 | PMD_BIT4 | \ | 202 | PMD_BIT4 | \ |
| 233 | PMD_SECT_AP_WRITE | \ | 203 | PMD_SECT_AP_WRITE | \ |
| 234 | PMD_SECT_AP_READ | 204 | PMD_SECT_AP_READ |
| 235 | b __arm710_setup @ cpu_flush | 205 | b \cpu_flush @ cpu_flush |
| 236 | .long cpu_arch_name @ arch_name | 206 | .long cpu_arch_name @ arch_name |
| 237 | .long cpu_elf_name @ elf_name | 207 | .long cpu_elf_name @ elf_name |
| 238 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap | 208 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap |
| 239 | .long cpu_arm710_name @ name | 209 | .long \cpu_name |
| 240 | .long arm720_processor_functions | 210 | .long arm720_processor_functions |
| 241 | .long v4_tlb_fns | 211 | .long v4_tlb_fns |
| 242 | .long v4wt_user_fns | 212 | .long v4wt_user_fns |
| 243 | .long v4_cache_fns | 213 | .long v4_cache_fns |
| 244 | .size __arm710_proc_info, . - __arm710_proc_info | 214 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 215 | .endm | ||
| 245 | 216 | ||
| 246 | .type __arm720_proc_info, #object | 217 | arm720_proc_info arm710, 0x41807100, 0xffffff00, cpu_arm710_name, __arm710_setup |
| 247 | __arm720_proc_info: | 218 | arm720_proc_info arm720, 0x41807200, 0xffffff00, cpu_arm720_name, __arm720_setup |
| 248 | .long 0x41807200 @ cpu_val | ||
| 249 | .long 0xffffff00 @ cpu_mask | ||
| 250 | .long PMD_TYPE_SECT | \ | ||
| 251 | PMD_SECT_BUFFERABLE | \ | ||
| 252 | PMD_SECT_CACHEABLE | \ | ||
| 253 | PMD_BIT4 | \ | ||
| 254 | PMD_SECT_AP_WRITE | \ | ||
| 255 | PMD_SECT_AP_READ | ||
| 256 | .long PMD_TYPE_SECT | \ | ||
| 257 | PMD_BIT4 | \ | ||
| 258 | PMD_SECT_AP_WRITE | \ | ||
| 259 | PMD_SECT_AP_READ | ||
| 260 | b __arm720_setup @ cpu_flush | ||
| 261 | .long cpu_arch_name @ arch_name | ||
| 262 | .long cpu_elf_name @ elf_name | ||
| 263 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap | ||
| 264 | .long cpu_arm720_name @ name | ||
| 265 | .long arm720_processor_functions | ||
| 266 | .long v4_tlb_fns | ||
| 267 | .long v4wt_user_fns | ||
| 268 | .long v4_cache_fns | ||
| 269 | .size __arm720_proc_info, . - __arm720_proc_info | ||
diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S index 6f9d12effee1..4506be3adda6 100644 --- a/arch/arm/mm/proc-arm740.S +++ b/arch/arm/mm/proc-arm740.S | |||
| @@ -17,6 +17,8 @@ | |||
| 17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
| 18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
| 19 | 19 | ||
| 20 | #include "proc-macros.S" | ||
| 21 | |||
| 20 | .text | 22 | .text |
| 21 | /* | 23 | /* |
| 22 | * cpu_arm740_proc_init() | 24 | * cpu_arm740_proc_init() |
| @@ -115,42 +117,14 @@ __arm740_setup: | |||
| 115 | 117 | ||
| 116 | __INITDATA | 118 | __INITDATA |
| 117 | 119 | ||
| 118 | /* | 120 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 119 | * Purpose : Function pointers used to access above functions - all calls | 121 | define_processor_functions arm740, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=1 |
| 120 | * come through these | ||
| 121 | */ | ||
| 122 | .type arm740_processor_functions, #object | ||
| 123 | ENTRY(arm740_processor_functions) | ||
| 124 | .word v4t_late_abort | ||
| 125 | .word legacy_pabort | ||
| 126 | .word cpu_arm740_proc_init | ||
| 127 | .word cpu_arm740_proc_fin | ||
| 128 | .word cpu_arm740_reset | ||
| 129 | .word cpu_arm740_do_idle | ||
| 130 | .word cpu_arm740_dcache_clean_area | ||
| 131 | .word cpu_arm740_switch_mm | ||
| 132 | .word 0 @ cpu_*_set_pte | ||
| 133 | .word 0 | ||
| 134 | .word 0 | ||
| 135 | .word 0 | ||
| 136 | .size arm740_processor_functions, . - arm740_processor_functions | ||
| 137 | 122 | ||
| 138 | .section ".rodata" | 123 | .section ".rodata" |
| 139 | 124 | ||
| 140 | .type cpu_arch_name, #object | 125 | string cpu_arch_name, "armv4" |
| 141 | cpu_arch_name: | 126 | string cpu_elf_name, "v4" |
| 142 | .asciz "armv4" | 127 | string cpu_arm740_name, "ARM740T" |
| 143 | .size cpu_arch_name, . - cpu_arch_name | ||
| 144 | |||
| 145 | .type cpu_elf_name, #object | ||
| 146 | cpu_elf_name: | ||
| 147 | .asciz "v4" | ||
| 148 | .size cpu_elf_name, . - cpu_elf_name | ||
| 149 | |||
| 150 | .type cpu_arm740_name, #object | ||
| 151 | cpu_arm740_name: | ||
| 152 | .ascii "ARM740T" | ||
| 153 | .size cpu_arm740_name, . - cpu_arm740_name | ||
| 154 | 128 | ||
| 155 | .align | 129 | .align |
| 156 | 130 | ||
| @@ -170,5 +144,3 @@ __arm740_proc_info: | |||
| 170 | .long 0 | 144 | .long 0 |
| 171 | .long v3_cache_fns @ cache model | 145 | .long v3_cache_fns @ cache model |
| 172 | .size __arm740_proc_info, . - __arm740_proc_info | 146 | .size __arm740_proc_info, . - __arm740_proc_info |
| 173 | |||
| 174 | |||
diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S index 537ffcb0646d..7e0e1fe4ed4d 100644 --- a/arch/arm/mm/proc-arm7tdmi.S +++ b/arch/arm/mm/proc-arm7tdmi.S | |||
| @@ -17,6 +17,8 @@ | |||
| 17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
| 18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
| 19 | 19 | ||
| 20 | #include "proc-macros.S" | ||
| 21 | |||
| 20 | .text | 22 | .text |
| 21 | /* | 23 | /* |
| 22 | * cpu_arm7tdmi_proc_init() | 24 | * cpu_arm7tdmi_proc_init() |
| @@ -55,197 +57,57 @@ __arm7tdmi_setup: | |||
| 55 | 57 | ||
| 56 | __INITDATA | 58 | __INITDATA |
| 57 | 59 | ||
| 58 | /* | 60 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 59 | * Purpose : Function pointers used to access above functions - all calls | 61 | define_processor_functions arm7tdmi, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=1 |
| 60 | * come through these | ||
| 61 | */ | ||
| 62 | .type arm7tdmi_processor_functions, #object | ||
| 63 | ENTRY(arm7tdmi_processor_functions) | ||
| 64 | .word v4t_late_abort | ||
| 65 | .word legacy_pabort | ||
| 66 | .word cpu_arm7tdmi_proc_init | ||
| 67 | .word cpu_arm7tdmi_proc_fin | ||
| 68 | .word cpu_arm7tdmi_reset | ||
| 69 | .word cpu_arm7tdmi_do_idle | ||
| 70 | .word cpu_arm7tdmi_dcache_clean_area | ||
| 71 | .word cpu_arm7tdmi_switch_mm | ||
| 72 | .word 0 @ cpu_*_set_pte | ||
| 73 | .word 0 | ||
| 74 | .word 0 | ||
| 75 | .word 0 | ||
| 76 | .size arm7tdmi_processor_functions, . - arm7tdmi_processor_functions | ||
| 77 | 62 | ||
| 78 | .section ".rodata" | 63 | .section ".rodata" |
| 79 | 64 | ||
| 80 | .type cpu_arch_name, #object | 65 | string cpu_arch_name, "armv4t" |
| 81 | cpu_arch_name: | 66 | string cpu_elf_name, "v4" |
| 82 | .asciz "armv4t" | 67 | string cpu_arm7tdmi_name, "ARM7TDMI" |
| 83 | .size cpu_arch_name, . - cpu_arch_name | 68 | string cpu_triscenda7_name, "Triscend-A7x" |
| 84 | 69 | string cpu_at91_name, "Atmel-AT91M40xxx" | |
| 85 | .type cpu_elf_name, #object | 70 | string cpu_s3c3410_name, "Samsung-S3C3410" |
| 86 | cpu_elf_name: | 71 | string cpu_s3c44b0x_name, "Samsung-S3C44B0x" |
| 87 | .asciz "v4" | 72 | string cpu_s3c4510b_name, "Samsung-S3C4510B" |
| 88 | .size cpu_elf_name, . - cpu_elf_name | 73 | string cpu_s3c4530_name, "Samsung-S3C4530" |
| 89 | 74 | string cpu_netarm_name, "NETARM" | |
| 90 | .type cpu_arm7tdmi_name, #object | ||
| 91 | cpu_arm7tdmi_name: | ||
| 92 | .asciz "ARM7TDMI" | ||
| 93 | .size cpu_arm7tdmi_name, . - cpu_arm7tdmi_name | ||
| 94 | |||
| 95 | .type cpu_triscenda7_name, #object | ||
| 96 | cpu_triscenda7_name: | ||
| 97 | .asciz "Triscend-A7x" | ||
| 98 | .size cpu_triscenda7_name, . - cpu_triscenda7_name | ||
| 99 | |||
| 100 | .type cpu_at91_name, #object | ||
| 101 | cpu_at91_name: | ||
| 102 | .asciz "Atmel-AT91M40xxx" | ||
| 103 | .size cpu_at91_name, . - cpu_at91_name | ||
| 104 | |||
| 105 | .type cpu_s3c3410_name, #object | ||
| 106 | cpu_s3c3410_name: | ||
| 107 | .asciz "Samsung-S3C3410" | ||
| 108 | .size cpu_s3c3410_name, . - cpu_s3c3410_name | ||
| 109 | |||
| 110 | .type cpu_s3c44b0x_name, #object | ||
| 111 | cpu_s3c44b0x_name: | ||
| 112 | .asciz "Samsung-S3C44B0x" | ||
| 113 | .size cpu_s3c44b0x_name, . - cpu_s3c44b0x_name | ||
| 114 | |||
| 115 | .type cpu_s3c4510b, #object | ||
| 116 | cpu_s3c4510b_name: | ||
| 117 | .asciz "Samsung-S3C4510B" | ||
| 118 | .size cpu_s3c4510b_name, . - cpu_s3c4510b_name | ||
| 119 | |||
| 120 | .type cpu_s3c4530_name, #object | ||
| 121 | cpu_s3c4530_name: | ||
| 122 | .asciz "Samsung-S3C4530" | ||
| 123 | .size cpu_s3c4530_name, . - cpu_s3c4530_name | ||
| 124 | |||
| 125 | .type cpu_netarm_name, #object | ||
| 126 | cpu_netarm_name: | ||
| 127 | .asciz "NETARM" | ||
| 128 | .size cpu_netarm_name, . - cpu_netarm_name | ||
| 129 | 75 | ||
| 130 | .align | 76 | .align |
| 131 | 77 | ||
| 132 | .section ".proc.info.init", #alloc, #execinstr | 78 | .section ".proc.info.init", #alloc, #execinstr |
| 133 | 79 | ||
| 134 | .type __arm7tdmi_proc_info, #object | 80 | .macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ |
| 135 | __arm7tdmi_proc_info: | 81 | extra_hwcaps=0 |
| 136 | .long 0x41007700 | 82 | .type __\name\()_proc_info, #object |
| 137 | .long 0xfff8ff00 | 83 | __\name\()_proc_info: |
| 138 | .long 0 | 84 | .long \cpu_val |
| 139 | .long 0 | 85 | .long \cpu_mask |
| 140 | b __arm7tdmi_setup | ||
| 141 | .long cpu_arch_name | ||
| 142 | .long cpu_elf_name | ||
| 143 | .long HWCAP_SWP | HWCAP_26BIT | ||
| 144 | .long cpu_arm7tdmi_name | ||
| 145 | .long arm7tdmi_processor_functions | ||
| 146 | .long 0 | ||
| 147 | .long 0 | ||
| 148 | .long v4_cache_fns | ||
| 149 | .size __arm7tdmi_proc_info, . - __arm7tdmi_proc_info | ||
| 150 | |||
| 151 | .type __triscenda7_proc_info, #object | ||
| 152 | __triscenda7_proc_info: | ||
| 153 | .long 0x0001d2ff | ||
| 154 | .long 0x0001ffff | ||
| 155 | .long 0 | ||
| 156 | .long 0 | ||
| 157 | b __arm7tdmi_setup | ||
| 158 | .long cpu_arch_name | ||
| 159 | .long cpu_elf_name | ||
| 160 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 161 | .long cpu_triscenda7_name | ||
| 162 | .long arm7tdmi_processor_functions | ||
| 163 | .long 0 | ||
| 164 | .long 0 | ||
| 165 | .long v4_cache_fns | ||
| 166 | .size __triscenda7_proc_info, . - __triscenda7_proc_info | ||
| 167 | |||
| 168 | .type __at91_proc_info, #object | ||
| 169 | __at91_proc_info: | ||
| 170 | .long 0x14000040 | ||
| 171 | .long 0xfff000e0 | ||
| 172 | .long 0 | ||
| 173 | .long 0 | ||
| 174 | b __arm7tdmi_setup | ||
| 175 | .long cpu_arch_name | ||
| 176 | .long cpu_elf_name | ||
| 177 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 178 | .long cpu_at91_name | ||
| 179 | .long arm7tdmi_processor_functions | ||
| 180 | .long 0 | ||
| 181 | .long 0 | ||
| 182 | .long v4_cache_fns | ||
| 183 | .size __at91_proc_info, . - __at91_proc_info | ||
| 184 | |||
| 185 | .type __s3c4510b_proc_info, #object | ||
| 186 | __s3c4510b_proc_info: | ||
| 187 | .long 0x36365000 | ||
| 188 | .long 0xfffff000 | ||
| 189 | .long 0 | ||
| 190 | .long 0 | ||
| 191 | b __arm7tdmi_setup | ||
| 192 | .long cpu_arch_name | ||
| 193 | .long cpu_elf_name | ||
| 194 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 195 | .long cpu_s3c4510b_name | ||
| 196 | .long arm7tdmi_processor_functions | ||
| 197 | .long 0 | ||
| 198 | .long 0 | ||
| 199 | .long v4_cache_fns | ||
| 200 | .size __s3c4510b_proc_info, . - __s3c4510b_proc_info | ||
| 201 | |||
| 202 | .type __s3c4530_proc_info, #object | ||
| 203 | __s3c4530_proc_info: | ||
| 204 | .long 0x4c000000 | ||
| 205 | .long 0xfff000e0 | ||
| 206 | .long 0 | ||
| 207 | .long 0 | ||
| 208 | b __arm7tdmi_setup | ||
| 209 | .long cpu_arch_name | ||
| 210 | .long cpu_elf_name | ||
| 211 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 212 | .long cpu_s3c4530_name | ||
| 213 | .long arm7tdmi_processor_functions | ||
| 214 | .long 0 | ||
| 215 | .long 0 | ||
| 216 | .long v4_cache_fns | ||
| 217 | .size __s3c4530_proc_info, . - __s3c4530_proc_info | ||
| 218 | |||
| 219 | .type __s3c3410_proc_info, #object | ||
| 220 | __s3c3410_proc_info: | ||
| 221 | .long 0x34100000 | ||
| 222 | .long 0xffff0000 | ||
| 223 | .long 0 | ||
| 224 | .long 0 | ||
| 225 | b __arm7tdmi_setup | ||
| 226 | .long cpu_arch_name | ||
| 227 | .long cpu_elf_name | ||
| 228 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 229 | .long cpu_s3c3410_name | ||
| 230 | .long arm7tdmi_processor_functions | ||
| 231 | .long 0 | ||
| 232 | .long 0 | ||
| 233 | .long v4_cache_fns | ||
| 234 | .size __s3c3410_proc_info, . - __s3c3410_proc_info | ||
| 235 | |||
| 236 | .type __s3c44b0x_proc_info, #object | ||
| 237 | __s3c44b0x_proc_info: | ||
| 238 | .long 0x44b00000 | ||
| 239 | .long 0xffff0000 | ||
| 240 | .long 0 | 86 | .long 0 |
| 241 | .long 0 | 87 | .long 0 |
| 242 | b __arm7tdmi_setup | 88 | b __arm7tdmi_setup |
| 243 | .long cpu_arch_name | 89 | .long cpu_arch_name |
| 244 | .long cpu_elf_name | 90 | .long cpu_elf_name |
| 245 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | 91 | .long HWCAP_SWP | HWCAP_26BIT | ( \extra_hwcaps ) |
| 246 | .long cpu_s3c44b0x_name | 92 | .long \cpu_name |
| 247 | .long arm7tdmi_processor_functions | 93 | .long arm7tdmi_processor_functions |
| 248 | .long 0 | 94 | .long 0 |
| 249 | .long 0 | 95 | .long 0 |
| 250 | .long v4_cache_fns | 96 | .long v4_cache_fns |
| 251 | .size __s3c44b0x_proc_info, . - __s3c44b0x_proc_info | 97 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 98 | .endm | ||
| 99 | |||
| 100 | arm7tdmi_proc_info arm7tdmi, 0x41007700, 0xfff8ff00, \ | ||
| 101 | cpu_arm7tdmi_name | ||
| 102 | arm7tdmi_proc_info triscenda7, 0x0001d2ff, 0x0001ffff, \ | ||
| 103 | cpu_triscenda7_name, extra_hwcaps=HWCAP_THUMB | ||
| 104 | arm7tdmi_proc_info at91, 0x14000040, 0xfff000e0, \ | ||
| 105 | cpu_at91_name, extra_hwcaps=HWCAP_THUMB | ||
| 106 | arm7tdmi_proc_info s3c4510b, 0x36365000, 0xfffff000, \ | ||
| 107 | cpu_s3c4510b_name, extra_hwcaps=HWCAP_THUMB | ||
| 108 | arm7tdmi_proc_info s3c4530, 0x4c000000, 0xfff000e0, \ | ||
| 109 | cpu_s3c4530_name, extra_hwcaps=HWCAP_THUMB | ||
| 110 | arm7tdmi_proc_info s3c3410, 0x34100000, 0xffff0000, \ | ||
| 111 | cpu_s3c3410_name, extra_hwcaps=HWCAP_THUMB | ||
| 112 | arm7tdmi_proc_info s3c44b0x, 0x44b00000, 0xffff0000, \ | ||
| 113 | cpu_s3c44b0x_name, extra_hwcaps=HWCAP_THUMB | ||
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index bf8a1d1cccb6..0dea376feaaa 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
| @@ -315,18 +315,8 @@ ENTRY(arm920_dma_unmap_area) | |||
| 315 | mov pc, lr | 315 | mov pc, lr |
| 316 | ENDPROC(arm920_dma_unmap_area) | 316 | ENDPROC(arm920_dma_unmap_area) |
| 317 | 317 | ||
| 318 | ENTRY(arm920_cache_fns) | 318 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 319 | .long arm920_flush_icache_all | 319 | define_cache_functions arm920 |
| 320 | .long arm920_flush_kern_cache_all | ||
| 321 | .long arm920_flush_user_cache_all | ||
| 322 | .long arm920_flush_user_cache_range | ||
| 323 | .long arm920_coherent_kern_range | ||
| 324 | .long arm920_coherent_user_range | ||
| 325 | .long arm920_flush_kern_dcache_area | ||
| 326 | .long arm920_dma_map_area | ||
| 327 | .long arm920_dma_unmap_area | ||
| 328 | .long arm920_dma_flush_range | ||
| 329 | |||
| 330 | #endif | 320 | #endif |
| 331 | 321 | ||
| 332 | 322 | ||
| @@ -450,43 +440,14 @@ arm920_crval: | |||
| 450 | crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130 | 440 | crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130 |
| 451 | 441 | ||
| 452 | __INITDATA | 442 | __INITDATA |
| 453 | 443 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 454 | /* | 444 | define_processor_functions arm920, dabort=v4t_early_abort, pabort=legacy_pabort, suspend=1 |
| 455 | * Purpose : Function pointers used to access above functions - all calls | ||
| 456 | * come through these | ||
| 457 | */ | ||
| 458 | .type arm920_processor_functions, #object | ||
| 459 | arm920_processor_functions: | ||
| 460 | .word v4t_early_abort | ||
| 461 | .word legacy_pabort | ||
| 462 | .word cpu_arm920_proc_init | ||
| 463 | .word cpu_arm920_proc_fin | ||
| 464 | .word cpu_arm920_reset | ||
| 465 | .word cpu_arm920_do_idle | ||
| 466 | .word cpu_arm920_dcache_clean_area | ||
| 467 | .word cpu_arm920_switch_mm | ||
| 468 | .word cpu_arm920_set_pte_ext | ||
| 469 | .word cpu_arm920_suspend_size | ||
| 470 | .word cpu_arm920_do_suspend | ||
| 471 | .word cpu_arm920_do_resume | ||
| 472 | .size arm920_processor_functions, . - arm920_processor_functions | ||
| 473 | 445 | ||
| 474 | .section ".rodata" | 446 | .section ".rodata" |
| 475 | 447 | ||
| 476 | .type cpu_arch_name, #object | 448 | string cpu_arch_name, "armv4t" |
| 477 | cpu_arch_name: | 449 | string cpu_elf_name, "v4" |
| 478 | .asciz "armv4t" | 450 | string cpu_arm920_name, "ARM920T" |
| 479 | .size cpu_arch_name, . - cpu_arch_name | ||
| 480 | |||
| 481 | .type cpu_elf_name, #object | ||
| 482 | cpu_elf_name: | ||
| 483 | .asciz "v4" | ||
| 484 | .size cpu_elf_name, . - cpu_elf_name | ||
| 485 | |||
| 486 | .type cpu_arm920_name, #object | ||
| 487 | cpu_arm920_name: | ||
| 488 | .asciz "ARM920T" | ||
| 489 | .size cpu_arm920_name, . - cpu_arm920_name | ||
| 490 | 451 | ||
| 491 | .align | 452 | .align |
| 492 | 453 | ||
diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S index 95ba1fc56e4d..490e18833857 100644 --- a/arch/arm/mm/proc-arm922.S +++ b/arch/arm/mm/proc-arm922.S | |||
| @@ -317,18 +317,8 @@ ENTRY(arm922_dma_unmap_area) | |||
| 317 | mov pc, lr | 317 | mov pc, lr |
| 318 | ENDPROC(arm922_dma_unmap_area) | 318 | ENDPROC(arm922_dma_unmap_area) |
| 319 | 319 | ||
| 320 | ENTRY(arm922_cache_fns) | 320 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 321 | .long arm922_flush_icache_all | 321 | define_cache_functions arm922 |
| 322 | .long arm922_flush_kern_cache_all | ||
| 323 | .long arm922_flush_user_cache_all | ||
| 324 | .long arm922_flush_user_cache_range | ||
| 325 | .long arm922_coherent_kern_range | ||
| 326 | .long arm922_coherent_user_range | ||
| 327 | .long arm922_flush_kern_dcache_area | ||
| 328 | .long arm922_dma_map_area | ||
| 329 | .long arm922_dma_unmap_area | ||
| 330 | .long arm922_dma_flush_range | ||
| 331 | |||
| 332 | #endif | 322 | #endif |
| 333 | 323 | ||
| 334 | 324 | ||
| @@ -420,43 +410,14 @@ arm922_crval: | |||
| 420 | crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130 | 410 | crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130 |
| 421 | 411 | ||
| 422 | __INITDATA | 412 | __INITDATA |
| 423 | 413 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 424 | /* | 414 | define_processor_functions arm922, dabort=v4t_early_abort, pabort=legacy_pabort |
| 425 | * Purpose : Function pointers used to access above functions - all calls | ||
| 426 | * come through these | ||
| 427 | */ | ||
| 428 | .type arm922_processor_functions, #object | ||
| 429 | arm922_processor_functions: | ||
| 430 | .word v4t_early_abort | ||
| 431 | .word legacy_pabort | ||
| 432 | .word cpu_arm922_proc_init | ||
| 433 | .word cpu_arm922_proc_fin | ||
| 434 | .word cpu_arm922_reset | ||
| 435 | .word cpu_arm922_do_idle | ||
| 436 | .word cpu_arm922_dcache_clean_area | ||
| 437 | .word cpu_arm922_switch_mm | ||
| 438 | .word cpu_arm922_set_pte_ext | ||
| 439 | .word 0 | ||
| 440 | .word 0 | ||
| 441 | .word 0 | ||
| 442 | .size arm922_processor_functions, . - arm922_processor_functions | ||
| 443 | 415 | ||
| 444 | .section ".rodata" | 416 | .section ".rodata" |
| 445 | 417 | ||
| 446 | .type cpu_arch_name, #object | 418 | string cpu_arch_name, "armv4t" |
| 447 | cpu_arch_name: | 419 | string cpu_elf_name, "v4" |
| 448 | .asciz "armv4t" | 420 | string cpu_arm922_name, "ARM922T" |
| 449 | .size cpu_arch_name, . - cpu_arch_name | ||
| 450 | |||
| 451 | .type cpu_elf_name, #object | ||
| 452 | cpu_elf_name: | ||
| 453 | .asciz "v4" | ||
| 454 | .size cpu_elf_name, . - cpu_elf_name | ||
| 455 | |||
| 456 | .type cpu_arm922_name, #object | ||
| 457 | cpu_arm922_name: | ||
| 458 | .asciz "ARM922T" | ||
| 459 | .size cpu_arm922_name, . - cpu_arm922_name | ||
| 460 | 421 | ||
| 461 | .align | 422 | .align |
| 462 | 423 | ||
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index 541e4774eea1..51d494be057e 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S | |||
| @@ -372,17 +372,8 @@ ENTRY(arm925_dma_unmap_area) | |||
| 372 | mov pc, lr | 372 | mov pc, lr |
| 373 | ENDPROC(arm925_dma_unmap_area) | 373 | ENDPROC(arm925_dma_unmap_area) |
| 374 | 374 | ||
| 375 | ENTRY(arm925_cache_fns) | 375 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 376 | .long arm925_flush_icache_all | 376 | define_cache_functions arm925 |
| 377 | .long arm925_flush_kern_cache_all | ||
| 378 | .long arm925_flush_user_cache_all | ||
| 379 | .long arm925_flush_user_cache_range | ||
| 380 | .long arm925_coherent_kern_range | ||
| 381 | .long arm925_coherent_user_range | ||
| 382 | .long arm925_flush_kern_dcache_area | ||
| 383 | .long arm925_dma_map_area | ||
| 384 | .long arm925_dma_unmap_area | ||
| 385 | .long arm925_dma_flush_range | ||
| 386 | 377 | ||
| 387 | ENTRY(cpu_arm925_dcache_clean_area) | 378 | ENTRY(cpu_arm925_dcache_clean_area) |
| 388 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 379 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
| @@ -487,52 +478,24 @@ arm925_crval: | |||
| 487 | crval clear=0x00007f3f, mmuset=0x0000313d, ucset=0x00001130 | 478 | crval clear=0x00007f3f, mmuset=0x0000313d, ucset=0x00001130 |
| 488 | 479 | ||
| 489 | __INITDATA | 480 | __INITDATA |
| 490 | 481 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | |
| 491 | /* | 482 | define_processor_functions arm925, dabort=v4t_early_abort, pabort=legacy_pabort |
| 492 | * Purpose : Function pointers used to access above functions - all calls | ||
| 493 | * come through these | ||
| 494 | */ | ||
| 495 | .type arm925_processor_functions, #object | ||
| 496 | arm925_processor_functions: | ||
| 497 | .word v4t_early_abort | ||
| 498 | .word legacy_pabort | ||
| 499 | .word cpu_arm925_proc_init | ||
| 500 | .word cpu_arm925_proc_fin | ||
| 501 | .word cpu_arm925_reset | ||
| 502 | .word cpu_arm925_do_idle | ||
| 503 | .word cpu_arm925_dcache_clean_area | ||
| 504 | .word cpu_arm925_switch_mm | ||
| 505 | .word cpu_arm925_set_pte_ext | ||
| 506 | .word 0 | ||
| 507 | .word 0 | ||
| 508 | .word 0 | ||
| 509 | .size arm925_processor_functions, . - arm925_processor_functions | ||
| 510 | 483 | ||
| 511 | .section ".rodata" | 484 | .section ".rodata" |
| 512 | 485 | ||
| 513 | .type cpu_arch_name, #object | 486 | string cpu_arch_name, "armv4t" |
| 514 | cpu_arch_name: | 487 | string cpu_elf_name, "v4" |
| 515 | .asciz "armv4t" | 488 | string cpu_arm925_name, "ARM925T" |
| 516 | .size cpu_arch_name, . - cpu_arch_name | ||
| 517 | |||
| 518 | .type cpu_elf_name, #object | ||
| 519 | cpu_elf_name: | ||
| 520 | .asciz "v4" | ||
| 521 | .size cpu_elf_name, . - cpu_elf_name | ||
| 522 | |||
| 523 | .type cpu_arm925_name, #object | ||
| 524 | cpu_arm925_name: | ||
| 525 | .asciz "ARM925T" | ||
| 526 | .size cpu_arm925_name, . - cpu_arm925_name | ||
| 527 | 489 | ||
| 528 | .align | 490 | .align |
| 529 | 491 | ||
| 530 | .section ".proc.info.init", #alloc, #execinstr | 492 | .section ".proc.info.init", #alloc, #execinstr |
| 531 | 493 | ||
| 532 | .type __arm925_proc_info,#object | 494 | .macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache |
| 533 | __arm925_proc_info: | 495 | .type __\name\()_proc_info,#object |
| 534 | .long 0x54029250 | 496 | __\name\()_proc_info: |
| 535 | .long 0xfffffff0 | 497 | .long \cpu_val |
| 498 | .long \cpu_mask | ||
| 536 | .long PMD_TYPE_SECT | \ | 499 | .long PMD_TYPE_SECT | \ |
| 537 | PMD_BIT4 | \ | 500 | PMD_BIT4 | \ |
| 538 | PMD_SECT_AP_WRITE | \ | 501 | PMD_SECT_AP_WRITE | \ |
| @@ -550,27 +513,8 @@ __arm925_proc_info: | |||
| 550 | .long v4wbi_tlb_fns | 513 | .long v4wbi_tlb_fns |
| 551 | .long v4wb_user_fns | 514 | .long v4wb_user_fns |
| 552 | .long arm925_cache_fns | 515 | .long arm925_cache_fns |
| 553 | .size __arm925_proc_info, . - __arm925_proc_info | 516 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 517 | .endm | ||
| 554 | 518 | ||
| 555 | .type __arm915_proc_info,#object | 519 | arm925_proc_info arm925, 0x54029250, 0xfffffff0, cpu_arm925_name |
| 556 | __arm915_proc_info: | 520 | arm925_proc_info arm915, 0x54029150, 0xfffffff0, cpu_arm925_name |
| 557 | .long 0x54029150 | ||
| 558 | .long 0xfffffff0 | ||
| 559 | .long PMD_TYPE_SECT | \ | ||
| 560 | PMD_BIT4 | \ | ||
| 561 | PMD_SECT_AP_WRITE | \ | ||
| 562 | PMD_SECT_AP_READ | ||
| 563 | .long PMD_TYPE_SECT | \ | ||
| 564 | PMD_BIT4 | \ | ||
| 565 | PMD_SECT_AP_WRITE | \ | ||
| 566 | PMD_SECT_AP_READ | ||
| 567 | b __arm925_setup | ||
| 568 | .long cpu_arch_name | ||
| 569 | .long cpu_elf_name | ||
| 570 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | ||
| 571 | .long cpu_arm925_name | ||
| 572 | .long arm925_processor_functions | ||
| 573 | .long v4wbi_tlb_fns | ||
| 574 | .long v4wb_user_fns | ||
| 575 | .long arm925_cache_fns | ||
| 576 | .size __arm925_proc_info, . - __arm925_proc_info | ||
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 0ed85d930c09..b2f9bde8ecef 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
| @@ -335,17 +335,8 @@ ENTRY(arm926_dma_unmap_area) | |||
| 335 | mov pc, lr | 335 | mov pc, lr |
| 336 | ENDPROC(arm926_dma_unmap_area) | 336 | ENDPROC(arm926_dma_unmap_area) |
| 337 | 337 | ||
| 338 | ENTRY(arm926_cache_fns) | 338 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 339 | .long arm926_flush_icache_all | 339 | define_cache_functions arm926 |
| 340 | .long arm926_flush_kern_cache_all | ||
| 341 | .long arm926_flush_user_cache_all | ||
| 342 | .long arm926_flush_user_cache_range | ||
| 343 | .long arm926_coherent_kern_range | ||
| 344 | .long arm926_coherent_user_range | ||
| 345 | .long arm926_flush_kern_dcache_area | ||
| 346 | .long arm926_dma_map_area | ||
| 347 | .long arm926_dma_unmap_area | ||
| 348 | .long arm926_dma_flush_range | ||
| 349 | 340 | ||
| 350 | ENTRY(cpu_arm926_dcache_clean_area) | 341 | ENTRY(cpu_arm926_dcache_clean_area) |
| 351 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 342 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
| @@ -475,42 +466,14 @@ arm926_crval: | |||
| 475 | 466 | ||
| 476 | __INITDATA | 467 | __INITDATA |
| 477 | 468 | ||
| 478 | /* | 469 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 479 | * Purpose : Function pointers used to access above functions - all calls | 470 | define_processor_functions arm926, dabort=v5tj_early_abort, pabort=legacy_pabort, suspend=1 |
| 480 | * come through these | ||
| 481 | */ | ||
| 482 | .type arm926_processor_functions, #object | ||
| 483 | arm926_processor_functions: | ||
| 484 | .word v5tj_early_abort | ||
| 485 | .word legacy_pabort | ||
| 486 | .word cpu_arm926_proc_init | ||
| 487 | .word cpu_arm926_proc_fin | ||
| 488 | .word cpu_arm926_reset | ||
| 489 | .word cpu_arm926_do_idle | ||
| 490 | .word cpu_arm926_dcache_clean_area | ||
| 491 | .word cpu_arm926_switch_mm | ||
| 492 | .word cpu_arm926_set_pte_ext | ||
| 493 | .word cpu_arm926_suspend_size | ||
| 494 | .word cpu_arm926_do_suspend | ||
| 495 | .word cpu_arm926_do_resume | ||
| 496 | .size arm926_processor_functions, . - arm926_processor_functions | ||
| 497 | 471 | ||
| 498 | .section ".rodata" | 472 | .section ".rodata" |
| 499 | 473 | ||
| 500 | .type cpu_arch_name, #object | 474 | string cpu_arch_name, "armv5tej" |
| 501 | cpu_arch_name: | 475 | string cpu_elf_name, "v5" |
| 502 | .asciz "armv5tej" | 476 | string cpu_arm926_name, "ARM926EJ-S" |
| 503 | .size cpu_arch_name, . - cpu_arch_name | ||
| 504 | |||
| 505 | .type cpu_elf_name, #object | ||
| 506 | cpu_elf_name: | ||
| 507 | .asciz "v5" | ||
| 508 | .size cpu_elf_name, . - cpu_elf_name | ||
| 509 | |||
| 510 | .type cpu_arm926_name, #object | ||
| 511 | cpu_arm926_name: | ||
| 512 | .asciz "ARM926EJ-S" | ||
| 513 | .size cpu_arm926_name, . - cpu_arm926_name | ||
| 514 | 477 | ||
| 515 | .align | 478 | .align |
| 516 | 479 | ||
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 26aea3f71c26..ac750d506153 100644 --- a/arch/arm/mm/proc-arm940.S +++ b/arch/arm/mm/proc-arm940.S | |||
| @@ -264,17 +264,8 @@ ENTRY(arm940_dma_unmap_area) | |||
| 264 | mov pc, lr | 264 | mov pc, lr |
| 265 | ENDPROC(arm940_dma_unmap_area) | 265 | ENDPROC(arm940_dma_unmap_area) |
| 266 | 266 | ||
| 267 | ENTRY(arm940_cache_fns) | 267 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 268 | .long arm940_flush_icache_all | 268 | define_cache_functions arm940 |
| 269 | .long arm940_flush_kern_cache_all | ||
| 270 | .long arm940_flush_user_cache_all | ||
| 271 | .long arm940_flush_user_cache_range | ||
| 272 | .long arm940_coherent_kern_range | ||
| 273 | .long arm940_coherent_user_range | ||
| 274 | .long arm940_flush_kern_dcache_area | ||
| 275 | .long arm940_dma_map_area | ||
| 276 | .long arm940_dma_unmap_area | ||
| 277 | .long arm940_dma_flush_range | ||
| 278 | 269 | ||
| 279 | __CPUINIT | 270 | __CPUINIT |
| 280 | 271 | ||
| @@ -348,42 +339,14 @@ __arm940_setup: | |||
| 348 | 339 | ||
| 349 | __INITDATA | 340 | __INITDATA |
| 350 | 341 | ||
| 351 | /* | 342 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 352 | * Purpose : Function pointers used to access above functions - all calls | 343 | define_processor_functions arm940, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1 |
| 353 | * come through these | ||
| 354 | */ | ||
| 355 | .type arm940_processor_functions, #object | ||
| 356 | ENTRY(arm940_processor_functions) | ||
| 357 | .word nommu_early_abort | ||
| 358 | .word legacy_pabort | ||
| 359 | .word cpu_arm940_proc_init | ||
| 360 | .word cpu_arm940_proc_fin | ||
| 361 | .word cpu_arm940_reset | ||
| 362 | .word cpu_arm940_do_idle | ||
| 363 | .word cpu_arm940_dcache_clean_area | ||
| 364 | .word cpu_arm940_switch_mm | ||
| 365 | .word 0 @ cpu_*_set_pte | ||
| 366 | .word 0 | ||
| 367 | .word 0 | ||
| 368 | .word 0 | ||
| 369 | .size arm940_processor_functions, . - arm940_processor_functions | ||
| 370 | 344 | ||
| 371 | .section ".rodata" | 345 | .section ".rodata" |
| 372 | 346 | ||
| 373 | .type cpu_arch_name, #object | 347 | string cpu_arch_name, "armv4t" |
| 374 | cpu_arch_name: | 348 | string cpu_elf_name, "v4" |
| 375 | .asciz "armv4t" | 349 | string cpu_arm940_name, "ARM940T" |
| 376 | .size cpu_arch_name, . - cpu_arch_name | ||
| 377 | |||
| 378 | .type cpu_elf_name, #object | ||
| 379 | cpu_elf_name: | ||
| 380 | .asciz "v4" | ||
| 381 | .size cpu_elf_name, . - cpu_elf_name | ||
| 382 | |||
| 383 | .type cpu_arm940_name, #object | ||
| 384 | cpu_arm940_name: | ||
| 385 | .ascii "ARM940T" | ||
| 386 | .size cpu_arm940_name, . - cpu_arm940_name | ||
| 387 | 350 | ||
| 388 | .align | 351 | .align |
| 389 | 352 | ||
diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S index 8063345406fe..f8f7ea34bfc5 100644 --- a/arch/arm/mm/proc-arm946.S +++ b/arch/arm/mm/proc-arm946.S | |||
| @@ -306,18 +306,8 @@ ENTRY(arm946_dma_unmap_area) | |||
| 306 | mov pc, lr | 306 | mov pc, lr |
| 307 | ENDPROC(arm946_dma_unmap_area) | 307 | ENDPROC(arm946_dma_unmap_area) |
| 308 | 308 | ||
| 309 | ENTRY(arm946_cache_fns) | 309 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 310 | .long arm946_flush_icache_all | 310 | define_cache_functions arm946 |
| 311 | .long arm946_flush_kern_cache_all | ||
| 312 | .long arm946_flush_user_cache_all | ||
| 313 | .long arm946_flush_user_cache_range | ||
| 314 | .long arm946_coherent_kern_range | ||
| 315 | .long arm946_coherent_user_range | ||
| 316 | .long arm946_flush_kern_dcache_area | ||
| 317 | .long arm946_dma_map_area | ||
| 318 | .long arm946_dma_unmap_area | ||
| 319 | .long arm946_dma_flush_range | ||
| 320 | |||
| 321 | 311 | ||
| 322 | ENTRY(cpu_arm946_dcache_clean_area) | 312 | ENTRY(cpu_arm946_dcache_clean_area) |
| 323 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 313 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
| @@ -403,43 +393,14 @@ __arm946_setup: | |||
| 403 | 393 | ||
| 404 | __INITDATA | 394 | __INITDATA |
| 405 | 395 | ||
| 406 | /* | 396 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 407 | * Purpose : Function pointers used to access above functions - all calls | 397 | define_processor_functions arm946, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1 |
| 408 | * come through these | ||
| 409 | */ | ||
| 410 | .type arm946_processor_functions, #object | ||
| 411 | ENTRY(arm946_processor_functions) | ||
| 412 | .word nommu_early_abort | ||
| 413 | .word legacy_pabort | ||
| 414 | .word cpu_arm946_proc_init | ||
| 415 | .word cpu_arm946_proc_fin | ||
| 416 | .word cpu_arm946_reset | ||
| 417 | .word cpu_arm946_do_idle | ||
| 418 | |||
| 419 | .word cpu_arm946_dcache_clean_area | ||
| 420 | .word cpu_arm946_switch_mm | ||
| 421 | .word 0 @ cpu_*_set_pte | ||
| 422 | .word 0 | ||
| 423 | .word 0 | ||
| 424 | .word 0 | ||
| 425 | .size arm946_processor_functions, . - arm946_processor_functions | ||
| 426 | 398 | ||
| 427 | .section ".rodata" | 399 | .section ".rodata" |
| 428 | 400 | ||
| 429 | .type cpu_arch_name, #object | 401 | string cpu_arch_name, "armv5te" |
| 430 | cpu_arch_name: | 402 | string cpu_elf_name, "v5t" |
| 431 | .asciz "armv5te" | 403 | string cpu_arm946_name, "ARM946E-S" |
| 432 | .size cpu_arch_name, . - cpu_arch_name | ||
| 433 | |||
| 434 | .type cpu_elf_name, #object | ||
| 435 | cpu_elf_name: | ||
| 436 | .asciz "v5t" | ||
| 437 | .size cpu_elf_name, . - cpu_elf_name | ||
| 438 | |||
| 439 | .type cpu_arm946_name, #object | ||
| 440 | cpu_arm946_name: | ||
| 441 | .ascii "ARM946E-S" | ||
| 442 | .size cpu_arm946_name, . - cpu_arm946_name | ||
| 443 | 404 | ||
| 444 | .align | 405 | .align |
| 445 | 406 | ||
diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S index 546b54da1005..2120f9e2af7f 100644 --- a/arch/arm/mm/proc-arm9tdmi.S +++ b/arch/arm/mm/proc-arm9tdmi.S | |||
| @@ -17,6 +17,8 @@ | |||
| 17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
| 18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
| 19 | 19 | ||
| 20 | #include "proc-macros.S" | ||
| 21 | |||
| 20 | .text | 22 | .text |
| 21 | /* | 23 | /* |
| 22 | * cpu_arm9tdmi_proc_init() | 24 | * cpu_arm9tdmi_proc_init() |
| @@ -55,82 +57,38 @@ __arm9tdmi_setup: | |||
| 55 | 57 | ||
| 56 | __INITDATA | 58 | __INITDATA |
| 57 | 59 | ||
| 58 | /* | 60 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 59 | * Purpose : Function pointers used to access above functions - all calls | 61 | define_processor_functions arm9tdmi, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1 |
| 60 | * come through these | ||
| 61 | */ | ||
| 62 | .type arm9tdmi_processor_functions, #object | ||
| 63 | ENTRY(arm9tdmi_processor_functions) | ||
| 64 | .word nommu_early_abort | ||
| 65 | .word legacy_pabort | ||
| 66 | .word cpu_arm9tdmi_proc_init | ||
| 67 | .word cpu_arm9tdmi_proc_fin | ||
| 68 | .word cpu_arm9tdmi_reset | ||
| 69 | .word cpu_arm9tdmi_do_idle | ||
| 70 | .word cpu_arm9tdmi_dcache_clean_area | ||
| 71 | .word cpu_arm9tdmi_switch_mm | ||
| 72 | .word 0 @ cpu_*_set_pte | ||
| 73 | .word 0 | ||
| 74 | .word 0 | ||
| 75 | .word 0 | ||
| 76 | .size arm9tdmi_processor_functions, . - arm9tdmi_processor_functions | ||
| 77 | 62 | ||
| 78 | .section ".rodata" | 63 | .section ".rodata" |
| 79 | 64 | ||
| 80 | .type cpu_arch_name, #object | 65 | string cpu_arch_name, "armv4t" |
| 81 | cpu_arch_name: | 66 | string cpu_elf_name, "v4" |
| 82 | .asciz "armv4t" | 67 | string cpu_arm9tdmi_name, "ARM9TDMI" |
| 83 | .size cpu_arch_name, . - cpu_arch_name | 68 | string cpu_p2001_name, "P2001" |
| 84 | |||
| 85 | .type cpu_elf_name, #object | ||
| 86 | cpu_elf_name: | ||
| 87 | .asciz "v4" | ||
| 88 | .size cpu_elf_name, . - cpu_elf_name | ||
| 89 | |||
| 90 | .type cpu_arm9tdmi_name, #object | ||
| 91 | cpu_arm9tdmi_name: | ||
| 92 | .asciz "ARM9TDMI" | ||
| 93 | .size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name | ||
| 94 | |||
| 95 | .type cpu_p2001_name, #object | ||
| 96 | cpu_p2001_name: | ||
| 97 | .asciz "P2001" | ||
| 98 | .size cpu_p2001_name, . - cpu_p2001_name | ||
| 99 | 69 | ||
| 100 | .align | 70 | .align |
| 101 | 71 | ||
| 102 | .section ".proc.info.init", #alloc, #execinstr | 72 | .section ".proc.info.init", #alloc, #execinstr |
| 103 | 73 | ||
| 104 | .type __arm9tdmi_proc_info, #object | 74 | .macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req |
| 105 | __arm9tdmi_proc_info: | 75 | .type __\name\()_proc_info, #object |
| 106 | .long 0x41009900 | 76 | __\name\()_proc_info: |
| 107 | .long 0xfff8ff00 | 77 | .long \cpu_val |
| 78 | .long \cpu_mask | ||
| 108 | .long 0 | 79 | .long 0 |
| 109 | .long 0 | 80 | .long 0 |
| 110 | b __arm9tdmi_setup | 81 | b __arm9tdmi_setup |
| 111 | .long cpu_arch_name | 82 | .long cpu_arch_name |
| 112 | .long cpu_elf_name | 83 | .long cpu_elf_name |
| 113 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | 84 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT |
| 114 | .long cpu_arm9tdmi_name | 85 | .long \cpu_name |
| 115 | .long arm9tdmi_processor_functions | 86 | .long arm9tdmi_processor_functions |
| 116 | .long 0 | 87 | .long 0 |
| 117 | .long 0 | 88 | .long 0 |
| 118 | .long v4_cache_fns | 89 | .long v4_cache_fns |
| 119 | .size __arm9tdmi_proc_info, . - __arm9tdmi_proc_info | 90 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 91 | .endm | ||
| 120 | 92 | ||
| 121 | .type __p2001_proc_info, #object | 93 | arm9tdmi_proc_info arm9tdmi, 0x41009900, 0xfff8ff00, cpu_arm9tdmi_name |
| 122 | __p2001_proc_info: | 94 | arm9tdmi_proc_info p2001, 0x41029000, 0xffffffff, cpu_p2001_name |
| 123 | .long 0x41029000 | ||
| 124 | .long 0xffffffff | ||
| 125 | .long 0 | ||
| 126 | .long 0 | ||
| 127 | b __arm9tdmi_setup | ||
| 128 | .long cpu_arch_name | ||
| 129 | .long cpu_elf_name | ||
| 130 | .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT | ||
| 131 | .long cpu_p2001_name | ||
| 132 | .long arm9tdmi_processor_functions | ||
| 133 | .long 0 | ||
| 134 | .long 0 | ||
| 135 | .long v4_cache_fns | ||
| 136 | .size __p2001_proc_info, . - __p2001_proc_info | ||
diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S index fc2a4ae15cf4..4c7a5710472b 100644 --- a/arch/arm/mm/proc-fa526.S +++ b/arch/arm/mm/proc-fa526.S | |||
| @@ -180,42 +180,14 @@ fa526_cr1_set: | |||
| 180 | 180 | ||
| 181 | __INITDATA | 181 | __INITDATA |
| 182 | 182 | ||
| 183 | /* | 183 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 184 | * Purpose : Function pointers used to access above functions - all calls | 184 | define_processor_functions fa526, dabort=v4_early_abort, pabort=legacy_pabort |
| 185 | * come through these | ||
| 186 | */ | ||
| 187 | .type fa526_processor_functions, #object | ||
| 188 | fa526_processor_functions: | ||
| 189 | .word v4_early_abort | ||
| 190 | .word legacy_pabort | ||
| 191 | .word cpu_fa526_proc_init | ||
| 192 | .word cpu_fa526_proc_fin | ||
| 193 | .word cpu_fa526_reset | ||
| 194 | .word cpu_fa526_do_idle | ||
| 195 | .word cpu_fa526_dcache_clean_area | ||
| 196 | .word cpu_fa526_switch_mm | ||
| 197 | .word cpu_fa526_set_pte_ext | ||
| 198 | .word 0 | ||
| 199 | .word 0 | ||
| 200 | .word 0 | ||
| 201 | .size fa526_processor_functions, . - fa526_processor_functions | ||
| 202 | 185 | ||
| 203 | .section ".rodata" | 186 | .section ".rodata" |
| 204 | 187 | ||
| 205 | .type cpu_arch_name, #object | 188 | string cpu_arch_name, "armv4" |
| 206 | cpu_arch_name: | 189 | string cpu_elf_name, "v4" |
| 207 | .asciz "armv4" | 190 | string cpu_fa526_name, "FA526" |
| 208 | .size cpu_arch_name, . - cpu_arch_name | ||
| 209 | |||
| 210 | .type cpu_elf_name, #object | ||
| 211 | cpu_elf_name: | ||
| 212 | .asciz "v4" | ||
| 213 | .size cpu_elf_name, . - cpu_elf_name | ||
| 214 | |||
| 215 | .type cpu_fa526_name, #object | ||
| 216 | cpu_fa526_name: | ||
| 217 | .asciz "FA526" | ||
| 218 | .size cpu_fa526_name, . - cpu_fa526_name | ||
| 219 | 191 | ||
| 220 | .align | 192 | .align |
| 221 | 193 | ||
diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S index d3883eed7a4a..8a6c2f78c1c3 100644 --- a/arch/arm/mm/proc-feroceon.S +++ b/arch/arm/mm/proc-feroceon.S | |||
| @@ -411,29 +411,28 @@ ENTRY(feroceon_dma_unmap_area) | |||
| 411 | mov pc, lr | 411 | mov pc, lr |
| 412 | ENDPROC(feroceon_dma_unmap_area) | 412 | ENDPROC(feroceon_dma_unmap_area) |
| 413 | 413 | ||
| 414 | ENTRY(feroceon_cache_fns) | 414 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 415 | .long feroceon_flush_icache_all | 415 | define_cache_functions feroceon |
| 416 | .long feroceon_flush_kern_cache_all | 416 | |
| 417 | .long feroceon_flush_user_cache_all | 417 | .macro range_alias basename |
| 418 | .long feroceon_flush_user_cache_range | 418 | .globl feroceon_range_\basename |
| 419 | .long feroceon_coherent_kern_range | 419 | .type feroceon_range_\basename , %function |
| 420 | .long feroceon_coherent_user_range | 420 | .equ feroceon_range_\basename , feroceon_\basename |
| 421 | .long feroceon_flush_kern_dcache_area | 421 | .endm |
| 422 | .long feroceon_dma_map_area | 422 | |
| 423 | .long feroceon_dma_unmap_area | 423 | /* |
| 424 | .long feroceon_dma_flush_range | 424 | * Most of the cache functions are unchanged for this case. |
| 425 | 425 | * Export suitable alias symbols for the unchanged functions: | |
| 426 | ENTRY(feroceon_range_cache_fns) | 426 | */ |
| 427 | .long feroceon_flush_icache_all | 427 | range_alias flush_icache_all |
| 428 | .long feroceon_flush_kern_cache_all | 428 | range_alias flush_user_cache_all |
| 429 | .long feroceon_flush_user_cache_all | 429 | range_alias flush_kern_cache_all |
| 430 | .long feroceon_flush_user_cache_range | 430 | range_alias flush_user_cache_range |
| 431 | .long feroceon_coherent_kern_range | 431 | range_alias coherent_kern_range |
| 432 | .long feroceon_coherent_user_range | 432 | range_alias coherent_user_range |
| 433 | .long feroceon_range_flush_kern_dcache_area | 433 | range_alias dma_unmap_area |
| 434 | .long feroceon_range_dma_map_area | 434 | |
| 435 | .long feroceon_dma_unmap_area | 435 | define_cache_functions feroceon_range |
| 436 | .long feroceon_range_dma_flush_range | ||
| 437 | 436 | ||
| 438 | .align 5 | 437 | .align 5 |
| 439 | ENTRY(cpu_feroceon_dcache_clean_area) | 438 | ENTRY(cpu_feroceon_dcache_clean_area) |
| @@ -539,93 +538,27 @@ feroceon_crval: | |||
| 539 | 538 | ||
| 540 | __INITDATA | 539 | __INITDATA |
| 541 | 540 | ||
| 542 | /* | 541 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 543 | * Purpose : Function pointers used to access above functions - all calls | 542 | define_processor_functions feroceon, dabort=v5t_early_abort, pabort=legacy_pabort |
| 544 | * come through these | ||
| 545 | */ | ||
| 546 | .type feroceon_processor_functions, #object | ||
| 547 | feroceon_processor_functions: | ||
| 548 | .word v5t_early_abort | ||
| 549 | .word legacy_pabort | ||
| 550 | .word cpu_feroceon_proc_init | ||
| 551 | .word cpu_feroceon_proc_fin | ||
| 552 | .word cpu_feroceon_reset | ||
| 553 | .word cpu_feroceon_do_idle | ||
| 554 | .word cpu_feroceon_dcache_clean_area | ||
| 555 | .word cpu_feroceon_switch_mm | ||
| 556 | .word cpu_feroceon_set_pte_ext | ||
| 557 | .word 0 | ||
| 558 | .word 0 | ||
| 559 | .word 0 | ||
| 560 | .size feroceon_processor_functions, . - feroceon_processor_functions | ||
| 561 | 543 | ||
| 562 | .section ".rodata" | 544 | .section ".rodata" |
| 563 | 545 | ||
| 564 | .type cpu_arch_name, #object | 546 | string cpu_arch_name, "armv5te" |
| 565 | cpu_arch_name: | 547 | string cpu_elf_name, "v5" |
| 566 | .asciz "armv5te" | 548 | string cpu_feroceon_name, "Feroceon" |
| 567 | .size cpu_arch_name, . - cpu_arch_name | 549 | string cpu_88fr531_name, "Feroceon 88FR531-vd" |
| 568 | 550 | string cpu_88fr571_name, "Feroceon 88FR571-vd" | |
| 569 | .type cpu_elf_name, #object | 551 | string cpu_88fr131_name, "Feroceon 88FR131" |
| 570 | cpu_elf_name: | ||
| 571 | .asciz "v5" | ||
| 572 | .size cpu_elf_name, . - cpu_elf_name | ||
| 573 | |||
| 574 | .type cpu_feroceon_name, #object | ||
| 575 | cpu_feroceon_name: | ||
| 576 | .asciz "Feroceon" | ||
| 577 | .size cpu_feroceon_name, . - cpu_feroceon_name | ||
| 578 | |||
| 579 | .type cpu_88fr531_name, #object | ||
| 580 | cpu_88fr531_name: | ||
| 581 | .asciz "Feroceon 88FR531-vd" | ||
| 582 | .size cpu_88fr531_name, . - cpu_88fr531_name | ||
| 583 | |||
| 584 | .type cpu_88fr571_name, #object | ||
| 585 | cpu_88fr571_name: | ||
| 586 | .asciz "Feroceon 88FR571-vd" | ||
| 587 | .size cpu_88fr571_name, . - cpu_88fr571_name | ||
| 588 | |||
| 589 | .type cpu_88fr131_name, #object | ||
| 590 | cpu_88fr131_name: | ||
| 591 | .asciz "Feroceon 88FR131" | ||
| 592 | .size cpu_88fr131_name, . - cpu_88fr131_name | ||
| 593 | 552 | ||
| 594 | .align | 553 | .align |
| 595 | 554 | ||
| 596 | .section ".proc.info.init", #alloc, #execinstr | 555 | .section ".proc.info.init", #alloc, #execinstr |
| 597 | 556 | ||
| 598 | #ifdef CONFIG_CPU_FEROCEON_OLD_ID | 557 | .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req |
| 599 | .type __feroceon_old_id_proc_info,#object | 558 | .type __\name\()_proc_info,#object |
| 600 | __feroceon_old_id_proc_info: | 559 | __\name\()_proc_info: |
| 601 | .long 0x41009260 | 560 | .long \cpu_val |
| 602 | .long 0xff00fff0 | 561 | .long \cpu_mask |
| 603 | .long PMD_TYPE_SECT | \ | ||
| 604 | PMD_SECT_BUFFERABLE | \ | ||
| 605 | PMD_SECT_CACHEABLE | \ | ||
| 606 | PMD_BIT4 | \ | ||
| 607 | PMD_SECT_AP_WRITE | \ | ||
| 608 | PMD_SECT_AP_READ | ||
| 609 | .long PMD_TYPE_SECT | \ | ||
| 610 | PMD_BIT4 | \ | ||
| 611 | PMD_SECT_AP_WRITE | \ | ||
| 612 | PMD_SECT_AP_READ | ||
| 613 | b __feroceon_setup | ||
| 614 | .long cpu_arch_name | ||
| 615 | .long cpu_elf_name | ||
| 616 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 617 | .long cpu_feroceon_name | ||
| 618 | .long feroceon_processor_functions | ||
| 619 | .long v4wbi_tlb_fns | ||
| 620 | .long feroceon_user_fns | ||
| 621 | .long feroceon_cache_fns | ||
| 622 | .size __feroceon_old_id_proc_info, . - __feroceon_old_id_proc_info | ||
| 623 | #endif | ||
| 624 | |||
| 625 | .type __88fr531_proc_info,#object | ||
| 626 | __88fr531_proc_info: | ||
| 627 | .long 0x56055310 | ||
| 628 | .long 0xfffffff0 | ||
| 629 | .long PMD_TYPE_SECT | \ | 562 | .long PMD_TYPE_SECT | \ |
| 630 | PMD_SECT_BUFFERABLE | \ | 563 | PMD_SECT_BUFFERABLE | \ |
| 631 | PMD_SECT_CACHEABLE | \ | 564 | PMD_SECT_CACHEABLE | \ |
| @@ -640,59 +573,22 @@ __88fr531_proc_info: | |||
| 640 | .long cpu_arch_name | 573 | .long cpu_arch_name |
| 641 | .long cpu_elf_name | 574 | .long cpu_elf_name |
| 642 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | 575 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP |
| 643 | .long cpu_88fr531_name | 576 | .long \cpu_name |
| 644 | .long feroceon_processor_functions | 577 | .long feroceon_processor_functions |
| 645 | .long v4wbi_tlb_fns | 578 | .long v4wbi_tlb_fns |
| 646 | .long feroceon_user_fns | 579 | .long feroceon_user_fns |
| 647 | .long feroceon_cache_fns | 580 | .long \cache |
| 648 | .size __88fr531_proc_info, . - __88fr531_proc_info | 581 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 582 | .endm | ||
| 649 | 583 | ||
| 650 | .type __88fr571_proc_info,#object | 584 | #ifdef CONFIG_CPU_FEROCEON_OLD_ID |
| 651 | __88fr571_proc_info: | 585 | feroceon_proc_info feroceon_old_id, 0x41009260, 0xff00fff0, \ |
| 652 | .long 0x56155710 | 586 | cpu_name=cpu_feroceon_name, cache=feroceon_cache_fns |
| 653 | .long 0xfffffff0 | 587 | #endif |
| 654 | .long PMD_TYPE_SECT | \ | ||
| 655 | PMD_SECT_BUFFERABLE | \ | ||
| 656 | PMD_SECT_CACHEABLE | \ | ||
| 657 | PMD_BIT4 | \ | ||
| 658 | PMD_SECT_AP_WRITE | \ | ||
| 659 | PMD_SECT_AP_READ | ||
| 660 | .long PMD_TYPE_SECT | \ | ||
| 661 | PMD_BIT4 | \ | ||
| 662 | PMD_SECT_AP_WRITE | \ | ||
| 663 | PMD_SECT_AP_READ | ||
| 664 | b __feroceon_setup | ||
| 665 | .long cpu_arch_name | ||
| 666 | .long cpu_elf_name | ||
| 667 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 668 | .long cpu_88fr571_name | ||
| 669 | .long feroceon_processor_functions | ||
| 670 | .long v4wbi_tlb_fns | ||
| 671 | .long feroceon_user_fns | ||
| 672 | .long feroceon_range_cache_fns | ||
| 673 | .size __88fr571_proc_info, . - __88fr571_proc_info | ||
| 674 | 588 | ||
| 675 | .type __88fr131_proc_info,#object | 589 | feroceon_proc_info 88fr531, 0x56055310, 0xfffffff0, cpu_88fr531_name, \ |
| 676 | __88fr131_proc_info: | 590 | cache=feroceon_cache_fns |
| 677 | .long 0x56251310 | 591 | feroceon_proc_info 88fr571, 0x56155710, 0xfffffff0, cpu_88fr571_name, \ |
| 678 | .long 0xfffffff0 | 592 | cache=feroceon_range_cache_fns |
| 679 | .long PMD_TYPE_SECT | \ | 593 | feroceon_proc_info 88fr131, 0x56251310, 0xfffffff0, cpu_88fr131_name, \ |
| 680 | PMD_SECT_BUFFERABLE | \ | 594 | cache=feroceon_range_cache_fns |
| 681 | PMD_SECT_CACHEABLE | \ | ||
| 682 | PMD_BIT4 | \ | ||
| 683 | PMD_SECT_AP_WRITE | \ | ||
| 684 | PMD_SECT_AP_READ | ||
| 685 | .long PMD_TYPE_SECT | \ | ||
| 686 | PMD_BIT4 | \ | ||
| 687 | PMD_SECT_AP_WRITE | \ | ||
| 688 | PMD_SECT_AP_READ | ||
| 689 | b __feroceon_setup | ||
| 690 | .long cpu_arch_name | ||
| 691 | .long cpu_elf_name | ||
| 692 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 693 | .long cpu_88fr131_name | ||
| 694 | .long feroceon_processor_functions | ||
| 695 | .long v4wbi_tlb_fns | ||
| 696 | .long feroceon_user_fns | ||
| 697 | .long feroceon_range_cache_fns | ||
| 698 | .size __88fr131_proc_info, . - __88fr131_proc_info | ||
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S index 34261f9486b9..4ae9b4407074 100644 --- a/arch/arm/mm/proc-macros.S +++ b/arch/arm/mm/proc-macros.S | |||
| @@ -254,3 +254,66 @@ | |||
| 254 | mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line | 254 | mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line |
| 255 | mcr p15, 0, ip, c7, c10, 4 @ data write barrier | 255 | mcr p15, 0, ip, c7, c10, 4 @ data write barrier |
| 256 | .endm | 256 | .endm |
| 257 | |||
| 258 | .macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0 | ||
| 259 | .type \name\()_processor_functions, #object | ||
| 260 | .align 2 | ||
| 261 | ENTRY(\name\()_processor_functions) | ||
| 262 | .word \dabort | ||
| 263 | .word \pabort | ||
| 264 | .word cpu_\name\()_proc_init | ||
| 265 | .word cpu_\name\()_proc_fin | ||
| 266 | .word cpu_\name\()_reset | ||
| 267 | .word cpu_\name\()_do_idle | ||
| 268 | .word cpu_\name\()_dcache_clean_area | ||
| 269 | .word cpu_\name\()_switch_mm | ||
| 270 | |||
| 271 | .if \nommu | ||
| 272 | .word 0 | ||
| 273 | .else | ||
| 274 | .word cpu_\name\()_set_pte_ext | ||
| 275 | .endif | ||
| 276 | |||
| 277 | .if \suspend | ||
| 278 | .word cpu_\name\()_suspend_size | ||
| 279 | .word cpu_\name\()_do_suspend | ||
| 280 | .word cpu_\name\()_do_resume | ||
| 281 | .else | ||
| 282 | .word 0 | ||
| 283 | .word 0 | ||
| 284 | .word 0 | ||
| 285 | .endif | ||
| 286 | |||
| 287 | .size \name\()_processor_functions, . - \name\()_processor_functions | ||
| 288 | .endm | ||
| 289 | |||
| 290 | .macro define_cache_functions name:req | ||
| 291 | .align 2 | ||
| 292 | .type \name\()_cache_fns, #object | ||
| 293 | ENTRY(\name\()_cache_fns) | ||
| 294 | .long \name\()_flush_icache_all | ||
| 295 | .long \name\()_flush_kern_cache_all | ||
| 296 | .long \name\()_flush_user_cache_all | ||
| 297 | .long \name\()_flush_user_cache_range | ||
| 298 | .long \name\()_coherent_kern_range | ||
| 299 | .long \name\()_coherent_user_range | ||
| 300 | .long \name\()_flush_kern_dcache_area | ||
| 301 | .long \name\()_dma_map_area | ||
| 302 | .long \name\()_dma_unmap_area | ||
| 303 | .long \name\()_dma_flush_range | ||
| 304 | .size \name\()_cache_fns, . - \name\()_cache_fns | ||
| 305 | .endm | ||
| 306 | |||
| 307 | .macro define_tlb_functions name:req, flags_up:req, flags_smp | ||
| 308 | .type \name\()_tlb_fns, #object | ||
| 309 | ENTRY(\name\()_tlb_fns) | ||
| 310 | .long \name\()_flush_user_tlb_range | ||
| 311 | .long \name\()_flush_kern_tlb_range | ||
| 312 | .ifnb \flags_smp | ||
| 313 | ALT_SMP(.long \flags_smp ) | ||
| 314 | ALT_UP(.long \flags_up ) | ||
| 315 | .else | ||
| 316 | .long \flags_up | ||
| 317 | .endif | ||
| 318 | .size \name\()_tlb_fns, . - \name\()_tlb_fns | ||
| 319 | .endm | ||
diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S index 9d4f2ae63370..db52b0fb14a0 100644 --- a/arch/arm/mm/proc-mohawk.S +++ b/arch/arm/mm/proc-mohawk.S | |||
| @@ -93,6 +93,17 @@ ENTRY(cpu_mohawk_do_idle) | |||
| 93 | mov pc, lr | 93 | mov pc, lr |
| 94 | 94 | ||
| 95 | /* | 95 | /* |
| 96 | * flush_icache_all() | ||
| 97 | * | ||
| 98 | * Unconditionally clean and invalidate the entire icache. | ||
| 99 | */ | ||
| 100 | ENTRY(mohawk_flush_icache_all) | ||
| 101 | mov r0, #0 | ||
| 102 | mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache | ||
| 103 | mov pc, lr | ||
| 104 | ENDPROC(mohawk_flush_icache_all) | ||
| 105 | |||
| 106 | /* | ||
| 96 | * flush_user_cache_all() | 107 | * flush_user_cache_all() |
| 97 | * | 108 | * |
| 98 | * Clean and invalidate all cache entries in a particular | 109 | * Clean and invalidate all cache entries in a particular |
| @@ -288,16 +299,8 @@ ENTRY(mohawk_dma_unmap_area) | |||
| 288 | mov pc, lr | 299 | mov pc, lr |
| 289 | ENDPROC(mohawk_dma_unmap_area) | 300 | ENDPROC(mohawk_dma_unmap_area) |
| 290 | 301 | ||
| 291 | ENTRY(mohawk_cache_fns) | 302 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 292 | .long mohawk_flush_kern_cache_all | 303 | define_cache_functions mohawk |
| 293 | .long mohawk_flush_user_cache_all | ||
| 294 | .long mohawk_flush_user_cache_range | ||
| 295 | .long mohawk_coherent_kern_range | ||
| 296 | .long mohawk_coherent_user_range | ||
| 297 | .long mohawk_flush_kern_dcache_area | ||
| 298 | .long mohawk_dma_map_area | ||
| 299 | .long mohawk_dma_unmap_area | ||
| 300 | .long mohawk_dma_flush_range | ||
| 301 | 304 | ||
| 302 | ENTRY(cpu_mohawk_dcache_clean_area) | 305 | ENTRY(cpu_mohawk_dcache_clean_area) |
| 303 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 306 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry |
| @@ -373,42 +376,14 @@ mohawk_crval: | |||
| 373 | 376 | ||
| 374 | __INITDATA | 377 | __INITDATA |
| 375 | 378 | ||
| 376 | /* | 379 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 377 | * Purpose : Function pointers used to access above functions - all calls | 380 | define_processor_functions mohawk, dabort=v5t_early_abort, pabort=legacy_pabort |
| 378 | * come through these | ||
| 379 | */ | ||
| 380 | .type mohawk_processor_functions, #object | ||
| 381 | mohawk_processor_functions: | ||
| 382 | .word v5t_early_abort | ||
| 383 | .word legacy_pabort | ||
| 384 | .word cpu_mohawk_proc_init | ||
| 385 | .word cpu_mohawk_proc_fin | ||
| 386 | .word cpu_mohawk_reset | ||
| 387 | .word cpu_mohawk_do_idle | ||
| 388 | .word cpu_mohawk_dcache_clean_area | ||
| 389 | .word cpu_mohawk_switch_mm | ||
| 390 | .word cpu_mohawk_set_pte_ext | ||
| 391 | .word 0 | ||
| 392 | .word 0 | ||
| 393 | .word 0 | ||
| 394 | .size mohawk_processor_functions, . - mohawk_processor_functions | ||
| 395 | 381 | ||
| 396 | .section ".rodata" | 382 | .section ".rodata" |
| 397 | 383 | ||
| 398 | .type cpu_arch_name, #object | 384 | string cpu_arch_name, "armv5te" |
| 399 | cpu_arch_name: | 385 | string cpu_elf_name, "v5" |
| 400 | .asciz "armv5te" | 386 | string cpu_mohawk_name, "Marvell 88SV331x" |
| 401 | .size cpu_arch_name, . - cpu_arch_name | ||
| 402 | |||
| 403 | .type cpu_elf_name, #object | ||
| 404 | cpu_elf_name: | ||
| 405 | .asciz "v5" | ||
| 406 | .size cpu_elf_name, . - cpu_elf_name | ||
| 407 | |||
| 408 | .type cpu_mohawk_name, #object | ||
| 409 | cpu_mohawk_name: | ||
| 410 | .asciz "Marvell 88SV331x" | ||
| 411 | .size cpu_mohawk_name, . - cpu_mohawk_name | ||
| 412 | 387 | ||
| 413 | .align | 388 | .align |
| 414 | 389 | ||
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index 46f09ed16b98..d50ada26edd6 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
| @@ -187,43 +187,14 @@ sa110_crval: | |||
| 187 | 187 | ||
| 188 | __INITDATA | 188 | __INITDATA |
| 189 | 189 | ||
| 190 | /* | 190 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 191 | * Purpose : Function pointers used to access above functions - all calls | 191 | define_processor_functions sa110, dabort=v4_early_abort, pabort=legacy_pabort |
| 192 | * come through these | ||
| 193 | */ | ||
| 194 | |||
| 195 | .type sa110_processor_functions, #object | ||
| 196 | ENTRY(sa110_processor_functions) | ||
| 197 | .word v4_early_abort | ||
| 198 | .word legacy_pabort | ||
| 199 | .word cpu_sa110_proc_init | ||
| 200 | .word cpu_sa110_proc_fin | ||
| 201 | .word cpu_sa110_reset | ||
| 202 | .word cpu_sa110_do_idle | ||
| 203 | .word cpu_sa110_dcache_clean_area | ||
| 204 | .word cpu_sa110_switch_mm | ||
| 205 | .word cpu_sa110_set_pte_ext | ||
| 206 | .word 0 | ||
| 207 | .word 0 | ||
| 208 | .word 0 | ||
| 209 | .size sa110_processor_functions, . - sa110_processor_functions | ||
| 210 | 192 | ||
| 211 | .section ".rodata" | 193 | .section ".rodata" |
| 212 | 194 | ||
| 213 | .type cpu_arch_name, #object | 195 | string cpu_arch_name, "armv4" |
| 214 | cpu_arch_name: | 196 | string cpu_elf_name, "v4" |
| 215 | .asciz "armv4" | 197 | string cpu_sa110_name, "StrongARM-110" |
| 216 | .size cpu_arch_name, . - cpu_arch_name | ||
| 217 | |||
| 218 | .type cpu_elf_name, #object | ||
| 219 | cpu_elf_name: | ||
| 220 | .asciz "v4" | ||
| 221 | .size cpu_elf_name, . - cpu_elf_name | ||
| 222 | |||
| 223 | .type cpu_sa110_name, #object | ||
| 224 | cpu_sa110_name: | ||
| 225 | .asciz "StrongARM-110" | ||
| 226 | .size cpu_sa110_name, . - cpu_sa110_name | ||
| 227 | 198 | ||
| 228 | .align | 199 | .align |
| 229 | 200 | ||
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 184a9c997e36..c7e08cab55a8 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
| @@ -236,59 +236,28 @@ sa1100_crval: | |||
| 236 | __INITDATA | 236 | __INITDATA |
| 237 | 237 | ||
| 238 | /* | 238 | /* |
| 239 | * Purpose : Function pointers used to access above functions - all calls | ||
| 240 | * come through these | ||
| 241 | */ | ||
| 242 | |||
| 243 | /* | ||
| 244 | * SA1100 and SA1110 share the same function calls | 239 | * SA1100 and SA1110 share the same function calls |
| 245 | */ | 240 | */ |
| 246 | .type sa1100_processor_functions, #object | ||
| 247 | ENTRY(sa1100_processor_functions) | ||
| 248 | .word v4_early_abort | ||
| 249 | .word legacy_pabort | ||
| 250 | .word cpu_sa1100_proc_init | ||
| 251 | .word cpu_sa1100_proc_fin | ||
| 252 | .word cpu_sa1100_reset | ||
| 253 | .word cpu_sa1100_do_idle | ||
| 254 | .word cpu_sa1100_dcache_clean_area | ||
| 255 | .word cpu_sa1100_switch_mm | ||
| 256 | .word cpu_sa1100_set_pte_ext | ||
| 257 | .word cpu_sa1100_suspend_size | ||
| 258 | .word cpu_sa1100_do_suspend | ||
| 259 | .word cpu_sa1100_do_resume | ||
| 260 | .size sa1100_processor_functions, . - sa1100_processor_functions | ||
| 261 | |||
| 262 | .section ".rodata" | ||
| 263 | |||
| 264 | .type cpu_arch_name, #object | ||
| 265 | cpu_arch_name: | ||
| 266 | .asciz "armv4" | ||
| 267 | .size cpu_arch_name, . - cpu_arch_name | ||
| 268 | 241 | ||
| 269 | .type cpu_elf_name, #object | 242 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 270 | cpu_elf_name: | 243 | define_processor_functions sa1100, dabort=v4_early_abort, pabort=legacy_pabort, suspend=1 |
| 271 | .asciz "v4" | ||
| 272 | .size cpu_elf_name, . - cpu_elf_name | ||
| 273 | 244 | ||
| 274 | .type cpu_sa1100_name, #object | 245 | .section ".rodata" |
| 275 | cpu_sa1100_name: | ||
| 276 | .asciz "StrongARM-1100" | ||
| 277 | .size cpu_sa1100_name, . - cpu_sa1100_name | ||
| 278 | 246 | ||
| 279 | .type cpu_sa1110_name, #object | 247 | string cpu_arch_name, "armv4" |
| 280 | cpu_sa1110_name: | 248 | string cpu_elf_name, "v4" |
| 281 | .asciz "StrongARM-1110" | 249 | string cpu_sa1100_name, "StrongARM-1100" |
| 282 | .size cpu_sa1110_name, . - cpu_sa1110_name | 250 | string cpu_sa1110_name, "StrongARM-1110" |
| 283 | 251 | ||
| 284 | .align | 252 | .align |
| 285 | 253 | ||
| 286 | .section ".proc.info.init", #alloc, #execinstr | 254 | .section ".proc.info.init", #alloc, #execinstr |
| 287 | 255 | ||
| 288 | .type __sa1100_proc_info,#object | 256 | .macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req |
| 289 | __sa1100_proc_info: | 257 | .type __\name\()_proc_info,#object |
| 290 | .long 0x4401a110 | 258 | __\name\()_proc_info: |
| 291 | .long 0xfffffff0 | 259 | .long \cpu_val |
| 260 | .long \cpu_mask | ||
| 292 | .long PMD_TYPE_SECT | \ | 261 | .long PMD_TYPE_SECT | \ |
| 293 | PMD_SECT_BUFFERABLE | \ | 262 | PMD_SECT_BUFFERABLE | \ |
| 294 | PMD_SECT_CACHEABLE | \ | 263 | PMD_SECT_CACHEABLE | \ |
| @@ -301,32 +270,13 @@ __sa1100_proc_info: | |||
| 301 | .long cpu_arch_name | 270 | .long cpu_arch_name |
| 302 | .long cpu_elf_name | 271 | .long cpu_elf_name |
| 303 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT | 272 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT |
| 304 | .long cpu_sa1100_name | 273 | .long \cpu_name |
| 305 | .long sa1100_processor_functions | 274 | .long sa1100_processor_functions |
| 306 | .long v4wb_tlb_fns | 275 | .long v4wb_tlb_fns |
| 307 | .long v4_mc_user_fns | 276 | .long v4_mc_user_fns |
| 308 | .long v4wb_cache_fns | 277 | .long v4wb_cache_fns |
| 309 | .size __sa1100_proc_info, . - __sa1100_proc_info | 278 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 279 | .endm | ||
| 310 | 280 | ||
| 311 | .type __sa1110_proc_info,#object | 281 | sa1100_proc_info sa1100, 0x4401a110, 0xfffffff0, cpu_sa1100_name |
| 312 | __sa1110_proc_info: | 282 | sa1100_proc_info sa1110, 0x6901b110, 0xfffffff0, cpu_sa1110_name |
| 313 | .long 0x6901b110 | ||
| 314 | .long 0xfffffff0 | ||
| 315 | .long PMD_TYPE_SECT | \ | ||
| 316 | PMD_SECT_BUFFERABLE | \ | ||
| 317 | PMD_SECT_CACHEABLE | \ | ||
| 318 | PMD_SECT_AP_WRITE | \ | ||
| 319 | PMD_SECT_AP_READ | ||
| 320 | .long PMD_TYPE_SECT | \ | ||
| 321 | PMD_SECT_AP_WRITE | \ | ||
| 322 | PMD_SECT_AP_READ | ||
| 323 | b __sa1100_setup | ||
| 324 | .long cpu_arch_name | ||
| 325 | .long cpu_elf_name | ||
| 326 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT | ||
| 327 | .long cpu_sa1110_name | ||
| 328 | .long sa1100_processor_functions | ||
| 329 | .long v4wb_tlb_fns | ||
| 330 | .long v4_mc_user_fns | ||
| 331 | .long v4wb_cache_fns | ||
| 332 | .size __sa1110_proc_info, . - __sa1110_proc_info | ||
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 1d2b8451bf25..aedf3c5dbe4e 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
| @@ -56,6 +56,11 @@ ENTRY(cpu_v6_proc_fin) | |||
| 56 | */ | 56 | */ |
| 57 | .align 5 | 57 | .align 5 |
| 58 | ENTRY(cpu_v6_reset) | 58 | ENTRY(cpu_v6_reset) |
| 59 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register | ||
| 60 | bic r1, r1, #0x1 @ ...............m | ||
| 61 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU | ||
| 62 | mov r1, #0 | ||
| 63 | mcr p15, 0, r1, c7, c5, 4 @ ISB | ||
| 59 | mov pc, r0 | 64 | mov pc, r0 |
| 60 | 65 | ||
| 61 | /* | 66 | /* |
| @@ -169,11 +174,7 @@ cpu_resume_l1_flags: | |||
| 169 | #define cpu_v6_do_resume 0 | 174 | #define cpu_v6_do_resume 0 |
| 170 | #endif | 175 | #endif |
| 171 | 176 | ||
| 172 | 177 | string cpu_v6_name, "ARMv6-compatible processor" | |
| 173 | .type cpu_v6_name, #object | ||
| 174 | cpu_v6_name: | ||
| 175 | .asciz "ARMv6-compatible processor" | ||
| 176 | .size cpu_v6_name, . - cpu_v6_name | ||
| 177 | 178 | ||
| 178 | .align | 179 | .align |
| 179 | 180 | ||
| @@ -239,33 +240,13 @@ v6_crval: | |||
| 239 | 240 | ||
| 240 | __INITDATA | 241 | __INITDATA |
| 241 | 242 | ||
| 242 | .type v6_processor_functions, #object | 243 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 243 | ENTRY(v6_processor_functions) | 244 | define_processor_functions v6, dabort=v6_early_abort, pabort=v6_pabort, suspend=1 |
| 244 | .word v6_early_abort | ||
| 245 | .word v6_pabort | ||
| 246 | .word cpu_v6_proc_init | ||
| 247 | .word cpu_v6_proc_fin | ||
| 248 | .word cpu_v6_reset | ||
| 249 | .word cpu_v6_do_idle | ||
| 250 | .word cpu_v6_dcache_clean_area | ||
| 251 | .word cpu_v6_switch_mm | ||
| 252 | .word cpu_v6_set_pte_ext | ||
| 253 | .word cpu_v6_suspend_size | ||
| 254 | .word cpu_v6_do_suspend | ||
| 255 | .word cpu_v6_do_resume | ||
| 256 | .size v6_processor_functions, . - v6_processor_functions | ||
| 257 | 245 | ||
| 258 | .section ".rodata" | 246 | .section ".rodata" |
| 259 | 247 | ||
| 260 | .type cpu_arch_name, #object | 248 | string cpu_arch_name, "armv6" |
| 261 | cpu_arch_name: | 249 | string cpu_elf_name, "v6" |
| 262 | .asciz "armv6" | ||
| 263 | .size cpu_arch_name, . - cpu_arch_name | ||
| 264 | |||
| 265 | .type cpu_elf_name, #object | ||
| 266 | cpu_elf_name: | ||
| 267 | .asciz "v6" | ||
| 268 | .size cpu_elf_name, . - cpu_elf_name | ||
| 269 | .align | 250 | .align |
| 270 | 251 | ||
| 271 | .section ".proc.info.init", #alloc, #execinstr | 252 | .section ".proc.info.init", #alloc, #execinstr |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 089c0b5e454f..54d1a63517c5 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -58,9 +58,16 @@ ENDPROC(cpu_v7_proc_fin) | |||
| 58 | * to what would be the reset vector. | 58 | * to what would be the reset vector. |
| 59 | * | 59 | * |
| 60 | * - loc - location to jump to for soft reset | 60 | * - loc - location to jump to for soft reset |
| 61 | * | ||
| 62 | * This code must be executed using a flat identity mapping with | ||
| 63 | * caches disabled. | ||
| 61 | */ | 64 | */ |
| 62 | .align 5 | 65 | .align 5 |
| 63 | ENTRY(cpu_v7_reset) | 66 | ENTRY(cpu_v7_reset) |
| 67 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register | ||
| 68 | bic r1, r1, #0x1 @ ...............m | ||
| 69 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU | ||
| 70 | isb | ||
| 64 | mov pc, r0 | 71 | mov pc, r0 |
| 65 | ENDPROC(cpu_v7_reset) | 72 | ENDPROC(cpu_v7_reset) |
| 66 | 73 | ||
| @@ -173,8 +180,7 @@ ENTRY(cpu_v7_set_pte_ext) | |||
| 173 | mov pc, lr | 180 | mov pc, lr |
| 174 | ENDPROC(cpu_v7_set_pte_ext) | 181 | ENDPROC(cpu_v7_set_pte_ext) |
| 175 | 182 | ||
| 176 | cpu_v7_name: | 183 | string cpu_v7_name, "ARMv7 Processor" |
| 177 | .ascii "ARMv7 Processor" | ||
| 178 | .align | 184 | .align |
| 179 | 185 | ||
| 180 | /* | 186 | /* |
| @@ -279,13 +285,20 @@ cpu_resume_l1_flags: | |||
| 279 | * It is assumed that: | 285 | * It is assumed that: |
| 280 | * - cache type register is implemented | 286 | * - cache type register is implemented |
| 281 | */ | 287 | */ |
| 288 | __v7_ca5mp_setup: | ||
| 282 | __v7_ca9mp_setup: | 289 | __v7_ca9mp_setup: |
| 290 | mov r10, #(1 << 0) @ TLB ops broadcasting | ||
| 291 | b 1f | ||
| 292 | __v7_ca15mp_setup: | ||
| 293 | mov r10, #0 | ||
| 294 | 1: | ||
| 283 | #ifdef CONFIG_SMP | 295 | #ifdef CONFIG_SMP |
| 284 | ALT_SMP(mrc p15, 0, r0, c1, c0, 1) | 296 | ALT_SMP(mrc p15, 0, r0, c1, c0, 1) |
| 285 | ALT_UP(mov r0, #(1 << 6)) @ fake it for UP | 297 | ALT_UP(mov r0, #(1 << 6)) @ fake it for UP |
| 286 | tst r0, #(1 << 6) @ SMP/nAMP mode enabled? | 298 | tst r0, #(1 << 6) @ SMP/nAMP mode enabled? |
| 287 | orreq r0, r0, #(1 << 6) | (1 << 0) @ Enable SMP/nAMP mode and | 299 | orreq r0, r0, #(1 << 6) @ Enable SMP/nAMP mode |
| 288 | mcreq p15, 0, r0, c1, c0, 1 @ TLB ops broadcasting | 300 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits |
| 301 | mcreq p15, 0, r0, c1, c0, 1 | ||
| 289 | #endif | 302 | #endif |
| 290 | __v7_setup: | 303 | __v7_setup: |
| 291 | adr r12, __v7_setup_stack @ the local stack | 304 | adr r12, __v7_setup_stack @ the local stack |
| @@ -411,94 +424,75 @@ __v7_setup_stack: | |||
| 411 | 424 | ||
| 412 | __INITDATA | 425 | __INITDATA |
| 413 | 426 | ||
| 414 | .type v7_processor_functions, #object | 427 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 415 | ENTRY(v7_processor_functions) | 428 | define_processor_functions v7, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 |
| 416 | .word v7_early_abort | ||
| 417 | .word v7_pabort | ||
| 418 | .word cpu_v7_proc_init | ||
| 419 | .word cpu_v7_proc_fin | ||
| 420 | .word cpu_v7_reset | ||
| 421 | .word cpu_v7_do_idle | ||
| 422 | .word cpu_v7_dcache_clean_area | ||
| 423 | .word cpu_v7_switch_mm | ||
| 424 | .word cpu_v7_set_pte_ext | ||
| 425 | .word cpu_v7_suspend_size | ||
| 426 | .word cpu_v7_do_suspend | ||
| 427 | .word cpu_v7_do_resume | ||
| 428 | .size v7_processor_functions, . - v7_processor_functions | ||
| 429 | 429 | ||
| 430 | .section ".rodata" | 430 | .section ".rodata" |
| 431 | 431 | ||
| 432 | .type cpu_arch_name, #object | 432 | string cpu_arch_name, "armv7" |
| 433 | cpu_arch_name: | 433 | string cpu_elf_name, "v7" |
| 434 | .asciz "armv7" | ||
| 435 | .size cpu_arch_name, . - cpu_arch_name | ||
| 436 | |||
| 437 | .type cpu_elf_name, #object | ||
| 438 | cpu_elf_name: | ||
| 439 | .asciz "v7" | ||
| 440 | .size cpu_elf_name, . - cpu_elf_name | ||
| 441 | .align | 434 | .align |
| 442 | 435 | ||
| 443 | .section ".proc.info.init", #alloc, #execinstr | 436 | .section ".proc.info.init", #alloc, #execinstr |
| 444 | 437 | ||
| 445 | .type __v7_ca9mp_proc_info, #object | 438 | /* |
| 446 | __v7_ca9mp_proc_info: | 439 | * Standard v7 proc info content |
| 447 | .long 0x410fc090 @ Required ID value | 440 | */ |
| 448 | .long 0xff0ffff0 @ Mask for ID | 441 | .macro __v7_proc initfunc, mm_mmuflags = 0, io_mmuflags = 0, hwcaps = 0 |
| 449 | ALT_SMP(.long \ | 442 | ALT_SMP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \ |
| 450 | PMD_TYPE_SECT | \ | 443 | PMD_FLAGS_SMP | \mm_mmuflags) |
| 451 | PMD_SECT_AP_WRITE | \ | 444 | ALT_UP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \ |
| 452 | PMD_SECT_AP_READ | \ | 445 | PMD_FLAGS_UP | \mm_mmuflags) |
| 453 | PMD_FLAGS_SMP) | 446 | .long PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_AP_WRITE | \ |
| 454 | ALT_UP(.long \ | 447 | PMD_SECT_AP_READ | \io_mmuflags |
| 455 | PMD_TYPE_SECT | \ | 448 | W(b) \initfunc |
| 456 | PMD_SECT_AP_WRITE | \ | ||
| 457 | PMD_SECT_AP_READ | \ | ||
| 458 | PMD_FLAGS_UP) | ||
| 459 | .long PMD_TYPE_SECT | \ | ||
| 460 | PMD_SECT_XN | \ | ||
| 461 | PMD_SECT_AP_WRITE | \ | ||
| 462 | PMD_SECT_AP_READ | ||
| 463 | W(b) __v7_ca9mp_setup | ||
| 464 | .long cpu_arch_name | 449 | .long cpu_arch_name |
| 465 | .long cpu_elf_name | 450 | .long cpu_elf_name |
| 466 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS | 451 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT | \ |
| 452 | HWCAP_EDSP | HWCAP_TLS | \hwcaps | ||
| 467 | .long cpu_v7_name | 453 | .long cpu_v7_name |
| 468 | .long v7_processor_functions | 454 | .long v7_processor_functions |
| 469 | .long v7wbi_tlb_fns | 455 | .long v7wbi_tlb_fns |
| 470 | .long v6_user_fns | 456 | .long v6_user_fns |
| 471 | .long v7_cache_fns | 457 | .long v7_cache_fns |
| 458 | .endm | ||
| 459 | |||
| 460 | /* | ||
| 461 | * ARM Ltd. Cortex A5 processor. | ||
| 462 | */ | ||
| 463 | .type __v7_ca5mp_proc_info, #object | ||
| 464 | __v7_ca5mp_proc_info: | ||
| 465 | .long 0x410fc050 | ||
| 466 | .long 0xff0ffff0 | ||
| 467 | __v7_proc __v7_ca5mp_setup | ||
| 468 | .size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info | ||
| 469 | |||
| 470 | /* | ||
| 471 | * ARM Ltd. Cortex A9 processor. | ||
| 472 | */ | ||
| 473 | .type __v7_ca9mp_proc_info, #object | ||
| 474 | __v7_ca9mp_proc_info: | ||
| 475 | .long 0x410fc090 | ||
| 476 | .long 0xff0ffff0 | ||
| 477 | __v7_proc __v7_ca9mp_setup | ||
| 472 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info | 478 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info |
| 473 | 479 | ||
| 474 | /* | 480 | /* |
| 481 | * ARM Ltd. Cortex A15 processor. | ||
| 482 | */ | ||
| 483 | .type __v7_ca15mp_proc_info, #object | ||
| 484 | __v7_ca15mp_proc_info: | ||
| 485 | .long 0x410fc0f0 | ||
| 486 | .long 0xff0ffff0 | ||
| 487 | __v7_proc __v7_ca15mp_setup, hwcaps = HWCAP_IDIV | ||
| 488 | .size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info | ||
| 489 | |||
| 490 | /* | ||
| 475 | * Match any ARMv7 processor core. | 491 | * Match any ARMv7 processor core. |
| 476 | */ | 492 | */ |
| 477 | .type __v7_proc_info, #object | 493 | .type __v7_proc_info, #object |
| 478 | __v7_proc_info: | 494 | __v7_proc_info: |
| 479 | .long 0x000f0000 @ Required ID value | 495 | .long 0x000f0000 @ Required ID value |
| 480 | .long 0x000f0000 @ Mask for ID | 496 | .long 0x000f0000 @ Mask for ID |
| 481 | ALT_SMP(.long \ | 497 | __v7_proc __v7_setup |
| 482 | PMD_TYPE_SECT | \ | ||
| 483 | PMD_SECT_AP_WRITE | \ | ||
| 484 | PMD_SECT_AP_READ | \ | ||
| 485 | PMD_FLAGS_SMP) | ||
| 486 | ALT_UP(.long \ | ||
| 487 | PMD_TYPE_SECT | \ | ||
| 488 | PMD_SECT_AP_WRITE | \ | ||
| 489 | PMD_SECT_AP_READ | \ | ||
| 490 | PMD_FLAGS_UP) | ||
| 491 | .long PMD_TYPE_SECT | \ | ||
| 492 | PMD_SECT_XN | \ | ||
| 493 | PMD_SECT_AP_WRITE | \ | ||
| 494 | PMD_SECT_AP_READ | ||
| 495 | W(b) __v7_setup | ||
| 496 | .long cpu_arch_name | ||
| 497 | .long cpu_elf_name | ||
| 498 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS | ||
| 499 | .long cpu_v7_name | ||
| 500 | .long v7_processor_functions | ||
| 501 | .long v7wbi_tlb_fns | ||
| 502 | .long v6_user_fns | ||
| 503 | .long v7_cache_fns | ||
| 504 | .size __v7_proc_info, . - __v7_proc_info | 498 | .size __v7_proc_info, . - __v7_proc_info |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 596213699f37..1508f9bc526a 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
| @@ -335,17 +335,8 @@ ENTRY(xsc3_dma_unmap_area) | |||
| 335 | mov pc, lr | 335 | mov pc, lr |
| 336 | ENDPROC(xsc3_dma_unmap_area) | 336 | ENDPROC(xsc3_dma_unmap_area) |
| 337 | 337 | ||
| 338 | ENTRY(xsc3_cache_fns) | 338 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 339 | .long xsc3_flush_icache_all | 339 | define_cache_functions xsc3 |
| 340 | .long xsc3_flush_kern_cache_all | ||
| 341 | .long xsc3_flush_user_cache_all | ||
| 342 | .long xsc3_flush_user_cache_range | ||
| 343 | .long xsc3_coherent_kern_range | ||
| 344 | .long xsc3_coherent_user_range | ||
| 345 | .long xsc3_flush_kern_dcache_area | ||
| 346 | .long xsc3_dma_map_area | ||
| 347 | .long xsc3_dma_unmap_area | ||
| 348 | .long xsc3_dma_flush_range | ||
| 349 | 340 | ||
| 350 | ENTRY(cpu_xsc3_dcache_clean_area) | 341 | ENTRY(cpu_xsc3_dcache_clean_area) |
| 351 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line | 342 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line |
| @@ -503,52 +494,24 @@ xsc3_crval: | |||
| 503 | 494 | ||
| 504 | __INITDATA | 495 | __INITDATA |
| 505 | 496 | ||
| 506 | /* | 497 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 507 | * Purpose : Function pointers used to access above functions - all calls | 498 | define_processor_functions xsc3, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1 |
| 508 | * come through these | ||
| 509 | */ | ||
| 510 | |||
| 511 | .type xsc3_processor_functions, #object | ||
| 512 | ENTRY(xsc3_processor_functions) | ||
| 513 | .word v5t_early_abort | ||
| 514 | .word legacy_pabort | ||
| 515 | .word cpu_xsc3_proc_init | ||
| 516 | .word cpu_xsc3_proc_fin | ||
| 517 | .word cpu_xsc3_reset | ||
| 518 | .word cpu_xsc3_do_idle | ||
| 519 | .word cpu_xsc3_dcache_clean_area | ||
| 520 | .word cpu_xsc3_switch_mm | ||
| 521 | .word cpu_xsc3_set_pte_ext | ||
| 522 | .word cpu_xsc3_suspend_size | ||
| 523 | .word cpu_xsc3_do_suspend | ||
| 524 | .word cpu_xsc3_do_resume | ||
| 525 | .size xsc3_processor_functions, . - xsc3_processor_functions | ||
| 526 | 499 | ||
| 527 | .section ".rodata" | 500 | .section ".rodata" |
| 528 | 501 | ||
| 529 | .type cpu_arch_name, #object | 502 | string cpu_arch_name, "armv5te" |
| 530 | cpu_arch_name: | 503 | string cpu_elf_name, "v5" |
| 531 | .asciz "armv5te" | 504 | string cpu_xsc3_name, "XScale-V3 based processor" |
| 532 | .size cpu_arch_name, . - cpu_arch_name | ||
| 533 | |||
| 534 | .type cpu_elf_name, #object | ||
| 535 | cpu_elf_name: | ||
| 536 | .asciz "v5" | ||
| 537 | .size cpu_elf_name, . - cpu_elf_name | ||
| 538 | |||
| 539 | .type cpu_xsc3_name, #object | ||
| 540 | cpu_xsc3_name: | ||
| 541 | .asciz "XScale-V3 based processor" | ||
| 542 | .size cpu_xsc3_name, . - cpu_xsc3_name | ||
| 543 | 505 | ||
| 544 | .align | 506 | .align |
| 545 | 507 | ||
| 546 | .section ".proc.info.init", #alloc, #execinstr | 508 | .section ".proc.info.init", #alloc, #execinstr |
| 547 | 509 | ||
| 548 | .type __xsc3_proc_info,#object | 510 | .macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req |
| 549 | __xsc3_proc_info: | 511 | .type __\name\()_proc_info,#object |
| 550 | .long 0x69056000 | 512 | __\name\()_proc_info: |
| 551 | .long 0xffffe000 | 513 | .long \cpu_val |
| 514 | .long \cpu_mask | ||
| 552 | .long PMD_TYPE_SECT | \ | 515 | .long PMD_TYPE_SECT | \ |
| 553 | PMD_SECT_BUFFERABLE | \ | 516 | PMD_SECT_BUFFERABLE | \ |
| 554 | PMD_SECT_CACHEABLE | \ | 517 | PMD_SECT_CACHEABLE | \ |
| @@ -566,29 +529,10 @@ __xsc3_proc_info: | |||
| 566 | .long v4wbi_tlb_fns | 529 | .long v4wbi_tlb_fns |
| 567 | .long xsc3_mc_user_fns | 530 | .long xsc3_mc_user_fns |
| 568 | .long xsc3_cache_fns | 531 | .long xsc3_cache_fns |
| 569 | .size __xsc3_proc_info, . - __xsc3_proc_info | 532 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 533 | .endm | ||
| 570 | 534 | ||
| 571 | /* Note: PXA935 changed its implementor ID from Intel to Marvell */ | 535 | xsc3_proc_info xsc3, 0x69056000, 0xffffe000 |
| 572 | 536 | ||
| 573 | .type __xsc3_pxa935_proc_info,#object | 537 | /* Note: PXA935 changed its implementor ID from Intel to Marvell */ |
| 574 | __xsc3_pxa935_proc_info: | 538 | xsc3_proc_info xsc3_pxa935, 0x56056000, 0xffffe000 |
| 575 | .long 0x56056000 | ||
| 576 | .long 0xffffe000 | ||
| 577 | .long PMD_TYPE_SECT | \ | ||
| 578 | PMD_SECT_BUFFERABLE | \ | ||
| 579 | PMD_SECT_CACHEABLE | \ | ||
| 580 | PMD_SECT_AP_WRITE | \ | ||
| 581 | PMD_SECT_AP_READ | ||
| 582 | .long PMD_TYPE_SECT | \ | ||
| 583 | PMD_SECT_AP_WRITE | \ | ||
| 584 | PMD_SECT_AP_READ | ||
| 585 | b __xsc3_setup | ||
| 586 | .long cpu_arch_name | ||
| 587 | .long cpu_elf_name | ||
| 588 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 589 | .long cpu_xsc3_name | ||
| 590 | .long xsc3_processor_functions | ||
| 591 | .long v4wbi_tlb_fns | ||
| 592 | .long xsc3_mc_user_fns | ||
| 593 | .long xsc3_cache_fns | ||
| 594 | .size __xsc3_pxa935_proc_info, . - __xsc3_pxa935_proc_info | ||
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 42af97664c9d..76a804605010 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
| @@ -390,12 +390,12 @@ ENDPROC(xscale_dma_map_area) | |||
| 390 | * - size - size of region | 390 | * - size - size of region |
| 391 | * - dir - DMA direction | 391 | * - dir - DMA direction |
| 392 | */ | 392 | */ |
| 393 | ENTRY(xscale_dma_a0_map_area) | 393 | ENTRY(xscale_80200_A0_A1_dma_map_area) |
| 394 | add r1, r1, r0 | 394 | add r1, r1, r0 |
| 395 | teq r2, #DMA_TO_DEVICE | 395 | teq r2, #DMA_TO_DEVICE |
| 396 | beq xscale_dma_clean_range | 396 | beq xscale_dma_clean_range |
| 397 | b xscale_dma_flush_range | 397 | b xscale_dma_flush_range |
| 398 | ENDPROC(xscale_dma_a0_map_area) | 398 | ENDPROC(xscale_80200_A0_A1_dma_map_area) |
| 399 | 399 | ||
| 400 | /* | 400 | /* |
| 401 | * dma_unmap_area(start, size, dir) | 401 | * dma_unmap_area(start, size, dir) |
| @@ -407,17 +407,8 @@ ENTRY(xscale_dma_unmap_area) | |||
| 407 | mov pc, lr | 407 | mov pc, lr |
| 408 | ENDPROC(xscale_dma_unmap_area) | 408 | ENDPROC(xscale_dma_unmap_area) |
| 409 | 409 | ||
| 410 | ENTRY(xscale_cache_fns) | 410 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
| 411 | .long xscale_flush_icache_all | 411 | define_cache_functions xscale |
| 412 | .long xscale_flush_kern_cache_all | ||
| 413 | .long xscale_flush_user_cache_all | ||
| 414 | .long xscale_flush_user_cache_range | ||
| 415 | .long xscale_coherent_kern_range | ||
| 416 | .long xscale_coherent_user_range | ||
| 417 | .long xscale_flush_kern_dcache_area | ||
| 418 | .long xscale_dma_map_area | ||
| 419 | .long xscale_dma_unmap_area | ||
| 420 | .long xscale_dma_flush_range | ||
| 421 | 412 | ||
| 422 | /* | 413 | /* |
| 423 | * On stepping A0/A1 of the 80200, invalidating D-cache by line doesn't | 414 | * On stepping A0/A1 of the 80200, invalidating D-cache by line doesn't |
| @@ -432,16 +423,28 @@ ENTRY(xscale_cache_fns) | |||
| 432 | * revision January 22, 2003, available at: | 423 | * revision January 22, 2003, available at: |
| 433 | * http://www.intel.com/design/iio/specupdt/273415.htm | 424 | * http://www.intel.com/design/iio/specupdt/273415.htm |
| 434 | */ | 425 | */ |
| 435 | ENTRY(xscale_80200_A0_A1_cache_fns) | 426 | .macro a0_alias basename |
| 436 | .long xscale_flush_kern_cache_all | 427 | .globl xscale_80200_A0_A1_\basename |
| 437 | .long xscale_flush_user_cache_all | 428 | .type xscale_80200_A0_A1_\basename , %function |
| 438 | .long xscale_flush_user_cache_range | 429 | .equ xscale_80200_A0_A1_\basename , xscale_\basename |
| 439 | .long xscale_coherent_kern_range | 430 | .endm |
| 440 | .long xscale_coherent_user_range | 431 | |
| 441 | .long xscale_flush_kern_dcache_area | 432 | /* |
| 442 | .long xscale_dma_a0_map_area | 433 | * Most of the cache functions are unchanged for these processor revisions. |
| 443 | .long xscale_dma_unmap_area | 434 | * Export suitable alias symbols for the unchanged functions: |
| 444 | .long xscale_dma_flush_range | 435 | */ |
| 436 | a0_alias flush_icache_all | ||
| 437 | a0_alias flush_user_cache_all | ||
| 438 | a0_alias flush_kern_cache_all | ||
| 439 | a0_alias flush_user_cache_range | ||
| 440 | a0_alias coherent_kern_range | ||
| 441 | a0_alias coherent_user_range | ||
| 442 | a0_alias flush_kern_dcache_area | ||
| 443 | a0_alias dma_flush_range | ||
| 444 | a0_alias dma_unmap_area | ||
| 445 | |||
| 446 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) | ||
| 447 | define_cache_functions xscale_80200_A0_A1 | ||
| 445 | 448 | ||
| 446 | ENTRY(cpu_xscale_dcache_clean_area) | 449 | ENTRY(cpu_xscale_dcache_clean_area) |
| 447 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 450 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry |
| @@ -587,432 +590,74 @@ xscale_crval: | |||
| 587 | 590 | ||
| 588 | __INITDATA | 591 | __INITDATA |
| 589 | 592 | ||
| 590 | /* | 593 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
| 591 | * Purpose : Function pointers used to access above functions - all calls | 594 | define_processor_functions xscale, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1 |
| 592 | * come through these | ||
| 593 | */ | ||
| 594 | |||
| 595 | .type xscale_processor_functions, #object | ||
| 596 | ENTRY(xscale_processor_functions) | ||
| 597 | .word v5t_early_abort | ||
| 598 | .word legacy_pabort | ||
| 599 | .word cpu_xscale_proc_init | ||
| 600 | .word cpu_xscale_proc_fin | ||
| 601 | .word cpu_xscale_reset | ||
| 602 | .word cpu_xscale_do_idle | ||
| 603 | .word cpu_xscale_dcache_clean_area | ||
| 604 | .word cpu_xscale_switch_mm | ||
| 605 | .word cpu_xscale_set_pte_ext | ||
| 606 | .word cpu_xscale_suspend_size | ||
| 607 | .word cpu_xscale_do_suspend | ||
| 608 | .word cpu_xscale_do_resume | ||
| 609 | .size xscale_processor_functions, . - xscale_processor_functions | ||
| 610 | 595 | ||
| 611 | .section ".rodata" | 596 | .section ".rodata" |
| 612 | 597 | ||
| 613 | .type cpu_arch_name, #object | 598 | string cpu_arch_name, "armv5te" |
| 614 | cpu_arch_name: | 599 | string cpu_elf_name, "v5" |
| 615 | .asciz "armv5te" | 600 | |
| 616 | .size cpu_arch_name, . - cpu_arch_name | 601 | string cpu_80200_A0_A1_name, "XScale-80200 A0/A1" |
| 617 | 602 | string cpu_80200_name, "XScale-80200" | |
| 618 | .type cpu_elf_name, #object | 603 | string cpu_80219_name, "XScale-80219" |
| 619 | cpu_elf_name: | 604 | string cpu_8032x_name, "XScale-IOP8032x Family" |
| 620 | .asciz "v5" | 605 | string cpu_8033x_name, "XScale-IOP8033x Family" |
| 621 | .size cpu_elf_name, . - cpu_elf_name | 606 | string cpu_pxa250_name, "XScale-PXA250" |
| 622 | 607 | string cpu_pxa210_name, "XScale-PXA210" | |
| 623 | .type cpu_80200_A0_A1_name, #object | 608 | string cpu_ixp42x_name, "XScale-IXP42x Family" |
| 624 | cpu_80200_A0_A1_name: | 609 | string cpu_ixp43x_name, "XScale-IXP43x Family" |
| 625 | .asciz "XScale-80200 A0/A1" | 610 | string cpu_ixp46x_name, "XScale-IXP46x Family" |
| 626 | .size cpu_80200_A0_A1_name, . - cpu_80200_A0_A1_name | 611 | string cpu_ixp2400_name, "XScale-IXP2400" |
| 627 | 612 | string cpu_ixp2800_name, "XScale-IXP2800" | |
| 628 | .type cpu_80200_name, #object | 613 | string cpu_pxa255_name, "XScale-PXA255" |
| 629 | cpu_80200_name: | 614 | string cpu_pxa270_name, "XScale-PXA270" |
| 630 | .asciz "XScale-80200" | ||
| 631 | .size cpu_80200_name, . - cpu_80200_name | ||
| 632 | |||
| 633 | .type cpu_80219_name, #object | ||
| 634 | cpu_80219_name: | ||
| 635 | .asciz "XScale-80219" | ||
| 636 | .size cpu_80219_name, . - cpu_80219_name | ||
| 637 | |||
| 638 | .type cpu_8032x_name, #object | ||
| 639 | cpu_8032x_name: | ||
| 640 | .asciz "XScale-IOP8032x Family" | ||
| 641 | .size cpu_8032x_name, . - cpu_8032x_name | ||
| 642 | |||
| 643 | .type cpu_8033x_name, #object | ||
| 644 | cpu_8033x_name: | ||
| 645 | .asciz "XScale-IOP8033x Family" | ||
| 646 | .size cpu_8033x_name, . - cpu_8033x_name | ||
| 647 | |||
| 648 | .type cpu_pxa250_name, #object | ||
| 649 | cpu_pxa250_name: | ||
| 650 | .asciz "XScale-PXA250" | ||
| 651 | .size cpu_pxa250_name, . - cpu_pxa250_name | ||
| 652 | |||
| 653 | .type cpu_pxa210_name, #object | ||
| 654 | cpu_pxa210_name: | ||
| 655 | .asciz "XScale-PXA210" | ||
| 656 | .size cpu_pxa210_name, . - cpu_pxa210_name | ||
| 657 | |||
| 658 | .type cpu_ixp42x_name, #object | ||
| 659 | cpu_ixp42x_name: | ||
| 660 | .asciz "XScale-IXP42x Family" | ||
| 661 | .size cpu_ixp42x_name, . - cpu_ixp42x_name | ||
| 662 | |||
| 663 | .type cpu_ixp43x_name, #object | ||
| 664 | cpu_ixp43x_name: | ||
| 665 | .asciz "XScale-IXP43x Family" | ||
| 666 | .size cpu_ixp43x_name, . - cpu_ixp43x_name | ||
| 667 | |||
| 668 | .type cpu_ixp46x_name, #object | ||
| 669 | cpu_ixp46x_name: | ||
| 670 | .asciz "XScale-IXP46x Family" | ||
| 671 | .size cpu_ixp46x_name, . - cpu_ixp46x_name | ||
| 672 | |||
| 673 | .type cpu_ixp2400_name, #object | ||
| 674 | cpu_ixp2400_name: | ||
| 675 | .asciz "XScale-IXP2400" | ||
| 676 | .size cpu_ixp2400_name, . - cpu_ixp2400_name | ||
| 677 | |||
| 678 | .type cpu_ixp2800_name, #object | ||
| 679 | cpu_ixp2800_name: | ||
| 680 | .asciz "XScale-IXP2800" | ||
| 681 | .size cpu_ixp2800_name, . - cpu_ixp2800_name | ||
| 682 | |||
| 683 | .type cpu_pxa255_name, #object | ||
| 684 | cpu_pxa255_name: | ||
| 685 | .asciz "XScale-PXA255" | ||
| 686 | .size cpu_pxa255_name, . - cpu_pxa255_name | ||
| 687 | |||
| 688 | .type cpu_pxa270_name, #object | ||
| 689 | cpu_pxa270_name: | ||
| 690 | .asciz "XScale-PXA270" | ||
| 691 | .size cpu_pxa270_name, . - cpu_pxa270_name | ||
| 692 | 615 | ||
| 693 | .align | 616 | .align |
| 694 | 617 | ||
| 695 | .section ".proc.info.init", #alloc, #execinstr | 618 | .section ".proc.info.init", #alloc, #execinstr |
| 696 | 619 | ||
| 697 | .type __80200_A0_A1_proc_info,#object | 620 | .macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache |
| 698 | __80200_A0_A1_proc_info: | 621 | .type __\name\()_proc_info,#object |
| 699 | .long 0x69052000 | 622 | __\name\()_proc_info: |
| 700 | .long 0xfffffffe | 623 | .long \cpu_val |
| 701 | .long PMD_TYPE_SECT | \ | 624 | .long \cpu_mask |
| 702 | PMD_SECT_BUFFERABLE | \ | 625 | .long PMD_TYPE_SECT | \ |
| 703 | PMD_SECT_CACHEABLE | \ | ||
| 704 | PMD_SECT_AP_WRITE | \ | ||
| 705 | PMD_SECT_AP_READ | ||
| 706 | .long PMD_TYPE_SECT | \ | ||
| 707 | PMD_SECT_AP_WRITE | \ | ||
| 708 | PMD_SECT_AP_READ | ||
| 709 | b __xscale_setup | ||
| 710 | .long cpu_arch_name | ||
| 711 | .long cpu_elf_name | ||
| 712 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 713 | .long cpu_80200_name | ||
| 714 | .long xscale_processor_functions | ||
| 715 | .long v4wbi_tlb_fns | ||
| 716 | .long xscale_mc_user_fns | ||
| 717 | .long xscale_80200_A0_A1_cache_fns | ||
| 718 | .size __80200_A0_A1_proc_info, . - __80200_A0_A1_proc_info | ||
| 719 | |||
| 720 | .type __80200_proc_info,#object | ||
| 721 | __80200_proc_info: | ||
| 722 | .long 0x69052000 | ||
| 723 | .long 0xfffffff0 | ||
| 724 | .long PMD_TYPE_SECT | \ | ||
| 725 | PMD_SECT_BUFFERABLE | \ | 626 | PMD_SECT_BUFFERABLE | \ |
| 726 | PMD_SECT_CACHEABLE | \ | 627 | PMD_SECT_CACHEABLE | \ |
| 727 | PMD_SECT_AP_WRITE | \ | 628 | PMD_SECT_AP_WRITE | \ |
| 728 | PMD_SECT_AP_READ | 629 | PMD_SECT_AP_READ |
| 729 | .long PMD_TYPE_SECT | \ | 630 | .long PMD_TYPE_SECT | \ |
| 730 | PMD_SECT_AP_WRITE | \ | 631 | PMD_SECT_AP_WRITE | \ |
| 731 | PMD_SECT_AP_READ | 632 | PMD_SECT_AP_READ |
| 732 | b __xscale_setup | 633 | b __xscale_setup |
| 733 | .long cpu_arch_name | 634 | .long cpu_arch_name |
| 734 | .long cpu_elf_name | 635 | .long cpu_elf_name |
| 735 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | 636 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP |
| 736 | .long cpu_80200_name | 637 | .long \cpu_name |
| 737 | .long xscale_processor_functions | 638 | .long xscale_processor_functions |
| 738 | .long v4wbi_tlb_fns | 639 | .long v4wbi_tlb_fns |
| 739 | .long xscale_mc_user_fns | 640 | .long xscale_mc_user_fns |
| 740 | .long xscale_cache_fns | 641 | .ifb \cache |
| 741 | .size __80200_proc_info, . - __80200_proc_info | 642 | .long xscale_cache_fns |
| 742 | 643 | .else | |
| 743 | .type __80219_proc_info,#object | 644 | .long \cache |
| 744 | __80219_proc_info: | 645 | .endif |
| 745 | .long 0x69052e20 | 646 | .size __\name\()_proc_info, . - __\name\()_proc_info |
| 746 | .long 0xffffffe0 | 647 | .endm |
| 747 | .long PMD_TYPE_SECT | \ | 648 | |
| 748 | PMD_SECT_BUFFERABLE | \ | 649 | xscale_proc_info 80200_A0_A1, 0x69052000, 0xfffffffe, cpu_80200_name, \ |
| 749 | PMD_SECT_CACHEABLE | \ | 650 | cache=xscale_80200_A0_A1_cache_fns |
| 750 | PMD_SECT_AP_WRITE | \ | 651 | xscale_proc_info 80200, 0x69052000, 0xfffffff0, cpu_80200_name |
| 751 | PMD_SECT_AP_READ | 652 | xscale_proc_info 80219, 0x69052e20, 0xffffffe0, cpu_80219_name |
| 752 | .long PMD_TYPE_SECT | \ | 653 | xscale_proc_info 8032x, 0x69052420, 0xfffff7e0, cpu_8032x_name |
| 753 | PMD_SECT_AP_WRITE | \ | 654 | xscale_proc_info 8033x, 0x69054010, 0xfffffd30, cpu_8033x_name |
| 754 | PMD_SECT_AP_READ | 655 | xscale_proc_info pxa250, 0x69052100, 0xfffff7f0, cpu_pxa250_name |
| 755 | b __xscale_setup | 656 | xscale_proc_info pxa210, 0x69052120, 0xfffff3f0, cpu_pxa210_name |
| 756 | .long cpu_arch_name | 657 | xscale_proc_info ixp2400, 0x69054190, 0xfffffff0, cpu_ixp2400_name |
| 757 | .long cpu_elf_name | 658 | xscale_proc_info ixp2800, 0x690541a0, 0xfffffff0, cpu_ixp2800_name |
| 758 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | 659 | xscale_proc_info ixp42x, 0x690541c0, 0xffffffc0, cpu_ixp42x_name |
| 759 | .long cpu_80219_name | 660 | xscale_proc_info ixp43x, 0x69054040, 0xfffffff0, cpu_ixp43x_name |
| 760 | .long xscale_processor_functions | 661 | xscale_proc_info ixp46x, 0x69054200, 0xffffff00, cpu_ixp46x_name |
| 761 | .long v4wbi_tlb_fns | 662 | xscale_proc_info pxa255, 0x69052d00, 0xfffffff0, cpu_pxa255_name |
| 762 | .long xscale_mc_user_fns | 663 | xscale_proc_info pxa270, 0x69054110, 0xfffffff0, cpu_pxa270_name |
| 763 | .long xscale_cache_fns | ||
| 764 | .size __80219_proc_info, . - __80219_proc_info | ||
| 765 | |||
| 766 | .type __8032x_proc_info,#object | ||
| 767 | __8032x_proc_info: | ||
| 768 | .long 0x69052420 | ||
| 769 | .long 0xfffff7e0 | ||
| 770 | .long PMD_TYPE_SECT | \ | ||
| 771 | PMD_SECT_BUFFERABLE | \ | ||
| 772 | PMD_SECT_CACHEABLE | \ | ||
| 773 | PMD_SECT_AP_WRITE | \ | ||
| 774 | PMD_SECT_AP_READ | ||
| 775 | .long PMD_TYPE_SECT | \ | ||
| 776 | PMD_SECT_AP_WRITE | \ | ||
| 777 | PMD_SECT_AP_READ | ||
| 778 | b __xscale_setup | ||
| 779 | .long cpu_arch_name | ||
| 780 | .long cpu_elf_name | ||
| 781 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 782 | .long cpu_8032x_name | ||
| 783 | .long xscale_processor_functions | ||
| 784 | .long v4wbi_tlb_fns | ||
| 785 | .long xscale_mc_user_fns | ||
| 786 | .long xscale_cache_fns | ||
| 787 | .size __8032x_proc_info, . - __8032x_proc_info | ||
| 788 | |||
| 789 | .type __8033x_proc_info,#object | ||
| 790 | __8033x_proc_info: | ||
| 791 | .long 0x69054010 | ||
| 792 | .long 0xfffffd30 | ||
| 793 | .long PMD_TYPE_SECT | \ | ||
| 794 | PMD_SECT_BUFFERABLE | \ | ||
| 795 | PMD_SECT_CACHEABLE | \ | ||
| 796 | PMD_SECT_AP_WRITE | \ | ||
| 797 | PMD_SECT_AP_READ | ||
| 798 | .long PMD_TYPE_SECT | \ | ||
| 799 | PMD_SECT_AP_WRITE | \ | ||
| 800 | PMD_SECT_AP_READ | ||
| 801 | b __xscale_setup | ||
| 802 | .long cpu_arch_name | ||
| 803 | .long cpu_elf_name | ||
| 804 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 805 | .long cpu_8033x_name | ||
| 806 | .long xscale_processor_functions | ||
| 807 | .long v4wbi_tlb_fns | ||
| 808 | .long xscale_mc_user_fns | ||
| 809 | .long xscale_cache_fns | ||
| 810 | .size __8033x_proc_info, . - __8033x_proc_info | ||
| 811 | |||
| 812 | .type __pxa250_proc_info,#object | ||
| 813 | __pxa250_proc_info: | ||
| 814 | .long 0x69052100 | ||
| 815 | .long 0xfffff7f0 | ||
| 816 | .long PMD_TYPE_SECT | \ | ||
| 817 | PMD_SECT_BUFFERABLE | \ | ||
| 818 | PMD_SECT_CACHEABLE | \ | ||
| 819 | PMD_SECT_AP_WRITE | \ | ||
| 820 | PMD_SECT_AP_READ | ||
| 821 | .long PMD_TYPE_SECT | \ | ||
| 822 | PMD_SECT_AP_WRITE | \ | ||
| 823 | PMD_SECT_AP_READ | ||
| 824 | b __xscale_setup | ||
| 825 | .long cpu_arch_name | ||
| 826 | .long cpu_elf_name | ||
| 827 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 828 | .long cpu_pxa250_name | ||
| 829 | .long xscale_processor_functions | ||
| 830 | .long v4wbi_tlb_fns | ||
| 831 | .long xscale_mc_user_fns | ||
| 832 | .long xscale_cache_fns | ||
| 833 | .size __pxa250_proc_info, . - __pxa250_proc_info | ||
| 834 | |||
| 835 | .type __pxa210_proc_info,#object | ||
| 836 | __pxa210_proc_info: | ||
| 837 | .long 0x69052120 | ||
| 838 | .long 0xfffff3f0 | ||
| 839 | .long PMD_TYPE_SECT | \ | ||
| 840 | PMD_SECT_BUFFERABLE | \ | ||
| 841 | PMD_SECT_CACHEABLE | \ | ||
| 842 | PMD_SECT_AP_WRITE | \ | ||
| 843 | PMD_SECT_AP_READ | ||
| 844 | .long PMD_TYPE_SECT | \ | ||
| 845 | PMD_SECT_AP_WRITE | \ | ||
| 846 | PMD_SECT_AP_READ | ||
| 847 | b __xscale_setup | ||
| 848 | .long cpu_arch_name | ||
| 849 | .long cpu_elf_name | ||
| 850 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 851 | .long cpu_pxa210_name | ||
| 852 | .long xscale_processor_functions | ||
| 853 | .long v4wbi_tlb_fns | ||
| 854 | .long xscale_mc_user_fns | ||
| 855 | .long xscale_cache_fns | ||
| 856 | .size __pxa210_proc_info, . - __pxa210_proc_info | ||
| 857 | |||
| 858 | .type __ixp2400_proc_info, #object | ||
| 859 | __ixp2400_proc_info: | ||
| 860 | .long 0x69054190 | ||
| 861 | .long 0xfffffff0 | ||
| 862 | .long PMD_TYPE_SECT | \ | ||
| 863 | PMD_SECT_BUFFERABLE | \ | ||
| 864 | PMD_SECT_CACHEABLE | \ | ||
| 865 | PMD_SECT_AP_WRITE | \ | ||
| 866 | PMD_SECT_AP_READ | ||
| 867 | .long PMD_TYPE_SECT | \ | ||
| 868 | PMD_SECT_AP_WRITE | \ | ||
| 869 | PMD_SECT_AP_READ | ||
| 870 | b __xscale_setup | ||
| 871 | .long cpu_arch_name | ||
| 872 | .long cpu_elf_name | ||
| 873 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 874 | .long cpu_ixp2400_name | ||
| 875 | .long xscale_processor_functions | ||
| 876 | .long v4wbi_tlb_fns | ||
| 877 | .long xscale_mc_user_fns | ||
| 878 | .long xscale_cache_fns | ||
| 879 | .size __ixp2400_proc_info, . - __ixp2400_proc_info | ||
| 880 | |||
| 881 | .type __ixp2800_proc_info, #object | ||
| 882 | __ixp2800_proc_info: | ||
| 883 | .long 0x690541a0 | ||
| 884 | .long 0xfffffff0 | ||
| 885 | .long PMD_TYPE_SECT | \ | ||
| 886 | PMD_SECT_BUFFERABLE | \ | ||
| 887 | PMD_SECT_CACHEABLE | \ | ||
| 888 | PMD_SECT_AP_WRITE | \ | ||
| 889 | PMD_SECT_AP_READ | ||
| 890 | .long PMD_TYPE_SECT | \ | ||
| 891 | PMD_SECT_AP_WRITE | \ | ||
| 892 | PMD_SECT_AP_READ | ||
| 893 | b __xscale_setup | ||
| 894 | .long cpu_arch_name | ||
| 895 | .long cpu_elf_name | ||
| 896 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 897 | .long cpu_ixp2800_name | ||
| 898 | .long xscale_processor_functions | ||
| 899 | .long v4wbi_tlb_fns | ||
| 900 | .long xscale_mc_user_fns | ||
| 901 | .long xscale_cache_fns | ||
| 902 | .size __ixp2800_proc_info, . - __ixp2800_proc_info | ||
| 903 | |||
| 904 | .type __ixp42x_proc_info, #object | ||
| 905 | __ixp42x_proc_info: | ||
| 906 | .long 0x690541c0 | ||
| 907 | .long 0xffffffc0 | ||
| 908 | .long PMD_TYPE_SECT | \ | ||
| 909 | PMD_SECT_BUFFERABLE | \ | ||
| 910 | PMD_SECT_CACHEABLE | \ | ||
| 911 | PMD_SECT_AP_WRITE | \ | ||
| 912 | PMD_SECT_AP_READ | ||
| 913 | .long PMD_TYPE_SECT | \ | ||
| 914 | PMD_SECT_AP_WRITE | \ | ||
| 915 | PMD_SECT_AP_READ | ||
| 916 | b __xscale_setup | ||
| 917 | .long cpu_arch_name | ||
| 918 | .long cpu_elf_name | ||
| 919 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 920 | .long cpu_ixp42x_name | ||
| 921 | .long xscale_processor_functions | ||
| 922 | .long v4wbi_tlb_fns | ||
| 923 | .long xscale_mc_user_fns | ||
| 924 | .long xscale_cache_fns | ||
| 925 | .size __ixp42x_proc_info, . - __ixp42x_proc_info | ||
| 926 | |||
| 927 | .type __ixp43x_proc_info, #object | ||
| 928 | __ixp43x_proc_info: | ||
| 929 | .long 0x69054040 | ||
| 930 | .long 0xfffffff0 | ||
| 931 | .long PMD_TYPE_SECT | \ | ||
| 932 | PMD_SECT_BUFFERABLE | \ | ||
| 933 | PMD_SECT_CACHEABLE | \ | ||
| 934 | PMD_SECT_AP_WRITE | \ | ||
| 935 | PMD_SECT_AP_READ | ||
| 936 | .long PMD_TYPE_SECT | \ | ||
| 937 | PMD_SECT_AP_WRITE | \ | ||
| 938 | PMD_SECT_AP_READ | ||
| 939 | b __xscale_setup | ||
| 940 | .long cpu_arch_name | ||
| 941 | .long cpu_elf_name | ||
| 942 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 943 | .long cpu_ixp43x_name | ||
| 944 | .long xscale_processor_functions | ||
| 945 | .long v4wbi_tlb_fns | ||
| 946 | .long xscale_mc_user_fns | ||
| 947 | .long xscale_cache_fns | ||
| 948 | .size __ixp43x_proc_info, . - __ixp43x_proc_info | ||
| 949 | |||
| 950 | .type __ixp46x_proc_info, #object | ||
| 951 | __ixp46x_proc_info: | ||
| 952 | .long 0x69054200 | ||
| 953 | .long 0xffffff00 | ||
| 954 | .long PMD_TYPE_SECT | \ | ||
| 955 | PMD_SECT_BUFFERABLE | \ | ||
| 956 | PMD_SECT_CACHEABLE | \ | ||
| 957 | PMD_SECT_AP_WRITE | \ | ||
| 958 | PMD_SECT_AP_READ | ||
| 959 | .long PMD_TYPE_SECT | \ | ||
| 960 | PMD_SECT_AP_WRITE | \ | ||
| 961 | PMD_SECT_AP_READ | ||
| 962 | b __xscale_setup | ||
| 963 | .long cpu_arch_name | ||
| 964 | .long cpu_elf_name | ||
| 965 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 966 | .long cpu_ixp46x_name | ||
| 967 | .long xscale_processor_functions | ||
| 968 | .long v4wbi_tlb_fns | ||
| 969 | .long xscale_mc_user_fns | ||
| 970 | .long xscale_cache_fns | ||
| 971 | .size __ixp46x_proc_info, . - __ixp46x_proc_info | ||
| 972 | |||
| 973 | .type __pxa255_proc_info,#object | ||
| 974 | __pxa255_proc_info: | ||
| 975 | .long 0x69052d00 | ||
| 976 | .long 0xfffffff0 | ||
| 977 | .long PMD_TYPE_SECT | \ | ||
| 978 | PMD_SECT_BUFFERABLE | \ | ||
| 979 | PMD_SECT_CACHEABLE | \ | ||
| 980 | PMD_SECT_AP_WRITE | \ | ||
| 981 | PMD_SECT_AP_READ | ||
| 982 | .long PMD_TYPE_SECT | \ | ||
| 983 | PMD_SECT_AP_WRITE | \ | ||
| 984 | PMD_SECT_AP_READ | ||
| 985 | b __xscale_setup | ||
| 986 | .long cpu_arch_name | ||
| 987 | .long cpu_elf_name | ||
| 988 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 989 | .long cpu_pxa255_name | ||
| 990 | .long xscale_processor_functions | ||
| 991 | .long v4wbi_tlb_fns | ||
| 992 | .long xscale_mc_user_fns | ||
| 993 | .long xscale_cache_fns | ||
| 994 | .size __pxa255_proc_info, . - __pxa255_proc_info | ||
| 995 | |||
| 996 | .type __pxa270_proc_info,#object | ||
| 997 | __pxa270_proc_info: | ||
| 998 | .long 0x69054110 | ||
| 999 | .long 0xfffffff0 | ||
| 1000 | .long PMD_TYPE_SECT | \ | ||
| 1001 | PMD_SECT_BUFFERABLE | \ | ||
| 1002 | PMD_SECT_CACHEABLE | \ | ||
| 1003 | PMD_SECT_AP_WRITE | \ | ||
| 1004 | PMD_SECT_AP_READ | ||
| 1005 | .long PMD_TYPE_SECT | \ | ||
| 1006 | PMD_SECT_AP_WRITE | \ | ||
| 1007 | PMD_SECT_AP_READ | ||
| 1008 | b __xscale_setup | ||
| 1009 | .long cpu_arch_name | ||
| 1010 | .long cpu_elf_name | ||
| 1011 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
| 1012 | .long cpu_pxa270_name | ||
| 1013 | .long xscale_processor_functions | ||
| 1014 | .long v4wbi_tlb_fns | ||
| 1015 | .long xscale_mc_user_fns | ||
| 1016 | .long xscale_cache_fns | ||
| 1017 | .size __pxa270_proc_info, . - __pxa270_proc_info | ||
| 1018 | |||
diff --git a/arch/arm/mm/tlb-fa.S b/arch/arm/mm/tlb-fa.S index 9694f1f6f485..7a2e56c5d89a 100644 --- a/arch/arm/mm/tlb-fa.S +++ b/arch/arm/mm/tlb-fa.S | |||
| @@ -67,9 +67,5 @@ ENTRY(fa_flush_kern_tlb_range) | |||
| 67 | 67 | ||
| 68 | __INITDATA | 68 | __INITDATA |
| 69 | 69 | ||
| 70 | .type fa_tlb_fns, #object | 70 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 71 | ENTRY(fa_tlb_fns) | 71 | define_tlb_functions fa, fa_tlb_flags |
| 72 | .long fa_flush_user_tlb_range | ||
| 73 | .long fa_flush_kern_tlb_range | ||
| 74 | .long fa_tlb_flags | ||
| 75 | .size fa_tlb_fns, . - fa_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v3.S b/arch/arm/mm/tlb-v3.S index c10786ec8e0a..d253995ec4ca 100644 --- a/arch/arm/mm/tlb-v3.S +++ b/arch/arm/mm/tlb-v3.S | |||
| @@ -44,9 +44,5 @@ ENTRY(v3_flush_kern_tlb_range) | |||
| 44 | 44 | ||
| 45 | __INITDATA | 45 | __INITDATA |
| 46 | 46 | ||
| 47 | .type v3_tlb_fns, #object | 47 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 48 | ENTRY(v3_tlb_fns) | 48 | define_tlb_functions v3, v3_tlb_flags |
| 49 | .long v3_flush_user_tlb_range | ||
| 50 | .long v3_flush_kern_tlb_range | ||
| 51 | .long v3_tlb_flags | ||
| 52 | .size v3_tlb_fns, . - v3_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v4.S b/arch/arm/mm/tlb-v4.S index d6c94457c2b9..17a025ade573 100644 --- a/arch/arm/mm/tlb-v4.S +++ b/arch/arm/mm/tlb-v4.S | |||
| @@ -57,9 +57,5 @@ ENTRY(v4_flush_user_tlb_range) | |||
| 57 | 57 | ||
| 58 | __INITDATA | 58 | __INITDATA |
| 59 | 59 | ||
| 60 | .type v4_tlb_fns, #object | 60 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 61 | ENTRY(v4_tlb_fns) | 61 | define_tlb_functions v4, v4_tlb_flags |
| 62 | .long v4_flush_user_tlb_range | ||
| 63 | .long v4_flush_kern_tlb_range | ||
| 64 | .long v4_tlb_flags | ||
| 65 | .size v4_tlb_fns, . - v4_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v4wb.S b/arch/arm/mm/tlb-v4wb.S index cb829ca7845d..c04598fa4d4a 100644 --- a/arch/arm/mm/tlb-v4wb.S +++ b/arch/arm/mm/tlb-v4wb.S | |||
| @@ -69,9 +69,5 @@ ENTRY(v4wb_flush_kern_tlb_range) | |||
| 69 | 69 | ||
| 70 | __INITDATA | 70 | __INITDATA |
| 71 | 71 | ||
| 72 | .type v4wb_tlb_fns, #object | 72 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 73 | ENTRY(v4wb_tlb_fns) | 73 | define_tlb_functions v4wb, v4wb_tlb_flags |
| 74 | .long v4wb_flush_user_tlb_range | ||
| 75 | .long v4wb_flush_kern_tlb_range | ||
| 76 | .long v4wb_tlb_flags | ||
| 77 | .size v4wb_tlb_fns, . - v4wb_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v4wbi.S b/arch/arm/mm/tlb-v4wbi.S index 60cfc4a25dd5..1f6062b6c1c1 100644 --- a/arch/arm/mm/tlb-v4wbi.S +++ b/arch/arm/mm/tlb-v4wbi.S | |||
| @@ -60,9 +60,5 @@ ENTRY(v4wbi_flush_kern_tlb_range) | |||
| 60 | 60 | ||
| 61 | __INITDATA | 61 | __INITDATA |
| 62 | 62 | ||
| 63 | .type v4wbi_tlb_fns, #object | 63 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 64 | ENTRY(v4wbi_tlb_fns) | 64 | define_tlb_functions v4wbi, v4wbi_tlb_flags |
| 65 | .long v4wbi_flush_user_tlb_range | ||
| 66 | .long v4wbi_flush_kern_tlb_range | ||
| 67 | .long v4wbi_tlb_flags | ||
| 68 | .size v4wbi_tlb_fns, . - v4wbi_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S index 73d7d89b04c4..a685944735c9 100644 --- a/arch/arm/mm/tlb-v6.S +++ b/arch/arm/mm/tlb-v6.S | |||
| @@ -90,9 +90,5 @@ ENTRY(v6wbi_flush_kern_tlb_range) | |||
| 90 | 90 | ||
| 91 | __INIT | 91 | __INIT |
| 92 | 92 | ||
| 93 | .type v6wbi_tlb_fns, #object | 93 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 94 | ENTRY(v6wbi_tlb_fns) | 94 | define_tlb_functions v6wbi, v6wbi_tlb_flags |
| 95 | .long v6wbi_flush_user_tlb_range | ||
| 96 | .long v6wbi_flush_kern_tlb_range | ||
| 97 | .long v6wbi_tlb_flags | ||
| 98 | .size v6wbi_tlb_fns, . - v6wbi_tlb_fns | ||
diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S index 53cd5b454673..ebd4290ce1e7 100644 --- a/arch/arm/mm/tlb-v7.S +++ b/arch/arm/mm/tlb-v7.S | |||
| @@ -85,10 +85,5 @@ ENDPROC(v7wbi_flush_kern_tlb_range) | |||
| 85 | 85 | ||
| 86 | __INIT | 86 | __INIT |
| 87 | 87 | ||
| 88 | .type v7wbi_tlb_fns, #object | 88 | /* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ |
| 89 | ENTRY(v7wbi_tlb_fns) | 89 | define_tlb_functions v7wbi, v7wbi_tlb_flags_up, flags_smp=v7wbi_tlb_flags_smp |
| 90 | .long v7wbi_flush_user_tlb_range | ||
| 91 | .long v7wbi_flush_kern_tlb_range | ||
| 92 | ALT_SMP(.long v7wbi_tlb_flags_smp) | ||
| 93 | ALT_UP(.long v7wbi_tlb_flags_up) | ||
| 94 | .size v7wbi_tlb_fns, . - v7wbi_tlb_fns | ||
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index f25e7ec89416..650d90be0f9f 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
| @@ -582,7 +582,6 @@ static int __init vfp_init(void) | |||
| 582 | elf_hwcap |= HWCAP_VFPv3D16; | 582 | elf_hwcap |= HWCAP_VFPv3D16; |
| 583 | } | 583 | } |
| 584 | #endif | 584 | #endif |
| 585 | #ifdef CONFIG_NEON | ||
| 586 | /* | 585 | /* |
| 587 | * Check for the presence of the Advanced SIMD | 586 | * Check for the presence of the Advanced SIMD |
| 588 | * load/store instructions, integer and single | 587 | * load/store instructions, integer and single |
| @@ -590,10 +589,13 @@ static int __init vfp_init(void) | |||
| 590 | * for NEON if the hardware has the MVFR registers. | 589 | * for NEON if the hardware has the MVFR registers. |
| 591 | */ | 590 | */ |
| 592 | if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) { | 591 | if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) { |
| 592 | #ifdef CONFIG_NEON | ||
| 593 | if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100) | 593 | if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100) |
| 594 | elf_hwcap |= HWCAP_NEON; | 594 | elf_hwcap |= HWCAP_NEON; |
| 595 | } | ||
| 596 | #endif | 595 | #endif |
| 596 | if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000) | ||
| 597 | elf_hwcap |= HWCAP_VFPv4; | ||
| 598 | } | ||
| 597 | } | 599 | } |
| 598 | return 0; | 600 | return 0; |
| 599 | } | 601 | } |
