mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-16 06:31:46 +00:00
Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6-wd into devel-stable
This commit is contained in:
commit
cb5fd904f0
@ -293,4 +293,13 @@
|
||||
.macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f
|
||||
usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort
|
||||
.endm
|
||||
|
||||
/* Utility macro for declaring string literals */
|
||||
.macro string name:req, string
|
||||
.type \name , #object
|
||||
\name:
|
||||
.asciz "\string"
|
||||
.size \name , . - \name
|
||||
.endm
|
||||
|
||||
#endif /* __ASM_ASSEMBLER_H__ */
|
||||
|
@ -4,22 +4,26 @@
|
||||
/*
|
||||
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
|
||||
*/
|
||||
#define HWCAP_SWP 1
|
||||
#define HWCAP_HALF 2
|
||||
#define HWCAP_THUMB 4
|
||||
#define HWCAP_26BIT 8 /* Play it safe */
|
||||
#define HWCAP_FAST_MULT 16
|
||||
#define HWCAP_FPA 32
|
||||
#define HWCAP_VFP 64
|
||||
#define HWCAP_EDSP 128
|
||||
#define HWCAP_JAVA 256
|
||||
#define HWCAP_IWMMXT 512
|
||||
#define HWCAP_CRUNCH 1024
|
||||
#define HWCAP_THUMBEE 2048
|
||||
#define HWCAP_NEON 4096
|
||||
#define HWCAP_VFPv3 8192
|
||||
#define HWCAP_VFPv3D16 16384
|
||||
#define HWCAP_TLS 32768
|
||||
#define HWCAP_SWP (1 << 0)
|
||||
#define HWCAP_HALF (1 << 1)
|
||||
#define HWCAP_THUMB (1 << 2)
|
||||
#define HWCAP_26BIT (1 << 3) /* Play it safe */
|
||||
#define HWCAP_FAST_MULT (1 << 4)
|
||||
#define HWCAP_FPA (1 << 5)
|
||||
#define HWCAP_VFP (1 << 6)
|
||||
#define HWCAP_EDSP (1 << 7)
|
||||
#define HWCAP_JAVA (1 << 8)
|
||||
#define HWCAP_IWMMXT (1 << 9)
|
||||
#define HWCAP_CRUNCH (1 << 10)
|
||||
#define HWCAP_THUMBEE (1 << 11)
|
||||
#define HWCAP_NEON (1 << 12)
|
||||
#define HWCAP_VFPv3 (1 << 13)
|
||||
#define HWCAP_VFPv3D16 (1 << 14)
|
||||
#define HWCAP_TLS (1 << 15)
|
||||
#define HWCAP_VFPv4 (1 << 16)
|
||||
#define HWCAP_IDIVA (1 << 17)
|
||||
#define HWCAP_IDIVT (1 << 18)
|
||||
#define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT)
|
||||
|
||||
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
|
||||
/*
|
||||
|
@ -24,6 +24,8 @@ enum arm_perf_pmu_ids {
|
||||
ARM_PERF_PMU_ID_V6MP,
|
||||
ARM_PERF_PMU_ID_CA8,
|
||||
ARM_PERF_PMU_ID_CA9,
|
||||
ARM_PERF_PMU_ID_CA5,
|
||||
ARM_PERF_PMU_ID_CA15,
|
||||
ARM_NUM_PMU_IDS,
|
||||
};
|
||||
|
||||
|
@ -660,6 +660,12 @@ init_hw_perf_events(void)
|
||||
case 0xC090: /* Cortex-A9 */
|
||||
armpmu = armv7_a9_pmu_init();
|
||||
break;
|
||||
case 0xC050: /* Cortex-A5 */
|
||||
armpmu = armv7_a5_pmu_init();
|
||||
break;
|
||||
case 0xC0F0: /* Cortex-A15 */
|
||||
armpmu = armv7_a15_pmu_init();
|
||||
break;
|
||||
}
|
||||
/* Intel CPUs [xscale]. */
|
||||
} else if (0x69 == implementor) {
|
||||
|
@ -17,17 +17,23 @@
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CPU_V7
|
||||
/* Common ARMv7 event types */
|
||||
/*
|
||||
* Common ARMv7 event types
|
||||
*
|
||||
* Note: An implementation may not be able to count all of these events
|
||||
* but the encodings are considered to be `reserved' in the case that
|
||||
* they are not available.
|
||||
*/
|
||||
enum armv7_perf_types {
|
||||
ARMV7_PERFCTR_PMNC_SW_INCR = 0x00,
|
||||
ARMV7_PERFCTR_IFETCH_MISS = 0x01,
|
||||
ARMV7_PERFCTR_ITLB_MISS = 0x02,
|
||||
ARMV7_PERFCTR_DCACHE_REFILL = 0x03,
|
||||
ARMV7_PERFCTR_DCACHE_ACCESS = 0x04,
|
||||
ARMV7_PERFCTR_DCACHE_REFILL = 0x03, /* L1 */
|
||||
ARMV7_PERFCTR_DCACHE_ACCESS = 0x04, /* L1 */
|
||||
ARMV7_PERFCTR_DTLB_REFILL = 0x05,
|
||||
ARMV7_PERFCTR_DREAD = 0x06,
|
||||
ARMV7_PERFCTR_DWRITE = 0x07,
|
||||
|
||||
ARMV7_PERFCTR_INSTR_EXECUTED = 0x08,
|
||||
ARMV7_PERFCTR_EXC_TAKEN = 0x09,
|
||||
ARMV7_PERFCTR_EXC_EXECUTED = 0x0A,
|
||||
ARMV7_PERFCTR_CID_WRITE = 0x0B,
|
||||
@ -39,21 +45,30 @@ enum armv7_perf_types {
|
||||
*/
|
||||
ARMV7_PERFCTR_PC_WRITE = 0x0C,
|
||||
ARMV7_PERFCTR_PC_IMM_BRANCH = 0x0D,
|
||||
ARMV7_PERFCTR_PC_PROC_RETURN = 0x0E,
|
||||
ARMV7_PERFCTR_UNALIGNED_ACCESS = 0x0F,
|
||||
|
||||
/* These events are defined by the PMUv2 supplement (ARM DDI 0457A). */
|
||||
ARMV7_PERFCTR_PC_BRANCH_MIS_PRED = 0x10,
|
||||
ARMV7_PERFCTR_CLOCK_CYCLES = 0x11,
|
||||
|
||||
ARMV7_PERFCTR_PC_BRANCH_MIS_USED = 0x12,
|
||||
ARMV7_PERFCTR_PC_BRANCH_PRED = 0x12,
|
||||
ARMV7_PERFCTR_MEM_ACCESS = 0x13,
|
||||
ARMV7_PERFCTR_L1_ICACHE_ACCESS = 0x14,
|
||||
ARMV7_PERFCTR_L1_DCACHE_WB = 0x15,
|
||||
ARMV7_PERFCTR_L2_DCACHE_ACCESS = 0x16,
|
||||
ARMV7_PERFCTR_L2_DCACHE_REFILL = 0x17,
|
||||
ARMV7_PERFCTR_L2_DCACHE_WB = 0x18,
|
||||
ARMV7_PERFCTR_BUS_ACCESS = 0x19,
|
||||
ARMV7_PERFCTR_MEMORY_ERROR = 0x1A,
|
||||
ARMV7_PERFCTR_INSTR_SPEC = 0x1B,
|
||||
ARMV7_PERFCTR_TTBR_WRITE = 0x1C,
|
||||
ARMV7_PERFCTR_BUS_CYCLES = 0x1D,
|
||||
|
||||
ARMV7_PERFCTR_CPU_CYCLES = 0xFF
|
||||
};
|
||||
|
||||
/* ARMv7 Cortex-A8 specific event types */
|
||||
enum armv7_a8_perf_types {
|
||||
ARMV7_PERFCTR_INSTR_EXECUTED = 0x08,
|
||||
|
||||
ARMV7_PERFCTR_PC_PROC_RETURN = 0x0E,
|
||||
|
||||
ARMV7_PERFCTR_WRITE_BUFFER_FULL = 0x40,
|
||||
ARMV7_PERFCTR_L2_STORE_MERGED = 0x41,
|
||||
ARMV7_PERFCTR_L2_STORE_BUFF = 0x42,
|
||||
@ -138,6 +153,39 @@ enum armv7_a9_perf_types {
|
||||
ARMV7_PERFCTR_PLE_RQST_PROG = 0xA5
|
||||
};
|
||||
|
||||
/* ARMv7 Cortex-A5 specific event types */
|
||||
enum armv7_a5_perf_types {
|
||||
ARMV7_PERFCTR_IRQ_TAKEN = 0x86,
|
||||
ARMV7_PERFCTR_FIQ_TAKEN = 0x87,
|
||||
|
||||
ARMV7_PERFCTR_EXT_MEM_RQST = 0xc0,
|
||||
ARMV7_PERFCTR_NC_EXT_MEM_RQST = 0xc1,
|
||||
ARMV7_PERFCTR_PREFETCH_LINEFILL = 0xc2,
|
||||
ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP = 0xc3,
|
||||
ARMV7_PERFCTR_ENTER_READ_ALLOC = 0xc4,
|
||||
ARMV7_PERFCTR_READ_ALLOC = 0xc5,
|
||||
|
||||
ARMV7_PERFCTR_STALL_SB_FULL = 0xc9,
|
||||
};
|
||||
|
||||
/* ARMv7 Cortex-A15 specific event types */
|
||||
enum armv7_a15_perf_types {
|
||||
ARMV7_PERFCTR_L1_DCACHE_READ_ACCESS = 0x40,
|
||||
ARMV7_PERFCTR_L1_DCACHE_WRITE_ACCESS = 0x41,
|
||||
ARMV7_PERFCTR_L1_DCACHE_READ_REFILL = 0x42,
|
||||
ARMV7_PERFCTR_L1_DCACHE_WRITE_REFILL = 0x43,
|
||||
|
||||
ARMV7_PERFCTR_L1_DTLB_READ_REFILL = 0x4C,
|
||||
ARMV7_PERFCTR_L1_DTLB_WRITE_REFILL = 0x4D,
|
||||
|
||||
ARMV7_PERFCTR_L2_DCACHE_READ_ACCESS = 0x50,
|
||||
ARMV7_PERFCTR_L2_DCACHE_WRITE_ACCESS = 0x51,
|
||||
ARMV7_PERFCTR_L2_DCACHE_READ_REFILL = 0x52,
|
||||
ARMV7_PERFCTR_L2_DCACHE_WRITE_REFILL = 0x53,
|
||||
|
||||
ARMV7_PERFCTR_SPEC_PC_WRITE = 0x76,
|
||||
};
|
||||
|
||||
/*
|
||||
* Cortex-A8 HW events mapping
|
||||
*
|
||||
@ -207,11 +255,6 @@ static const unsigned armv7_a8_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||
},
|
||||
},
|
||||
[C(DTLB)] = {
|
||||
/*
|
||||
* Only ITLB misses and DTLB refills are supported.
|
||||
* If users want the DTLB refills misses a raw counter
|
||||
* must be used.
|
||||
*/
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL,
|
||||
@ -323,11 +366,6 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||
},
|
||||
},
|
||||
[C(DTLB)] = {
|
||||
/*
|
||||
* Only ITLB misses and DTLB refills are supported.
|
||||
* If users want the DTLB refills misses a raw counter
|
||||
* must be used.
|
||||
*/
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL,
|
||||
@ -373,6 +411,242 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Cortex-A5 HW events mapping
|
||||
*/
|
||||
static const unsigned armv7_a5_perf_map[PERF_COUNT_HW_MAX] = {
|
||||
[PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES,
|
||||
[PERF_COUNT_HW_INSTRUCTIONS] = ARMV7_PERFCTR_INSTR_EXECUTED,
|
||||
[PERF_COUNT_HW_CACHE_REFERENCES] = HW_OP_UNSUPPORTED,
|
||||
[PERF_COUNT_HW_CACHE_MISSES] = HW_OP_UNSUPPORTED,
|
||||
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_PC_WRITE,
|
||||
[PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
[PERF_COUNT_HW_BUS_CYCLES] = HW_OP_UNSUPPORTED,
|
||||
};
|
||||
|
||||
static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||
[PERF_COUNT_HW_CACHE_OP_MAX]
|
||||
[PERF_COUNT_HW_CACHE_RESULT_MAX] = {
|
||||
[C(L1D)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_DCACHE_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_DCACHE_REFILL,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_DCACHE_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_DCACHE_REFILL,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_PREFETCH_LINEFILL,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP,
|
||||
},
|
||||
},
|
||||
[C(L1I)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS,
|
||||
},
|
||||
/*
|
||||
* The prefetch counters don't differentiate between the I
|
||||
* side and the D side.
|
||||
*/
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_PREFETCH_LINEFILL,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PREFETCH_LINEFILL_DROP,
|
||||
},
|
||||
},
|
||||
[C(LL)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(DTLB)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_DTLB_REFILL,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(ITLB)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(BPU)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Cortex-A15 HW events mapping
|
||||
*/
|
||||
static const unsigned armv7_a15_perf_map[PERF_COUNT_HW_MAX] = {
|
||||
[PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES,
|
||||
[PERF_COUNT_HW_INSTRUCTIONS] = ARMV7_PERFCTR_INSTR_EXECUTED,
|
||||
[PERF_COUNT_HW_CACHE_REFERENCES] = HW_OP_UNSUPPORTED,
|
||||
[PERF_COUNT_HW_CACHE_MISSES] = HW_OP_UNSUPPORTED,
|
||||
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_SPEC_PC_WRITE,
|
||||
[PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
[PERF_COUNT_HW_BUS_CYCLES] = ARMV7_PERFCTR_BUS_CYCLES,
|
||||
};
|
||||
|
||||
static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||
[PERF_COUNT_HW_CACHE_OP_MAX]
|
||||
[PERF_COUNT_HW_CACHE_RESULT_MAX] = {
|
||||
[C(L1D)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_L1_DCACHE_READ_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L1_DCACHE_READ_REFILL,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_L1_DCACHE_WRITE_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L1_DCACHE_WRITE_REFILL,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(L1I)] = {
|
||||
/*
|
||||
* Not all performance counters differentiate between read
|
||||
* and write accesses/misses so we're not always strictly
|
||||
* correct, but it's the best we can do. Writes and reads get
|
||||
* combined in these cases.
|
||||
*/
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_IFETCH_MISS,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(LL)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_L2_DCACHE_READ_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L2_DCACHE_READ_REFILL,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)]
|
||||
= ARMV7_PERFCTR_L2_DCACHE_WRITE_ACCESS,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L2_DCACHE_WRITE_REFILL,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(DTLB)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L1_DTLB_READ_REFILL,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_L1_DTLB_WRITE_REFILL,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(ITLB)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = ARMV7_PERFCTR_ITLB_MISS,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
[C(BPU)] = {
|
||||
[C(OP_READ)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
},
|
||||
[C(OP_WRITE)] = {
|
||||
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_PC_BRANCH_PRED,
|
||||
[C(RESULT_MISS)]
|
||||
= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
|
||||
},
|
||||
[C(OP_PREFETCH)] = {
|
||||
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
||||
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Perf Events counters
|
||||
*/
|
||||
@ -905,6 +1179,26 @@ static const struct arm_pmu *__init armv7_a9_pmu_init(void)
|
||||
armv7pmu.num_events = armv7_read_num_pmnc_events();
|
||||
return &armv7pmu;
|
||||
}
|
||||
|
||||
static const struct arm_pmu *__init armv7_a5_pmu_init(void)
|
||||
{
|
||||
armv7pmu.id = ARM_PERF_PMU_ID_CA5;
|
||||
armv7pmu.name = "ARMv7 Cortex-A5";
|
||||
armv7pmu.cache_map = &armv7_a5_perf_cache_map;
|
||||
armv7pmu.event_map = &armv7_a5_perf_map;
|
||||
armv7pmu.num_events = armv7_read_num_pmnc_events();
|
||||
return &armv7pmu;
|
||||
}
|
||||
|
||||
static const struct arm_pmu *__init armv7_a15_pmu_init(void)
|
||||
{
|
||||
armv7pmu.id = ARM_PERF_PMU_ID_CA15;
|
||||
armv7pmu.name = "ARMv7 Cortex-A15";
|
||||
armv7pmu.cache_map = &armv7_a15_perf_cache_map;
|
||||
armv7pmu.event_map = &armv7_a15_perf_map;
|
||||
armv7pmu.num_events = armv7_read_num_pmnc_events();
|
||||
return &armv7pmu;
|
||||
}
|
||||
#else
|
||||
static const struct arm_pmu *__init armv7_a8_pmu_init(void)
|
||||
{
|
||||
@ -915,4 +1209,14 @@ static const struct arm_pmu *__init armv7_a9_pmu_init(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const struct arm_pmu *__init armv7_a5_pmu_init(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const struct arm_pmu *__init armv7_a15_pmu_init(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif /* CONFIG_CPU_V7 */
|
||||
|
@ -977,6 +977,10 @@ static const char *hwcap_str[] = {
|
||||
"neon",
|
||||
"vfpv3",
|
||||
"vfpv3d16",
|
||||
"tls",
|
||||
"vfpv4",
|
||||
"idiva",
|
||||
"idivt",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -242,16 +242,5 @@ ENDPROC(fa_dma_unmap_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type fa_cache_fns, #object
|
||||
ENTRY(fa_cache_fns)
|
||||
.long fa_flush_icache_all
|
||||
.long fa_flush_kern_cache_all
|
||||
.long fa_flush_user_cache_all
|
||||
.long fa_flush_user_cache_range
|
||||
.long fa_coherent_kern_range
|
||||
.long fa_coherent_user_range
|
||||
.long fa_flush_kern_dcache_area
|
||||
.long fa_dma_map_area
|
||||
.long fa_dma_unmap_area
|
||||
.long fa_dma_flush_range
|
||||
.size fa_cache_fns, . - fa_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions fa
|
||||
|
@ -129,16 +129,5 @@ ENDPROC(v3_dma_map_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v3_cache_fns, #object
|
||||
ENTRY(v3_cache_fns)
|
||||
.long v3_flush_icache_all
|
||||
.long v3_flush_kern_cache_all
|
||||
.long v3_flush_user_cache_all
|
||||
.long v3_flush_user_cache_range
|
||||
.long v3_coherent_kern_range
|
||||
.long v3_coherent_user_range
|
||||
.long v3_flush_kern_dcache_area
|
||||
.long v3_dma_map_area
|
||||
.long v3_dma_unmap_area
|
||||
.long v3_dma_flush_range
|
||||
.size v3_cache_fns, . - v3_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v3
|
||||
|
@ -141,16 +141,5 @@ ENDPROC(v4_dma_map_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4_cache_fns, #object
|
||||
ENTRY(v4_cache_fns)
|
||||
.long v4_flush_icache_all
|
||||
.long v4_flush_kern_cache_all
|
||||
.long v4_flush_user_cache_all
|
||||
.long v4_flush_user_cache_range
|
||||
.long v4_coherent_kern_range
|
||||
.long v4_coherent_user_range
|
||||
.long v4_flush_kern_dcache_area
|
||||
.long v4_dma_map_area
|
||||
.long v4_dma_unmap_area
|
||||
.long v4_dma_flush_range
|
||||
.size v4_cache_fns, . - v4_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v4
|
||||
|
@ -253,16 +253,5 @@ ENDPROC(v4wb_dma_unmap_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4wb_cache_fns, #object
|
||||
ENTRY(v4wb_cache_fns)
|
||||
.long v4wb_flush_icache_all
|
||||
.long v4wb_flush_kern_cache_all
|
||||
.long v4wb_flush_user_cache_all
|
||||
.long v4wb_flush_user_cache_range
|
||||
.long v4wb_coherent_kern_range
|
||||
.long v4wb_coherent_user_range
|
||||
.long v4wb_flush_kern_dcache_area
|
||||
.long v4wb_dma_map_area
|
||||
.long v4wb_dma_unmap_area
|
||||
.long v4wb_dma_flush_range
|
||||
.size v4wb_cache_fns, . - v4wb_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v4wb
|
||||
|
@ -197,16 +197,5 @@ ENDPROC(v4wt_dma_map_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4wt_cache_fns, #object
|
||||
ENTRY(v4wt_cache_fns)
|
||||
.long v4wt_flush_icache_all
|
||||
.long v4wt_flush_kern_cache_all
|
||||
.long v4wt_flush_user_cache_all
|
||||
.long v4wt_flush_user_cache_range
|
||||
.long v4wt_coherent_kern_range
|
||||
.long v4wt_coherent_user_range
|
||||
.long v4wt_flush_kern_dcache_area
|
||||
.long v4wt_dma_map_area
|
||||
.long v4wt_dma_unmap_area
|
||||
.long v4wt_dma_flush_range
|
||||
.size v4wt_cache_fns, . - v4wt_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v4wt
|
||||
|
@ -330,16 +330,5 @@ ENDPROC(v6_dma_unmap_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v6_cache_fns, #object
|
||||
ENTRY(v6_cache_fns)
|
||||
.long v6_flush_icache_all
|
||||
.long v6_flush_kern_cache_all
|
||||
.long v6_flush_user_cache_all
|
||||
.long v6_flush_user_cache_range
|
||||
.long v6_coherent_kern_range
|
||||
.long v6_coherent_user_range
|
||||
.long v6_flush_kern_dcache_area
|
||||
.long v6_dma_map_area
|
||||
.long v6_dma_unmap_area
|
||||
.long v6_dma_flush_range
|
||||
.size v6_cache_fns, . - v6_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v6
|
||||
|
@ -325,16 +325,5 @@ ENDPROC(v7_dma_unmap_area)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v7_cache_fns, #object
|
||||
ENTRY(v7_cache_fns)
|
||||
.long v7_flush_icache_all
|
||||
.long v7_flush_kern_cache_all
|
||||
.long v7_flush_user_cache_all
|
||||
.long v7_flush_user_cache_range
|
||||
.long v7_coherent_kern_range
|
||||
.long v7_coherent_user_range
|
||||
.long v7_flush_kern_dcache_area
|
||||
.long v7_dma_map_area
|
||||
.long v7_dma_unmap_area
|
||||
.long v7_dma_flush_range
|
||||
.size v7_cache_fns, . - v7_cache_fns
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions v7
|
||||
|
@ -364,17 +364,8 @@ ENTRY(arm1020_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm1020_dma_unmap_area)
|
||||
|
||||
ENTRY(arm1020_cache_fns)
|
||||
.long arm1020_flush_icache_all
|
||||
.long arm1020_flush_kern_cache_all
|
||||
.long arm1020_flush_user_cache_all
|
||||
.long arm1020_flush_user_cache_range
|
||||
.long arm1020_coherent_kern_range
|
||||
.long arm1020_coherent_user_range
|
||||
.long arm1020_flush_kern_dcache_area
|
||||
.long arm1020_dma_map_area
|
||||
.long arm1020_dma_unmap_area
|
||||
.long arm1020_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm1020
|
||||
|
||||
.align 5
|
||||
ENTRY(cpu_arm1020_dcache_clean_area)
|
||||
@ -477,38 +468,14 @@ arm1020_crval:
|
||||
crval clear=0x0000593f, mmuset=0x00003935, ucset=0x00001930
|
||||
|
||||
__INITDATA
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm1020, dabort=v4t_early_abort, pabort=legacy_pabort
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm1020_processor_functions, #object
|
||||
arm1020_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm1020_proc_init
|
||||
.word cpu_arm1020_proc_fin
|
||||
.word cpu_arm1020_reset
|
||||
.word cpu_arm1020_do_idle
|
||||
.word cpu_arm1020_dcache_clean_area
|
||||
.word cpu_arm1020_switch_mm
|
||||
.word cpu_arm1020_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm1020_processor_functions, . - arm1020_processor_functions
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
string cpu_arch_name, "armv5t"
|
||||
string cpu_elf_name, "v5"
|
||||
|
||||
.type cpu_arm1020_name, #object
|
||||
cpu_arm1020_name:
|
||||
|
@ -350,17 +350,8 @@ ENTRY(arm1020e_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm1020e_dma_unmap_area)
|
||||
|
||||
ENTRY(arm1020e_cache_fns)
|
||||
.long arm1020e_flush_icache_all
|
||||
.long arm1020e_flush_kern_cache_all
|
||||
.long arm1020e_flush_user_cache_all
|
||||
.long arm1020e_flush_user_cache_range
|
||||
.long arm1020e_coherent_kern_range
|
||||
.long arm1020e_coherent_user_range
|
||||
.long arm1020e_flush_kern_dcache_area
|
||||
.long arm1020e_dma_map_area
|
||||
.long arm1020e_dma_unmap_area
|
||||
.long arm1020e_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm1020e
|
||||
|
||||
.align 5
|
||||
ENTRY(cpu_arm1020e_dcache_clean_area)
|
||||
@ -458,43 +449,14 @@ arm1020e_crval:
|
||||
crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm1020e_processor_functions, #object
|
||||
arm1020e_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm1020e_proc_init
|
||||
.word cpu_arm1020e_proc_fin
|
||||
.word cpu_arm1020e_reset
|
||||
.word cpu_arm1020e_do_idle
|
||||
.word cpu_arm1020e_dcache_clean_area
|
||||
.word cpu_arm1020e_switch_mm
|
||||
.word cpu_arm1020e_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm1020e_processor_functions, . - arm1020e_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm1020e, dabort=v4t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm1020e_name, #object
|
||||
cpu_arm1020e_name:
|
||||
.asciz "ARM1020E"
|
||||
.size cpu_arm1020e_name, . - cpu_arm1020e_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_arm1020e_name, "ARM1020E"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -339,17 +339,8 @@ ENTRY(arm1022_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm1022_dma_unmap_area)
|
||||
|
||||
ENTRY(arm1022_cache_fns)
|
||||
.long arm1022_flush_icache_all
|
||||
.long arm1022_flush_kern_cache_all
|
||||
.long arm1022_flush_user_cache_all
|
||||
.long arm1022_flush_user_cache_range
|
||||
.long arm1022_coherent_kern_range
|
||||
.long arm1022_coherent_user_range
|
||||
.long arm1022_flush_kern_dcache_area
|
||||
.long arm1022_dma_map_area
|
||||
.long arm1022_dma_unmap_area
|
||||
.long arm1022_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm1022
|
||||
|
||||
.align 5
|
||||
ENTRY(cpu_arm1022_dcache_clean_area)
|
||||
@ -441,43 +432,14 @@ arm1022_crval:
|
||||
crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm1022_processor_functions, #object
|
||||
arm1022_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm1022_proc_init
|
||||
.word cpu_arm1022_proc_fin
|
||||
.word cpu_arm1022_reset
|
||||
.word cpu_arm1022_do_idle
|
||||
.word cpu_arm1022_dcache_clean_area
|
||||
.word cpu_arm1022_switch_mm
|
||||
.word cpu_arm1022_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm1022_processor_functions, . - arm1022_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm1022, dabort=v4t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm1022_name, #object
|
||||
cpu_arm1022_name:
|
||||
.asciz "ARM1022"
|
||||
.size cpu_arm1022_name, . - cpu_arm1022_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_arm1022_name, "ARM1022"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -333,17 +333,8 @@ ENTRY(arm1026_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm1026_dma_unmap_area)
|
||||
|
||||
ENTRY(arm1026_cache_fns)
|
||||
.long arm1026_flush_icache_all
|
||||
.long arm1026_flush_kern_cache_all
|
||||
.long arm1026_flush_user_cache_all
|
||||
.long arm1026_flush_user_cache_range
|
||||
.long arm1026_coherent_kern_range
|
||||
.long arm1026_coherent_user_range
|
||||
.long arm1026_flush_kern_dcache_area
|
||||
.long arm1026_dma_map_area
|
||||
.long arm1026_dma_unmap_area
|
||||
.long arm1026_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm1026
|
||||
|
||||
.align 5
|
||||
ENTRY(cpu_arm1026_dcache_clean_area)
|
||||
@ -436,45 +427,15 @@ arm1026_crval:
|
||||
crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001934
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm1026_processor_functions, #object
|
||||
arm1026_processor_functions:
|
||||
.word v5t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm1026_proc_init
|
||||
.word cpu_arm1026_proc_fin
|
||||
.word cpu_arm1026_reset
|
||||
.word cpu_arm1026_do_idle
|
||||
.word cpu_arm1026_dcache_clean_area
|
||||
.word cpu_arm1026_switch_mm
|
||||
.word cpu_arm1026_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm1026_processor_functions, . - arm1026_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm1026, dabort=v5t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section .rodata
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5tej"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
string cpu_arch_name, "armv5tej"
|
||||
string cpu_elf_name, "v5"
|
||||
.align
|
||||
|
||||
.type cpu_arm1026_name, #object
|
||||
cpu_arm1026_name:
|
||||
.asciz "ARM1026EJ-S"
|
||||
.size cpu_arm1026_name, . - cpu_arm1026_name
|
||||
|
||||
string cpu_arm1026_name, "ARM1026EJ-S"
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
@ -269,159 +269,57 @@ __arm7_setup: mov r0, #0
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm6_processor_functions, #object
|
||||
ENTRY(arm6_processor_functions)
|
||||
.word cpu_arm6_data_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm6_proc_init
|
||||
.word cpu_arm6_proc_fin
|
||||
.word cpu_arm6_reset
|
||||
.word cpu_arm6_do_idle
|
||||
.word cpu_arm6_dcache_clean_area
|
||||
.word cpu_arm6_switch_mm
|
||||
.word cpu_arm6_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm6_processor_functions, . - arm6_processor_functions
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm7_processor_functions, #object
|
||||
ENTRY(arm7_processor_functions)
|
||||
.word cpu_arm7_data_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm7_proc_init
|
||||
.word cpu_arm7_proc_fin
|
||||
.word cpu_arm7_reset
|
||||
.word cpu_arm7_do_idle
|
||||
.word cpu_arm7_dcache_clean_area
|
||||
.word cpu_arm7_switch_mm
|
||||
.word cpu_arm7_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm7_processor_functions, . - arm7_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm6, dabort=cpu_arm6_data_abort, pabort=legacy_pabort
|
||||
define_processor_functions arm7, dabort=cpu_arm7_data_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name: .asciz "armv3"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name: .asciz "v3"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm6_name, #object
|
||||
cpu_arm6_name: .asciz "ARM6"
|
||||
.size cpu_arm6_name, . - cpu_arm6_name
|
||||
|
||||
.type cpu_arm610_name, #object
|
||||
cpu_arm610_name:
|
||||
.asciz "ARM610"
|
||||
.size cpu_arm610_name, . - cpu_arm610_name
|
||||
|
||||
.type cpu_arm7_name, #object
|
||||
cpu_arm7_name: .asciz "ARM7"
|
||||
.size cpu_arm7_name, . - cpu_arm7_name
|
||||
|
||||
.type cpu_arm710_name, #object
|
||||
cpu_arm710_name:
|
||||
.asciz "ARM710"
|
||||
.size cpu_arm710_name, . - cpu_arm710_name
|
||||
string cpu_arch_name, "armv3"
|
||||
string cpu_elf_name, "v3"
|
||||
string cpu_arm6_name, "ARM6"
|
||||
string cpu_arm610_name, "ARM610"
|
||||
string cpu_arm7_name, "ARM7"
|
||||
string cpu_arm710_name, "ARM710"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm6_proc_info, #object
|
||||
__arm6_proc_info:
|
||||
.long 0x41560600
|
||||
.long 0xfffffff0
|
||||
.long 0x00000c1e
|
||||
.macro arm67_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \
|
||||
cpu_mm_mmu_flags:req, cpu_flush:req, cpu_proc_funcs:req
|
||||
.type __\name\()_proc_info, #object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long \cpu_mm_mmu_flags
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm6_setup
|
||||
b \cpu_flush
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT
|
||||
.long cpu_arm6_name
|
||||
.long arm6_processor_functions
|
||||
.long \cpu_name
|
||||
.long \cpu_proc_funcs
|
||||
.long v3_tlb_fns
|
||||
.long v3_user_fns
|
||||
.long v3_cache_fns
|
||||
.size __arm6_proc_info, . - __arm6_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __arm610_proc_info, #object
|
||||
__arm610_proc_info:
|
||||
.long 0x41560610
|
||||
.long 0xfffffff0
|
||||
.long 0x00000c1e
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm6_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT
|
||||
.long cpu_arm610_name
|
||||
.long arm6_processor_functions
|
||||
.long v3_tlb_fns
|
||||
.long v3_user_fns
|
||||
.long v3_cache_fns
|
||||
.size __arm610_proc_info, . - __arm610_proc_info
|
||||
|
||||
.type __arm7_proc_info, #object
|
||||
__arm7_proc_info:
|
||||
.long 0x41007000
|
||||
.long 0xffffff00
|
||||
.long 0x00000c1e
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm7_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT
|
||||
.long cpu_arm7_name
|
||||
.long arm7_processor_functions
|
||||
.long v3_tlb_fns
|
||||
.long v3_user_fns
|
||||
.long v3_cache_fns
|
||||
.size __arm7_proc_info, . - __arm7_proc_info
|
||||
|
||||
.type __arm710_proc_info, #object
|
||||
__arm710_proc_info:
|
||||
.long 0x41007100
|
||||
.long 0xfff8ff00
|
||||
.long PMD_TYPE_SECT | \
|
||||
arm67_proc_info arm6, 0x41560600, 0xfffffff0, cpu_arm6_name, \
|
||||
0x00000c1e, __arm6_setup, arm6_processor_functions
|
||||
arm67_proc_info arm610, 0x41560610, 0xfffffff0, cpu_arm610_name, \
|
||||
0x00000c1e, __arm6_setup, arm6_processor_functions
|
||||
arm67_proc_info arm7, 0x41007000, 0xffffff00, cpu_arm7_name, \
|
||||
0x00000c1e, __arm7_setup, arm7_processor_functions
|
||||
arm67_proc_info arm710, 0x41007100, 0xfff8ff00, cpu_arm710_name, \
|
||||
PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm7_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT
|
||||
.long cpu_arm710_name
|
||||
.long arm7_processor_functions
|
||||
.long v3_tlb_fns
|
||||
.long v3_user_fns
|
||||
.long v3_cache_fns
|
||||
.size __arm710_proc_info, . - __arm710_proc_info
|
||||
PMD_SECT_AP_READ, \
|
||||
__arm7_setup, arm7_processor_functions
|
||||
|
@ -169,46 +169,15 @@ arm720_crval:
|
||||
crval clear=0x00002f3f, mmuset=0x0000213d, ucset=0x00000130
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm720_processor_functions, #object
|
||||
ENTRY(arm720_processor_functions)
|
||||
.word v4t_late_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm720_proc_init
|
||||
.word cpu_arm720_proc_fin
|
||||
.word cpu_arm720_reset
|
||||
.word cpu_arm720_do_idle
|
||||
.word cpu_arm720_dcache_clean_area
|
||||
.word cpu_arm720_switch_mm
|
||||
.word cpu_arm720_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm720_processor_functions, . - arm720_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm720, dabort=v4t_late_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name: .asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name: .asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm710_name, #object
|
||||
cpu_arm710_name:
|
||||
.asciz "ARM710T"
|
||||
.size cpu_arm710_name, . - cpu_arm710_name
|
||||
|
||||
.type cpu_arm720_name, #object
|
||||
cpu_arm720_name:
|
||||
.asciz "ARM720T"
|
||||
.size cpu_arm720_name, . - cpu_arm720_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm710_name, "ARM710T"
|
||||
string cpu_arm720_name, "ARM720T"
|
||||
|
||||
.align
|
||||
|
||||
@ -218,10 +187,11 @@ cpu_arm720_name:
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm710_proc_info, #object
|
||||
__arm710_proc_info:
|
||||
.long 0x41807100 @ cpu_val
|
||||
.long 0xffffff00 @ cpu_mask
|
||||
.macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
@ -232,38 +202,17 @@ __arm710_proc_info:
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm710_setup @ cpu_flush
|
||||
b \cpu_flush @ cpu_flush
|
||||
.long cpu_arch_name @ arch_name
|
||||
.long cpu_elf_name @ elf_name
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap
|
||||
.long cpu_arm710_name @ name
|
||||
.long \cpu_name
|
||||
.long arm720_processor_functions
|
||||
.long v4_tlb_fns
|
||||
.long v4wt_user_fns
|
||||
.long v4_cache_fns
|
||||
.size __arm710_proc_info, . - __arm710_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __arm720_proc_info, #object
|
||||
__arm720_proc_info:
|
||||
.long 0x41807200 @ cpu_val
|
||||
.long 0xffffff00 @ cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm720_setup @ cpu_flush
|
||||
.long cpu_arch_name @ arch_name
|
||||
.long cpu_elf_name @ elf_name
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB @ elf_hwcap
|
||||
.long cpu_arm720_name @ name
|
||||
.long arm720_processor_functions
|
||||
.long v4_tlb_fns
|
||||
.long v4wt_user_fns
|
||||
.long v4_cache_fns
|
||||
.size __arm720_proc_info, . - __arm720_proc_info
|
||||
arm720_proc_info arm710, 0x41807100, 0xffffff00, cpu_arm710_name, __arm710_setup
|
||||
arm720_proc_info arm720, 0x41807200, 0xffffff00, cpu_arm720_name, __arm720_setup
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#include "proc-macros.S"
|
||||
|
||||
.text
|
||||
/*
|
||||
* cpu_arm740_proc_init()
|
||||
@ -115,42 +117,14 @@ __arm740_setup:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm740_processor_functions, #object
|
||||
ENTRY(arm740_processor_functions)
|
||||
.word v4t_late_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm740_proc_init
|
||||
.word cpu_arm740_proc_fin
|
||||
.word cpu_arm740_reset
|
||||
.word cpu_arm740_do_idle
|
||||
.word cpu_arm740_dcache_clean_area
|
||||
.word cpu_arm740_switch_mm
|
||||
.word 0 @ cpu_*_set_pte
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm740_processor_functions, . - arm740_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm740, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm740_name, #object
|
||||
cpu_arm740_name:
|
||||
.ascii "ARM740T"
|
||||
.size cpu_arm740_name, . - cpu_arm740_name
|
||||
string cpu_arch_name, "armv4"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm740_name, "ARM740T"
|
||||
|
||||
.align
|
||||
|
||||
@ -170,5 +144,3 @@ __arm740_proc_info:
|
||||
.long 0
|
||||
.long v3_cache_fns @ cache model
|
||||
.size __arm740_proc_info, . - __arm740_proc_info
|
||||
|
||||
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#include "proc-macros.S"
|
||||
|
||||
.text
|
||||
/*
|
||||
* cpu_arm7tdmi_proc_init()
|
||||
@ -55,197 +57,57 @@ __arm7tdmi_setup:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm7tdmi_processor_functions, #object
|
||||
ENTRY(arm7tdmi_processor_functions)
|
||||
.word v4t_late_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm7tdmi_proc_init
|
||||
.word cpu_arm7tdmi_proc_fin
|
||||
.word cpu_arm7tdmi_reset
|
||||
.word cpu_arm7tdmi_do_idle
|
||||
.word cpu_arm7tdmi_dcache_clean_area
|
||||
.word cpu_arm7tdmi_switch_mm
|
||||
.word 0 @ cpu_*_set_pte
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm7tdmi_processor_functions, . - arm7tdmi_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm7tdmi, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm7tdmi_name, #object
|
||||
cpu_arm7tdmi_name:
|
||||
.asciz "ARM7TDMI"
|
||||
.size cpu_arm7tdmi_name, . - cpu_arm7tdmi_name
|
||||
|
||||
.type cpu_triscenda7_name, #object
|
||||
cpu_triscenda7_name:
|
||||
.asciz "Triscend-A7x"
|
||||
.size cpu_triscenda7_name, . - cpu_triscenda7_name
|
||||
|
||||
.type cpu_at91_name, #object
|
||||
cpu_at91_name:
|
||||
.asciz "Atmel-AT91M40xxx"
|
||||
.size cpu_at91_name, . - cpu_at91_name
|
||||
|
||||
.type cpu_s3c3410_name, #object
|
||||
cpu_s3c3410_name:
|
||||
.asciz "Samsung-S3C3410"
|
||||
.size cpu_s3c3410_name, . - cpu_s3c3410_name
|
||||
|
||||
.type cpu_s3c44b0x_name, #object
|
||||
cpu_s3c44b0x_name:
|
||||
.asciz "Samsung-S3C44B0x"
|
||||
.size cpu_s3c44b0x_name, . - cpu_s3c44b0x_name
|
||||
|
||||
.type cpu_s3c4510b, #object
|
||||
cpu_s3c4510b_name:
|
||||
.asciz "Samsung-S3C4510B"
|
||||
.size cpu_s3c4510b_name, . - cpu_s3c4510b_name
|
||||
|
||||
.type cpu_s3c4530_name, #object
|
||||
cpu_s3c4530_name:
|
||||
.asciz "Samsung-S3C4530"
|
||||
.size cpu_s3c4530_name, . - cpu_s3c4530_name
|
||||
|
||||
.type cpu_netarm_name, #object
|
||||
cpu_netarm_name:
|
||||
.asciz "NETARM"
|
||||
.size cpu_netarm_name, . - cpu_netarm_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm7tdmi_name, "ARM7TDMI"
|
||||
string cpu_triscenda7_name, "Triscend-A7x"
|
||||
string cpu_at91_name, "Atmel-AT91M40xxx"
|
||||
string cpu_s3c3410_name, "Samsung-S3C3410"
|
||||
string cpu_s3c44b0x_name, "Samsung-S3C44B0x"
|
||||
string cpu_s3c4510b_name, "Samsung-S3C4510B"
|
||||
string cpu_s3c4530_name, "Samsung-S3C4530"
|
||||
string cpu_netarm_name, "NETARM"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm7tdmi_proc_info, #object
|
||||
__arm7tdmi_proc_info:
|
||||
.long 0x41007700
|
||||
.long 0xfff8ff00
|
||||
.macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \
|
||||
extra_hwcaps=0
|
||||
.type __\name\()_proc_info, #object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT
|
||||
.long cpu_arm7tdmi_name
|
||||
.long HWCAP_SWP | HWCAP_26BIT | ( \extra_hwcaps )
|
||||
.long \cpu_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __arm7tdmi_proc_info, . - __arm7tdmi_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __triscenda7_proc_info, #object
|
||||
__triscenda7_proc_info:
|
||||
.long 0x0001d2ff
|
||||
.long 0x0001ffff
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_triscenda7_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __triscenda7_proc_info, . - __triscenda7_proc_info
|
||||
|
||||
.type __at91_proc_info, #object
|
||||
__at91_proc_info:
|
||||
.long 0x14000040
|
||||
.long 0xfff000e0
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_at91_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __at91_proc_info, . - __at91_proc_info
|
||||
|
||||
.type __s3c4510b_proc_info, #object
|
||||
__s3c4510b_proc_info:
|
||||
.long 0x36365000
|
||||
.long 0xfffff000
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_s3c4510b_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __s3c4510b_proc_info, . - __s3c4510b_proc_info
|
||||
|
||||
.type __s3c4530_proc_info, #object
|
||||
__s3c4530_proc_info:
|
||||
.long 0x4c000000
|
||||
.long 0xfff000e0
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_s3c4530_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __s3c4530_proc_info, . - __s3c4530_proc_info
|
||||
|
||||
.type __s3c3410_proc_info, #object
|
||||
__s3c3410_proc_info:
|
||||
.long 0x34100000
|
||||
.long 0xffff0000
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_s3c3410_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __s3c3410_proc_info, . - __s3c3410_proc_info
|
||||
|
||||
.type __s3c44b0x_proc_info, #object
|
||||
__s3c44b0x_proc_info:
|
||||
.long 0x44b00000
|
||||
.long 0xffff0000
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm7tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_s3c44b0x_name
|
||||
.long arm7tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __s3c44b0x_proc_info, . - __s3c44b0x_proc_info
|
||||
arm7tdmi_proc_info arm7tdmi, 0x41007700, 0xfff8ff00, \
|
||||
cpu_arm7tdmi_name
|
||||
arm7tdmi_proc_info triscenda7, 0x0001d2ff, 0x0001ffff, \
|
||||
cpu_triscenda7_name, extra_hwcaps=HWCAP_THUMB
|
||||
arm7tdmi_proc_info at91, 0x14000040, 0xfff000e0, \
|
||||
cpu_at91_name, extra_hwcaps=HWCAP_THUMB
|
||||
arm7tdmi_proc_info s3c4510b, 0x36365000, 0xfffff000, \
|
||||
cpu_s3c4510b_name, extra_hwcaps=HWCAP_THUMB
|
||||
arm7tdmi_proc_info s3c4530, 0x4c000000, 0xfff000e0, \
|
||||
cpu_s3c4530_name, extra_hwcaps=HWCAP_THUMB
|
||||
arm7tdmi_proc_info s3c3410, 0x34100000, 0xffff0000, \
|
||||
cpu_s3c3410_name, extra_hwcaps=HWCAP_THUMB
|
||||
arm7tdmi_proc_info s3c44b0x, 0x44b00000, 0xffff0000, \
|
||||
cpu_s3c44b0x_name, extra_hwcaps=HWCAP_THUMB
|
||||
|
@ -315,18 +315,8 @@ ENTRY(arm920_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm920_dma_unmap_area)
|
||||
|
||||
ENTRY(arm920_cache_fns)
|
||||
.long arm920_flush_icache_all
|
||||
.long arm920_flush_kern_cache_all
|
||||
.long arm920_flush_user_cache_all
|
||||
.long arm920_flush_user_cache_range
|
||||
.long arm920_coherent_kern_range
|
||||
.long arm920_coherent_user_range
|
||||
.long arm920_flush_kern_dcache_area
|
||||
.long arm920_dma_map_area
|
||||
.long arm920_dma_unmap_area
|
||||
.long arm920_dma_flush_range
|
||||
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm920
|
||||
#endif
|
||||
|
||||
|
||||
@ -450,43 +440,14 @@ arm920_crval:
|
||||
crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm920_processor_functions, #object
|
||||
arm920_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm920_proc_init
|
||||
.word cpu_arm920_proc_fin
|
||||
.word cpu_arm920_reset
|
||||
.word cpu_arm920_do_idle
|
||||
.word cpu_arm920_dcache_clean_area
|
||||
.word cpu_arm920_switch_mm
|
||||
.word cpu_arm920_set_pte_ext
|
||||
.word cpu_arm920_suspend_size
|
||||
.word cpu_arm920_do_suspend
|
||||
.word cpu_arm920_do_resume
|
||||
.size arm920_processor_functions, . - arm920_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm920, dabort=v4t_early_abort, pabort=legacy_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm920_name, #object
|
||||
cpu_arm920_name:
|
||||
.asciz "ARM920T"
|
||||
.size cpu_arm920_name, . - cpu_arm920_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm920_name, "ARM920T"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -317,18 +317,8 @@ ENTRY(arm922_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm922_dma_unmap_area)
|
||||
|
||||
ENTRY(arm922_cache_fns)
|
||||
.long arm922_flush_icache_all
|
||||
.long arm922_flush_kern_cache_all
|
||||
.long arm922_flush_user_cache_all
|
||||
.long arm922_flush_user_cache_range
|
||||
.long arm922_coherent_kern_range
|
||||
.long arm922_coherent_user_range
|
||||
.long arm922_flush_kern_dcache_area
|
||||
.long arm922_dma_map_area
|
||||
.long arm922_dma_unmap_area
|
||||
.long arm922_dma_flush_range
|
||||
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm922
|
||||
#endif
|
||||
|
||||
|
||||
@ -420,43 +410,14 @@ arm922_crval:
|
||||
crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm922_processor_functions, #object
|
||||
arm922_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm922_proc_init
|
||||
.word cpu_arm922_proc_fin
|
||||
.word cpu_arm922_reset
|
||||
.word cpu_arm922_do_idle
|
||||
.word cpu_arm922_dcache_clean_area
|
||||
.word cpu_arm922_switch_mm
|
||||
.word cpu_arm922_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm922_processor_functions, . - arm922_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm922, dabort=v4t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm922_name, #object
|
||||
cpu_arm922_name:
|
||||
.asciz "ARM922T"
|
||||
.size cpu_arm922_name, . - cpu_arm922_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm922_name, "ARM922T"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -372,17 +372,8 @@ ENTRY(arm925_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm925_dma_unmap_area)
|
||||
|
||||
ENTRY(arm925_cache_fns)
|
||||
.long arm925_flush_icache_all
|
||||
.long arm925_flush_kern_cache_all
|
||||
.long arm925_flush_user_cache_all
|
||||
.long arm925_flush_user_cache_range
|
||||
.long arm925_coherent_kern_range
|
||||
.long arm925_coherent_user_range
|
||||
.long arm925_flush_kern_dcache_area
|
||||
.long arm925_dma_map_area
|
||||
.long arm925_dma_unmap_area
|
||||
.long arm925_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm925
|
||||
|
||||
ENTRY(cpu_arm925_dcache_clean_area)
|
||||
#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
|
||||
@ -487,52 +478,24 @@ arm925_crval:
|
||||
crval clear=0x00007f3f, mmuset=0x0000313d, ucset=0x00001130
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm925_processor_functions, #object
|
||||
arm925_processor_functions:
|
||||
.word v4t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm925_proc_init
|
||||
.word cpu_arm925_proc_fin
|
||||
.word cpu_arm925_reset
|
||||
.word cpu_arm925_do_idle
|
||||
.word cpu_arm925_dcache_clean_area
|
||||
.word cpu_arm925_switch_mm
|
||||
.word cpu_arm925_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm925_processor_functions, . - arm925_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm925, dabort=v4t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm925_name, #object
|
||||
cpu_arm925_name:
|
||||
.asciz "ARM925T"
|
||||
.size cpu_arm925_name, . - cpu_arm925_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm925_name, "ARM925T"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm925_proc_info,#object
|
||||
__arm925_proc_info:
|
||||
.long 0x54029250
|
||||
.long 0xfffffff0
|
||||
.macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
@ -550,27 +513,8 @@ __arm925_proc_info:
|
||||
.long v4wbi_tlb_fns
|
||||
.long v4wb_user_fns
|
||||
.long arm925_cache_fns
|
||||
.size __arm925_proc_info, . - __arm925_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __arm915_proc_info,#object
|
||||
__arm915_proc_info:
|
||||
.long 0x54029150
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __arm925_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB
|
||||
.long cpu_arm925_name
|
||||
.long arm925_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long v4wb_user_fns
|
||||
.long arm925_cache_fns
|
||||
.size __arm925_proc_info, . - __arm925_proc_info
|
||||
arm925_proc_info arm925, 0x54029250, 0xfffffff0, cpu_arm925_name
|
||||
arm925_proc_info arm915, 0x54029150, 0xfffffff0, cpu_arm925_name
|
||||
|
@ -335,17 +335,8 @@ ENTRY(arm926_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm926_dma_unmap_area)
|
||||
|
||||
ENTRY(arm926_cache_fns)
|
||||
.long arm926_flush_icache_all
|
||||
.long arm926_flush_kern_cache_all
|
||||
.long arm926_flush_user_cache_all
|
||||
.long arm926_flush_user_cache_range
|
||||
.long arm926_coherent_kern_range
|
||||
.long arm926_coherent_user_range
|
||||
.long arm926_flush_kern_dcache_area
|
||||
.long arm926_dma_map_area
|
||||
.long arm926_dma_unmap_area
|
||||
.long arm926_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm926
|
||||
|
||||
ENTRY(cpu_arm926_dcache_clean_area)
|
||||
#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
|
||||
@ -475,42 +466,14 @@ arm926_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm926_processor_functions, #object
|
||||
arm926_processor_functions:
|
||||
.word v5tj_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm926_proc_init
|
||||
.word cpu_arm926_proc_fin
|
||||
.word cpu_arm926_reset
|
||||
.word cpu_arm926_do_idle
|
||||
.word cpu_arm926_dcache_clean_area
|
||||
.word cpu_arm926_switch_mm
|
||||
.word cpu_arm926_set_pte_ext
|
||||
.word cpu_arm926_suspend_size
|
||||
.word cpu_arm926_do_suspend
|
||||
.word cpu_arm926_do_resume
|
||||
.size arm926_processor_functions, . - arm926_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm926, dabort=v5tj_early_abort, pabort=legacy_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5tej"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm926_name, #object
|
||||
cpu_arm926_name:
|
||||
.asciz "ARM926EJ-S"
|
||||
.size cpu_arm926_name, . - cpu_arm926_name
|
||||
string cpu_arch_name, "armv5tej"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_arm926_name, "ARM926EJ-S"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -264,17 +264,8 @@ ENTRY(arm940_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm940_dma_unmap_area)
|
||||
|
||||
ENTRY(arm940_cache_fns)
|
||||
.long arm940_flush_icache_all
|
||||
.long arm940_flush_kern_cache_all
|
||||
.long arm940_flush_user_cache_all
|
||||
.long arm940_flush_user_cache_range
|
||||
.long arm940_coherent_kern_range
|
||||
.long arm940_coherent_user_range
|
||||
.long arm940_flush_kern_dcache_area
|
||||
.long arm940_dma_map_area
|
||||
.long arm940_dma_unmap_area
|
||||
.long arm940_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm940
|
||||
|
||||
__CPUINIT
|
||||
|
||||
@ -348,42 +339,14 @@ __arm940_setup:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm940_processor_functions, #object
|
||||
ENTRY(arm940_processor_functions)
|
||||
.word nommu_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm940_proc_init
|
||||
.word cpu_arm940_proc_fin
|
||||
.word cpu_arm940_reset
|
||||
.word cpu_arm940_do_idle
|
||||
.word cpu_arm940_dcache_clean_area
|
||||
.word cpu_arm940_switch_mm
|
||||
.word 0 @ cpu_*_set_pte
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm940_processor_functions, . - arm940_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm940, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm940_name, #object
|
||||
cpu_arm940_name:
|
||||
.ascii "ARM940T"
|
||||
.size cpu_arm940_name, . - cpu_arm940_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm940_name, "ARM940T"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -306,18 +306,8 @@ ENTRY(arm946_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(arm946_dma_unmap_area)
|
||||
|
||||
ENTRY(arm946_cache_fns)
|
||||
.long arm946_flush_icache_all
|
||||
.long arm946_flush_kern_cache_all
|
||||
.long arm946_flush_user_cache_all
|
||||
.long arm946_flush_user_cache_range
|
||||
.long arm946_coherent_kern_range
|
||||
.long arm946_coherent_user_range
|
||||
.long arm946_flush_kern_dcache_area
|
||||
.long arm946_dma_map_area
|
||||
.long arm946_dma_unmap_area
|
||||
.long arm946_dma_flush_range
|
||||
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions arm946
|
||||
|
||||
ENTRY(cpu_arm946_dcache_clean_area)
|
||||
#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
|
||||
@ -403,43 +393,14 @@ __arm946_setup:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm946_processor_functions, #object
|
||||
ENTRY(arm946_processor_functions)
|
||||
.word nommu_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm946_proc_init
|
||||
.word cpu_arm946_proc_fin
|
||||
.word cpu_arm946_reset
|
||||
.word cpu_arm946_do_idle
|
||||
|
||||
.word cpu_arm946_dcache_clean_area
|
||||
.word cpu_arm946_switch_mm
|
||||
.word 0 @ cpu_*_set_pte
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm946_processor_functions, . - arm946_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm946, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5t"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm946_name, #object
|
||||
cpu_arm946_name:
|
||||
.ascii "ARM946E-S"
|
||||
.size cpu_arm946_name, . - cpu_arm946_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5t"
|
||||
string cpu_arm946_name, "ARM946E-S"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#include "proc-macros.S"
|
||||
|
||||
.text
|
||||
/*
|
||||
* cpu_arm9tdmi_proc_init()
|
||||
@ -55,82 +57,38 @@ __arm9tdmi_setup:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type arm9tdmi_processor_functions, #object
|
||||
ENTRY(arm9tdmi_processor_functions)
|
||||
.word nommu_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_arm9tdmi_proc_init
|
||||
.word cpu_arm9tdmi_proc_fin
|
||||
.word cpu_arm9tdmi_reset
|
||||
.word cpu_arm9tdmi_do_idle
|
||||
.word cpu_arm9tdmi_dcache_clean_area
|
||||
.word cpu_arm9tdmi_switch_mm
|
||||
.word 0 @ cpu_*_set_pte
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size arm9tdmi_processor_functions, . - arm9tdmi_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions arm9tdmi, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4t"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_arm9tdmi_name, #object
|
||||
cpu_arm9tdmi_name:
|
||||
.asciz "ARM9TDMI"
|
||||
.size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name
|
||||
|
||||
.type cpu_p2001_name, #object
|
||||
cpu_p2001_name:
|
||||
.asciz "P2001"
|
||||
.size cpu_p2001_name, . - cpu_p2001_name
|
||||
string cpu_arch_name, "armv4t"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_arm9tdmi_name, "ARM9TDMI"
|
||||
string cpu_p2001_name, "P2001"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm9tdmi_proc_info, #object
|
||||
__arm9tdmi_proc_info:
|
||||
.long 0x41009900
|
||||
.long 0xfff8ff00
|
||||
.macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
||||
.type __\name\()_proc_info, #object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm9tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_arm9tdmi_name
|
||||
.long \cpu_name
|
||||
.long arm9tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __arm9tdmi_proc_info, . - __arm9tdmi_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __p2001_proc_info, #object
|
||||
__p2001_proc_info:
|
||||
.long 0x41029000
|
||||
.long 0xffffffff
|
||||
.long 0
|
||||
.long 0
|
||||
b __arm9tdmi_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
||||
.long cpu_p2001_name
|
||||
.long arm9tdmi_processor_functions
|
||||
.long 0
|
||||
.long 0
|
||||
.long v4_cache_fns
|
||||
.size __p2001_proc_info, . - __p2001_proc_info
|
||||
arm9tdmi_proc_info arm9tdmi, 0x41009900, 0xfff8ff00, cpu_arm9tdmi_name
|
||||
arm9tdmi_proc_info p2001, 0x41029000, 0xffffffff, cpu_p2001_name
|
||||
|
@ -180,42 +180,14 @@ fa526_cr1_set:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type fa526_processor_functions, #object
|
||||
fa526_processor_functions:
|
||||
.word v4_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_fa526_proc_init
|
||||
.word cpu_fa526_proc_fin
|
||||
.word cpu_fa526_reset
|
||||
.word cpu_fa526_do_idle
|
||||
.word cpu_fa526_dcache_clean_area
|
||||
.word cpu_fa526_switch_mm
|
||||
.word cpu_fa526_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size fa526_processor_functions, . - fa526_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions fa526, dabort=v4_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_fa526_name, #object
|
||||
cpu_fa526_name:
|
||||
.asciz "FA526"
|
||||
.size cpu_fa526_name, . - cpu_fa526_name
|
||||
string cpu_arch_name, "armv4"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_fa526_name, "FA526"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -411,29 +411,28 @@ ENTRY(feroceon_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(feroceon_dma_unmap_area)
|
||||
|
||||
ENTRY(feroceon_cache_fns)
|
||||
.long feroceon_flush_icache_all
|
||||
.long feroceon_flush_kern_cache_all
|
||||
.long feroceon_flush_user_cache_all
|
||||
.long feroceon_flush_user_cache_range
|
||||
.long feroceon_coherent_kern_range
|
||||
.long feroceon_coherent_user_range
|
||||
.long feroceon_flush_kern_dcache_area
|
||||
.long feroceon_dma_map_area
|
||||
.long feroceon_dma_unmap_area
|
||||
.long feroceon_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions feroceon
|
||||
|
||||
ENTRY(feroceon_range_cache_fns)
|
||||
.long feroceon_flush_icache_all
|
||||
.long feroceon_flush_kern_cache_all
|
||||
.long feroceon_flush_user_cache_all
|
||||
.long feroceon_flush_user_cache_range
|
||||
.long feroceon_coherent_kern_range
|
||||
.long feroceon_coherent_user_range
|
||||
.long feroceon_range_flush_kern_dcache_area
|
||||
.long feroceon_range_dma_map_area
|
||||
.long feroceon_dma_unmap_area
|
||||
.long feroceon_range_dma_flush_range
|
||||
.macro range_alias basename
|
||||
.globl feroceon_range_\basename
|
||||
.type feroceon_range_\basename , %function
|
||||
.equ feroceon_range_\basename , feroceon_\basename
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Most of the cache functions are unchanged for this case.
|
||||
* Export suitable alias symbols for the unchanged functions:
|
||||
*/
|
||||
range_alias flush_icache_all
|
||||
range_alias flush_user_cache_all
|
||||
range_alias flush_kern_cache_all
|
||||
range_alias flush_user_cache_range
|
||||
range_alias coherent_kern_range
|
||||
range_alias coherent_user_range
|
||||
range_alias dma_unmap_area
|
||||
|
||||
define_cache_functions feroceon_range
|
||||
|
||||
.align 5
|
||||
ENTRY(cpu_feroceon_dcache_clean_area)
|
||||
@ -539,67 +538,27 @@ feroceon_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type feroceon_processor_functions, #object
|
||||
feroceon_processor_functions:
|
||||
.word v5t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_feroceon_proc_init
|
||||
.word cpu_feroceon_proc_fin
|
||||
.word cpu_feroceon_reset
|
||||
.word cpu_feroceon_do_idle
|
||||
.word cpu_feroceon_dcache_clean_area
|
||||
.word cpu_feroceon_switch_mm
|
||||
.word cpu_feroceon_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size feroceon_processor_functions, . - feroceon_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions feroceon, dabort=v5t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_feroceon_name, #object
|
||||
cpu_feroceon_name:
|
||||
.asciz "Feroceon"
|
||||
.size cpu_feroceon_name, . - cpu_feroceon_name
|
||||
|
||||
.type cpu_88fr531_name, #object
|
||||
cpu_88fr531_name:
|
||||
.asciz "Feroceon 88FR531-vd"
|
||||
.size cpu_88fr531_name, . - cpu_88fr531_name
|
||||
|
||||
.type cpu_88fr571_name, #object
|
||||
cpu_88fr571_name:
|
||||
.asciz "Feroceon 88FR571-vd"
|
||||
.size cpu_88fr571_name, . - cpu_88fr571_name
|
||||
|
||||
.type cpu_88fr131_name, #object
|
||||
cpu_88fr131_name:
|
||||
.asciz "Feroceon 88FR131"
|
||||
.size cpu_88fr131_name, . - cpu_88fr131_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_feroceon_name, "Feroceon"
|
||||
string cpu_88fr531_name, "Feroceon 88FR531-vd"
|
||||
string cpu_88fr571_name, "Feroceon 88FR571-vd"
|
||||
string cpu_88fr131_name, "Feroceon 88FR131"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
#ifdef CONFIG_CPU_FEROCEON_OLD_ID
|
||||
.type __feroceon_old_id_proc_info,#object
|
||||
__feroceon_old_id_proc_info:
|
||||
.long 0x41009260
|
||||
.long 0xff00fff0
|
||||
.macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
@ -614,85 +573,22 @@ __feroceon_old_id_proc_info:
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_feroceon_name
|
||||
.long \cpu_name
|
||||
.long feroceon_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long feroceon_user_fns
|
||||
.long feroceon_cache_fns
|
||||
.size __feroceon_old_id_proc_info, . - __feroceon_old_id_proc_info
|
||||
.long \cache
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
#ifdef CONFIG_CPU_FEROCEON_OLD_ID
|
||||
feroceon_proc_info feroceon_old_id, 0x41009260, 0xff00fff0, \
|
||||
cpu_name=cpu_feroceon_name, cache=feroceon_cache_fns
|
||||
#endif
|
||||
|
||||
.type __88fr531_proc_info,#object
|
||||
__88fr531_proc_info:
|
||||
.long 0x56055310
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __feroceon_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_88fr531_name
|
||||
.long feroceon_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long feroceon_user_fns
|
||||
.long feroceon_cache_fns
|
||||
.size __88fr531_proc_info, . - __88fr531_proc_info
|
||||
|
||||
.type __88fr571_proc_info,#object
|
||||
__88fr571_proc_info:
|
||||
.long 0x56155710
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __feroceon_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_88fr571_name
|
||||
.long feroceon_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long feroceon_user_fns
|
||||
.long feroceon_range_cache_fns
|
||||
.size __88fr571_proc_info, . - __88fr571_proc_info
|
||||
|
||||
.type __88fr131_proc_info,#object
|
||||
__88fr131_proc_info:
|
||||
.long 0x56251310
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_BIT4 | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __feroceon_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_88fr131_name
|
||||
.long feroceon_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long feroceon_user_fns
|
||||
.long feroceon_range_cache_fns
|
||||
.size __88fr131_proc_info, . - __88fr131_proc_info
|
||||
feroceon_proc_info 88fr531, 0x56055310, 0xfffffff0, cpu_88fr531_name, \
|
||||
cache=feroceon_cache_fns
|
||||
feroceon_proc_info 88fr571, 0x56155710, 0xfffffff0, cpu_88fr571_name, \
|
||||
cache=feroceon_range_cache_fns
|
||||
feroceon_proc_info 88fr131, 0x56251310, 0xfffffff0, cpu_88fr131_name, \
|
||||
cache=feroceon_range_cache_fns
|
||||
|
@ -254,3 +254,66 @@
|
||||
mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line
|
||||
mcr p15, 0, ip, c7, c10, 4 @ data write barrier
|
||||
.endm
|
||||
|
||||
.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0
|
||||
.type \name\()_processor_functions, #object
|
||||
.align 2
|
||||
ENTRY(\name\()_processor_functions)
|
||||
.word \dabort
|
||||
.word \pabort
|
||||
.word cpu_\name\()_proc_init
|
||||
.word cpu_\name\()_proc_fin
|
||||
.word cpu_\name\()_reset
|
||||
.word cpu_\name\()_do_idle
|
||||
.word cpu_\name\()_dcache_clean_area
|
||||
.word cpu_\name\()_switch_mm
|
||||
|
||||
.if \nommu
|
||||
.word 0
|
||||
.else
|
||||
.word cpu_\name\()_set_pte_ext
|
||||
.endif
|
||||
|
||||
.if \suspend
|
||||
.word cpu_\name\()_suspend_size
|
||||
.word cpu_\name\()_do_suspend
|
||||
.word cpu_\name\()_do_resume
|
||||
.else
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.endif
|
||||
|
||||
.size \name\()_processor_functions, . - \name\()_processor_functions
|
||||
.endm
|
||||
|
||||
.macro define_cache_functions name:req
|
||||
.align 2
|
||||
.type \name\()_cache_fns, #object
|
||||
ENTRY(\name\()_cache_fns)
|
||||
.long \name\()_flush_icache_all
|
||||
.long \name\()_flush_kern_cache_all
|
||||
.long \name\()_flush_user_cache_all
|
||||
.long \name\()_flush_user_cache_range
|
||||
.long \name\()_coherent_kern_range
|
||||
.long \name\()_coherent_user_range
|
||||
.long \name\()_flush_kern_dcache_area
|
||||
.long \name\()_dma_map_area
|
||||
.long \name\()_dma_unmap_area
|
||||
.long \name\()_dma_flush_range
|
||||
.size \name\()_cache_fns, . - \name\()_cache_fns
|
||||
.endm
|
||||
|
||||
.macro define_tlb_functions name:req, flags_up:req, flags_smp
|
||||
.type \name\()_tlb_fns, #object
|
||||
ENTRY(\name\()_tlb_fns)
|
||||
.long \name\()_flush_user_tlb_range
|
||||
.long \name\()_flush_kern_tlb_range
|
||||
.ifnb \flags_smp
|
||||
ALT_SMP(.long \flags_smp )
|
||||
ALT_UP(.long \flags_up )
|
||||
.else
|
||||
.long \flags_up
|
||||
.endif
|
||||
.size \name\()_tlb_fns, . - \name\()_tlb_fns
|
||||
.endm
|
||||
|
@ -92,6 +92,17 @@ ENTRY(cpu_mohawk_do_idle)
|
||||
mcr p15, 0, r0, c7, c0, 4 @ wait for interrupt
|
||||
mov pc, lr
|
||||
|
||||
/*
|
||||
* flush_icache_all()
|
||||
*
|
||||
* Unconditionally clean and invalidate the entire icache.
|
||||
*/
|
||||
ENTRY(mohawk_flush_icache_all)
|
||||
mov r0, #0
|
||||
mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache
|
||||
mov pc, lr
|
||||
ENDPROC(mohawk_flush_icache_all)
|
||||
|
||||
/*
|
||||
* flush_user_cache_all()
|
||||
*
|
||||
@ -288,16 +299,8 @@ ENTRY(mohawk_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(mohawk_dma_unmap_area)
|
||||
|
||||
ENTRY(mohawk_cache_fns)
|
||||
.long mohawk_flush_kern_cache_all
|
||||
.long mohawk_flush_user_cache_all
|
||||
.long mohawk_flush_user_cache_range
|
||||
.long mohawk_coherent_kern_range
|
||||
.long mohawk_coherent_user_range
|
||||
.long mohawk_flush_kern_dcache_area
|
||||
.long mohawk_dma_map_area
|
||||
.long mohawk_dma_unmap_area
|
||||
.long mohawk_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions mohawk
|
||||
|
||||
ENTRY(cpu_mohawk_dcache_clean_area)
|
||||
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
|
||||
@ -373,42 +376,14 @@ mohawk_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
.type mohawk_processor_functions, #object
|
||||
mohawk_processor_functions:
|
||||
.word v5t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_mohawk_proc_init
|
||||
.word cpu_mohawk_proc_fin
|
||||
.word cpu_mohawk_reset
|
||||
.word cpu_mohawk_do_idle
|
||||
.word cpu_mohawk_dcache_clean_area
|
||||
.word cpu_mohawk_switch_mm
|
||||
.word cpu_mohawk_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size mohawk_processor_functions, . - mohawk_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions mohawk, dabort=v5t_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_mohawk_name, #object
|
||||
cpu_mohawk_name:
|
||||
.asciz "Marvell 88SV331x"
|
||||
.size cpu_mohawk_name, . - cpu_mohawk_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_mohawk_name, "Marvell 88SV331x"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -187,43 +187,14 @@ sa110_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
|
||||
.type sa110_processor_functions, #object
|
||||
ENTRY(sa110_processor_functions)
|
||||
.word v4_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_sa110_proc_init
|
||||
.word cpu_sa110_proc_fin
|
||||
.word cpu_sa110_reset
|
||||
.word cpu_sa110_do_idle
|
||||
.word cpu_sa110_dcache_clean_area
|
||||
.word cpu_sa110_switch_mm
|
||||
.word cpu_sa110_set_pte_ext
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.size sa110_processor_functions, . - sa110_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions sa110, dabort=v4_early_abort, pabort=legacy_pabort
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_sa110_name, #object
|
||||
cpu_sa110_name:
|
||||
.asciz "StrongARM-110"
|
||||
.size cpu_sa110_name, . - cpu_sa110_name
|
||||
string cpu_arch_name, "armv4"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_sa110_name, "StrongARM-110"
|
||||
|
||||
.align
|
||||
|
||||
|
@ -235,60 +235,29 @@ sa1100_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
|
||||
/*
|
||||
* SA1100 and SA1110 share the same function calls
|
||||
*/
|
||||
.type sa1100_processor_functions, #object
|
||||
ENTRY(sa1100_processor_functions)
|
||||
.word v4_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_sa1100_proc_init
|
||||
.word cpu_sa1100_proc_fin
|
||||
.word cpu_sa1100_reset
|
||||
.word cpu_sa1100_do_idle
|
||||
.word cpu_sa1100_dcache_clean_area
|
||||
.word cpu_sa1100_switch_mm
|
||||
.word cpu_sa1100_set_pte_ext
|
||||
.word cpu_sa1100_suspend_size
|
||||
.word cpu_sa1100_do_suspend
|
||||
.word cpu_sa1100_do_resume
|
||||
.size sa1100_processor_functions, . - sa1100_processor_functions
|
||||
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions sa1100, dabort=v4_early_abort, pabort=legacy_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv4"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v4"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_sa1100_name, #object
|
||||
cpu_sa1100_name:
|
||||
.asciz "StrongARM-1100"
|
||||
.size cpu_sa1100_name, . - cpu_sa1100_name
|
||||
|
||||
.type cpu_sa1110_name, #object
|
||||
cpu_sa1110_name:
|
||||
.asciz "StrongARM-1110"
|
||||
.size cpu_sa1110_name, . - cpu_sa1110_name
|
||||
string cpu_arch_name, "armv4"
|
||||
string cpu_elf_name, "v4"
|
||||
string cpu_sa1100_name, "StrongARM-1100"
|
||||
string cpu_sa1110_name, "StrongARM-1110"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __sa1100_proc_info,#object
|
||||
__sa1100_proc_info:
|
||||
.long 0x4401a110
|
||||
.long 0xfffffff0
|
||||
.macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
@ -301,32 +270,13 @@ __sa1100_proc_info:
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
||||
.long cpu_sa1100_name
|
||||
.long \cpu_name
|
||||
.long sa1100_processor_functions
|
||||
.long v4wb_tlb_fns
|
||||
.long v4_mc_user_fns
|
||||
.long v4wb_cache_fns
|
||||
.size __sa1100_proc_info, . - __sa1100_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
.type __sa1110_proc_info,#object
|
||||
__sa1110_proc_info:
|
||||
.long 0x6901b110
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __sa1100_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT
|
||||
.long cpu_sa1110_name
|
||||
.long sa1100_processor_functions
|
||||
.long v4wb_tlb_fns
|
||||
.long v4_mc_user_fns
|
||||
.long v4wb_cache_fns
|
||||
.size __sa1110_proc_info, . - __sa1110_proc_info
|
||||
sa1100_proc_info sa1100, 0x4401a110, 0xfffffff0, cpu_sa1100_name
|
||||
sa1100_proc_info sa1110, 0x6901b110, 0xfffffff0, cpu_sa1110_name
|
||||
|
@ -56,6 +56,11 @@ ENTRY(cpu_v6_proc_fin)
|
||||
*/
|
||||
.align 5
|
||||
ENTRY(cpu_v6_reset)
|
||||
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
||||
bic r1, r1, #0x1 @ ...............m
|
||||
mcr p15, 0, r1, c1, c0, 0 @ disable MMU
|
||||
mov r1, #0
|
||||
mcr p15, 0, r1, c7, c5, 4 @ ISB
|
||||
mov pc, r0
|
||||
|
||||
/*
|
||||
@ -169,11 +174,7 @@ cpu_resume_l1_flags:
|
||||
#define cpu_v6_do_resume 0
|
||||
#endif
|
||||
|
||||
|
||||
.type cpu_v6_name, #object
|
||||
cpu_v6_name:
|
||||
.asciz "ARMv6-compatible processor"
|
||||
.size cpu_v6_name, . - cpu_v6_name
|
||||
string cpu_v6_name, "ARMv6-compatible processor"
|
||||
|
||||
.align
|
||||
|
||||
@ -239,33 +240,13 @@ v6_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v6_processor_functions, #object
|
||||
ENTRY(v6_processor_functions)
|
||||
.word v6_early_abort
|
||||
.word v6_pabort
|
||||
.word cpu_v6_proc_init
|
||||
.word cpu_v6_proc_fin
|
||||
.word cpu_v6_reset
|
||||
.word cpu_v6_do_idle
|
||||
.word cpu_v6_dcache_clean_area
|
||||
.word cpu_v6_switch_mm
|
||||
.word cpu_v6_set_pte_ext
|
||||
.word cpu_v6_suspend_size
|
||||
.word cpu_v6_do_suspend
|
||||
.word cpu_v6_do_resume
|
||||
.size v6_processor_functions, . - v6_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions v6, dabort=v6_early_abort, pabort=v6_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv6"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v6"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
string cpu_arch_name, "armv6"
|
||||
string cpu_elf_name, "v6"
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
@ -58,9 +58,16 @@ ENDPROC(cpu_v7_proc_fin)
|
||||
* to what would be the reset vector.
|
||||
*
|
||||
* - loc - location to jump to for soft reset
|
||||
*
|
||||
* This code must be executed using a flat identity mapping with
|
||||
* caches disabled.
|
||||
*/
|
||||
.align 5
|
||||
ENTRY(cpu_v7_reset)
|
||||
mrc p15, 0, r1, c1, c0, 0 @ ctrl register
|
||||
bic r1, r1, #0x1 @ ...............m
|
||||
mcr p15, 0, r1, c1, c0, 0 @ disable MMU
|
||||
isb
|
||||
mov pc, r0
|
||||
ENDPROC(cpu_v7_reset)
|
||||
|
||||
@ -173,8 +180,7 @@ ENTRY(cpu_v7_set_pte_ext)
|
||||
mov pc, lr
|
||||
ENDPROC(cpu_v7_set_pte_ext)
|
||||
|
||||
cpu_v7_name:
|
||||
.ascii "ARMv7 Processor"
|
||||
string cpu_v7_name, "ARMv7 Processor"
|
||||
.align
|
||||
|
||||
/*
|
||||
@ -279,13 +285,20 @@ cpu_resume_l1_flags:
|
||||
* It is assumed that:
|
||||
* - cache type register is implemented
|
||||
*/
|
||||
__v7_ca5mp_setup:
|
||||
__v7_ca9mp_setup:
|
||||
mov r10, #(1 << 0) @ TLB ops broadcasting
|
||||
b 1f
|
||||
__v7_ca15mp_setup:
|
||||
mov r10, #0
|
||||
1:
|
||||
#ifdef CONFIG_SMP
|
||||
ALT_SMP(mrc p15, 0, r0, c1, c0, 1)
|
||||
ALT_UP(mov r0, #(1 << 6)) @ fake it for UP
|
||||
tst r0, #(1 << 6) @ SMP/nAMP mode enabled?
|
||||
orreq r0, r0, #(1 << 6) | (1 << 0) @ Enable SMP/nAMP mode and
|
||||
mcreq p15, 0, r0, c1, c0, 1 @ TLB ops broadcasting
|
||||
orreq r0, r0, #(1 << 6) @ Enable SMP/nAMP mode
|
||||
orreq r0, r0, r10 @ Enable CPU-specific SMP bits
|
||||
mcreq p15, 0, r0, c1, c0, 1
|
||||
#endif
|
||||
__v7_setup:
|
||||
adr r12, __v7_setup_stack @ the local stack
|
||||
@ -411,66 +424,69 @@ __v7_setup_stack:
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v7_processor_functions, #object
|
||||
ENTRY(v7_processor_functions)
|
||||
.word v7_early_abort
|
||||
.word v7_pabort
|
||||
.word cpu_v7_proc_init
|
||||
.word cpu_v7_proc_fin
|
||||
.word cpu_v7_reset
|
||||
.word cpu_v7_do_idle
|
||||
.word cpu_v7_dcache_clean_area
|
||||
.word cpu_v7_switch_mm
|
||||
.word cpu_v7_set_pte_ext
|
||||
.word cpu_v7_suspend_size
|
||||
.word cpu_v7_do_suspend
|
||||
.word cpu_v7_do_resume
|
||||
.size v7_processor_functions, . - v7_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions v7, dabort=v7_early_abort, pabort=v7_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv7"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v7"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
string cpu_arch_name, "armv7"
|
||||
string cpu_elf_name, "v7"
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __v7_ca9mp_proc_info, #object
|
||||
__v7_ca9mp_proc_info:
|
||||
.long 0x410fc090 @ Required ID value
|
||||
.long 0xff0ffff0 @ Mask for ID
|
||||
ALT_SMP(.long \
|
||||
PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_SMP)
|
||||
ALT_UP(.long \
|
||||
PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_UP)
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_XN | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
W(b) __v7_ca9mp_setup
|
||||
/*
|
||||
* Standard v7 proc info content
|
||||
*/
|
||||
.macro __v7_proc initfunc, mm_mmuflags = 0, io_mmuflags = 0, hwcaps = 0
|
||||
ALT_SMP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_SMP | \mm_mmuflags)
|
||||
ALT_UP(.long PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_UP | \mm_mmuflags)
|
||||
.long PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ | \io_mmuflags
|
||||
W(b) \initfunc
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS
|
||||
.long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT | \
|
||||
HWCAP_EDSP | HWCAP_TLS | \hwcaps
|
||||
.long cpu_v7_name
|
||||
.long v7_processor_functions
|
||||
.long v7wbi_tlb_fns
|
||||
.long v6_user_fns
|
||||
.long v7_cache_fns
|
||||
.endm
|
||||
|
||||
/*
|
||||
* ARM Ltd. Cortex A5 processor.
|
||||
*/
|
||||
.type __v7_ca5mp_proc_info, #object
|
||||
__v7_ca5mp_proc_info:
|
||||
.long 0x410fc050
|
||||
.long 0xff0ffff0
|
||||
__v7_proc __v7_ca5mp_setup
|
||||
.size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info
|
||||
|
||||
/*
|
||||
* ARM Ltd. Cortex A9 processor.
|
||||
*/
|
||||
.type __v7_ca9mp_proc_info, #object
|
||||
__v7_ca9mp_proc_info:
|
||||
.long 0x410fc090
|
||||
.long 0xff0ffff0
|
||||
__v7_proc __v7_ca9mp_setup
|
||||
.size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info
|
||||
|
||||
/*
|
||||
* ARM Ltd. Cortex A15 processor.
|
||||
*/
|
||||
.type __v7_ca15mp_proc_info, #object
|
||||
__v7_ca15mp_proc_info:
|
||||
.long 0x410fc0f0
|
||||
.long 0xff0ffff0
|
||||
__v7_proc __v7_ca15mp_setup, hwcaps = HWCAP_IDIV
|
||||
.size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info
|
||||
|
||||
/*
|
||||
* Match any ARMv7 processor core.
|
||||
*/
|
||||
@ -478,27 +494,5 @@ __v7_ca9mp_proc_info:
|
||||
__v7_proc_info:
|
||||
.long 0x000f0000 @ Required ID value
|
||||
.long 0x000f0000 @ Mask for ID
|
||||
ALT_SMP(.long \
|
||||
PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_SMP)
|
||||
ALT_UP(.long \
|
||||
PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ | \
|
||||
PMD_FLAGS_UP)
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_XN | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
W(b) __v7_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS
|
||||
.long cpu_v7_name
|
||||
.long v7_processor_functions
|
||||
.long v7wbi_tlb_fns
|
||||
.long v6_user_fns
|
||||
.long v7_cache_fns
|
||||
__v7_proc __v7_setup
|
||||
.size __v7_proc_info, . - __v7_proc_info
|
||||
|
@ -335,17 +335,8 @@ ENTRY(xsc3_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(xsc3_dma_unmap_area)
|
||||
|
||||
ENTRY(xsc3_cache_fns)
|
||||
.long xsc3_flush_icache_all
|
||||
.long xsc3_flush_kern_cache_all
|
||||
.long xsc3_flush_user_cache_all
|
||||
.long xsc3_flush_user_cache_range
|
||||
.long xsc3_coherent_kern_range
|
||||
.long xsc3_coherent_user_range
|
||||
.long xsc3_flush_kern_dcache_area
|
||||
.long xsc3_dma_map_area
|
||||
.long xsc3_dma_unmap_area
|
||||
.long xsc3_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions xsc3
|
||||
|
||||
ENTRY(cpu_xsc3_dcache_clean_area)
|
||||
1: mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line
|
||||
@ -503,52 +494,24 @@ xsc3_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
|
||||
.type xsc3_processor_functions, #object
|
||||
ENTRY(xsc3_processor_functions)
|
||||
.word v5t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_xsc3_proc_init
|
||||
.word cpu_xsc3_proc_fin
|
||||
.word cpu_xsc3_reset
|
||||
.word cpu_xsc3_do_idle
|
||||
.word cpu_xsc3_dcache_clean_area
|
||||
.word cpu_xsc3_switch_mm
|
||||
.word cpu_xsc3_set_pte_ext
|
||||
.word cpu_xsc3_suspend_size
|
||||
.word cpu_xsc3_do_suspend
|
||||
.word cpu_xsc3_do_resume
|
||||
.size xsc3_processor_functions, . - xsc3_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions xsc3, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_xsc3_name, #object
|
||||
cpu_xsc3_name:
|
||||
.asciz "XScale-V3 based processor"
|
||||
.size cpu_xsc3_name, . - cpu_xsc3_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
string cpu_xsc3_name, "XScale-V3 based processor"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __xsc3_proc_info,#object
|
||||
__xsc3_proc_info:
|
||||
.long 0x69056000
|
||||
.long 0xffffe000
|
||||
.macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
@ -566,29 +529,10 @@ __xsc3_proc_info:
|
||||
.long v4wbi_tlb_fns
|
||||
.long xsc3_mc_user_fns
|
||||
.long xsc3_cache_fns
|
||||
.size __xsc3_proc_info, . - __xsc3_proc_info
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
xsc3_proc_info xsc3, 0x69056000, 0xffffe000
|
||||
|
||||
/* Note: PXA935 changed its implementor ID from Intel to Marvell */
|
||||
|
||||
.type __xsc3_pxa935_proc_info,#object
|
||||
__xsc3_pxa935_proc_info:
|
||||
.long 0x56056000
|
||||
.long 0xffffe000
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xsc3_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_xsc3_name
|
||||
.long xsc3_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xsc3_mc_user_fns
|
||||
.long xsc3_cache_fns
|
||||
.size __xsc3_pxa935_proc_info, . - __xsc3_pxa935_proc_info
|
||||
xsc3_proc_info xsc3_pxa935, 0x56056000, 0xffffe000
|
||||
|
@ -390,12 +390,12 @@ ENDPROC(xscale_dma_map_area)
|
||||
* - size - size of region
|
||||
* - dir - DMA direction
|
||||
*/
|
||||
ENTRY(xscale_dma_a0_map_area)
|
||||
ENTRY(xscale_80200_A0_A1_dma_map_area)
|
||||
add r1, r1, r0
|
||||
teq r2, #DMA_TO_DEVICE
|
||||
beq xscale_dma_clean_range
|
||||
b xscale_dma_flush_range
|
||||
ENDPROC(xscale_dma_a0_map_area)
|
||||
ENDPROC(xscale_80200_A0_A1_dma_map_area)
|
||||
|
||||
/*
|
||||
* dma_unmap_area(start, size, dir)
|
||||
@ -407,17 +407,8 @@ ENTRY(xscale_dma_unmap_area)
|
||||
mov pc, lr
|
||||
ENDPROC(xscale_dma_unmap_area)
|
||||
|
||||
ENTRY(xscale_cache_fns)
|
||||
.long xscale_flush_icache_all
|
||||
.long xscale_flush_kern_cache_all
|
||||
.long xscale_flush_user_cache_all
|
||||
.long xscale_flush_user_cache_range
|
||||
.long xscale_coherent_kern_range
|
||||
.long xscale_coherent_user_range
|
||||
.long xscale_flush_kern_dcache_area
|
||||
.long xscale_dma_map_area
|
||||
.long xscale_dma_unmap_area
|
||||
.long xscale_dma_flush_range
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions xscale
|
||||
|
||||
/*
|
||||
* On stepping A0/A1 of the 80200, invalidating D-cache by line doesn't
|
||||
@ -432,16 +423,28 @@ ENTRY(xscale_cache_fns)
|
||||
* revision January 22, 2003, available at:
|
||||
* http://www.intel.com/design/iio/specupdt/273415.htm
|
||||
*/
|
||||
ENTRY(xscale_80200_A0_A1_cache_fns)
|
||||
.long xscale_flush_kern_cache_all
|
||||
.long xscale_flush_user_cache_all
|
||||
.long xscale_flush_user_cache_range
|
||||
.long xscale_coherent_kern_range
|
||||
.long xscale_coherent_user_range
|
||||
.long xscale_flush_kern_dcache_area
|
||||
.long xscale_dma_a0_map_area
|
||||
.long xscale_dma_unmap_area
|
||||
.long xscale_dma_flush_range
|
||||
.macro a0_alias basename
|
||||
.globl xscale_80200_A0_A1_\basename
|
||||
.type xscale_80200_A0_A1_\basename , %function
|
||||
.equ xscale_80200_A0_A1_\basename , xscale_\basename
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Most of the cache functions are unchanged for these processor revisions.
|
||||
* Export suitable alias symbols for the unchanged functions:
|
||||
*/
|
||||
a0_alias flush_icache_all
|
||||
a0_alias flush_user_cache_all
|
||||
a0_alias flush_kern_cache_all
|
||||
a0_alias flush_user_cache_range
|
||||
a0_alias coherent_kern_range
|
||||
a0_alias coherent_user_range
|
||||
a0_alias flush_kern_dcache_area
|
||||
a0_alias dma_flush_range
|
||||
a0_alias dma_unmap_area
|
||||
|
||||
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
|
||||
define_cache_functions xscale_80200_A0_A1
|
||||
|
||||
ENTRY(cpu_xscale_dcache_clean_area)
|
||||
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
|
||||
@ -587,432 +590,74 @@ xscale_crval:
|
||||
|
||||
__INITDATA
|
||||
|
||||
/*
|
||||
* Purpose : Function pointers used to access above functions - all calls
|
||||
* come through these
|
||||
*/
|
||||
|
||||
.type xscale_processor_functions, #object
|
||||
ENTRY(xscale_processor_functions)
|
||||
.word v5t_early_abort
|
||||
.word legacy_pabort
|
||||
.word cpu_xscale_proc_init
|
||||
.word cpu_xscale_proc_fin
|
||||
.word cpu_xscale_reset
|
||||
.word cpu_xscale_do_idle
|
||||
.word cpu_xscale_dcache_clean_area
|
||||
.word cpu_xscale_switch_mm
|
||||
.word cpu_xscale_set_pte_ext
|
||||
.word cpu_xscale_suspend_size
|
||||
.word cpu_xscale_do_suspend
|
||||
.word cpu_xscale_do_resume
|
||||
.size xscale_processor_functions, . - xscale_processor_functions
|
||||
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
||||
define_processor_functions xscale, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1
|
||||
|
||||
.section ".rodata"
|
||||
|
||||
.type cpu_arch_name, #object
|
||||
cpu_arch_name:
|
||||
.asciz "armv5te"
|
||||
.size cpu_arch_name, . - cpu_arch_name
|
||||
string cpu_arch_name, "armv5te"
|
||||
string cpu_elf_name, "v5"
|
||||
|
||||
.type cpu_elf_name, #object
|
||||
cpu_elf_name:
|
||||
.asciz "v5"
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
|
||||
.type cpu_80200_A0_A1_name, #object
|
||||
cpu_80200_A0_A1_name:
|
||||
.asciz "XScale-80200 A0/A1"
|
||||
.size cpu_80200_A0_A1_name, . - cpu_80200_A0_A1_name
|
||||
|
||||
.type cpu_80200_name, #object
|
||||
cpu_80200_name:
|
||||
.asciz "XScale-80200"
|
||||
.size cpu_80200_name, . - cpu_80200_name
|
||||
|
||||
.type cpu_80219_name, #object
|
||||
cpu_80219_name:
|
||||
.asciz "XScale-80219"
|
||||
.size cpu_80219_name, . - cpu_80219_name
|
||||
|
||||
.type cpu_8032x_name, #object
|
||||
cpu_8032x_name:
|
||||
.asciz "XScale-IOP8032x Family"
|
||||
.size cpu_8032x_name, . - cpu_8032x_name
|
||||
|
||||
.type cpu_8033x_name, #object
|
||||
cpu_8033x_name:
|
||||
.asciz "XScale-IOP8033x Family"
|
||||
.size cpu_8033x_name, . - cpu_8033x_name
|
||||
|
||||
.type cpu_pxa250_name, #object
|
||||
cpu_pxa250_name:
|
||||
.asciz "XScale-PXA250"
|
||||
.size cpu_pxa250_name, . - cpu_pxa250_name
|
||||
|
||||
.type cpu_pxa210_name, #object
|
||||
cpu_pxa210_name:
|
||||
.asciz "XScale-PXA210"
|
||||
.size cpu_pxa210_name, . - cpu_pxa210_name
|
||||
|
||||
.type cpu_ixp42x_name, #object
|
||||
cpu_ixp42x_name:
|
||||
.asciz "XScale-IXP42x Family"
|
||||
.size cpu_ixp42x_name, . - cpu_ixp42x_name
|
||||
|
||||
.type cpu_ixp43x_name, #object
|
||||
cpu_ixp43x_name:
|
||||
.asciz "XScale-IXP43x Family"
|
||||
.size cpu_ixp43x_name, . - cpu_ixp43x_name
|
||||
|
||||
.type cpu_ixp46x_name, #object
|
||||
cpu_ixp46x_name:
|
||||
.asciz "XScale-IXP46x Family"
|
||||
.size cpu_ixp46x_name, . - cpu_ixp46x_name
|
||||
|
||||
.type cpu_ixp2400_name, #object
|
||||
cpu_ixp2400_name:
|
||||
.asciz "XScale-IXP2400"
|
||||
.size cpu_ixp2400_name, . - cpu_ixp2400_name
|
||||
|
||||
.type cpu_ixp2800_name, #object
|
||||
cpu_ixp2800_name:
|
||||
.asciz "XScale-IXP2800"
|
||||
.size cpu_ixp2800_name, . - cpu_ixp2800_name
|
||||
|
||||
.type cpu_pxa255_name, #object
|
||||
cpu_pxa255_name:
|
||||
.asciz "XScale-PXA255"
|
||||
.size cpu_pxa255_name, . - cpu_pxa255_name
|
||||
|
||||
.type cpu_pxa270_name, #object
|
||||
cpu_pxa270_name:
|
||||
.asciz "XScale-PXA270"
|
||||
.size cpu_pxa270_name, . - cpu_pxa270_name
|
||||
string cpu_80200_A0_A1_name, "XScale-80200 A0/A1"
|
||||
string cpu_80200_name, "XScale-80200"
|
||||
string cpu_80219_name, "XScale-80219"
|
||||
string cpu_8032x_name, "XScale-IOP8032x Family"
|
||||
string cpu_8033x_name, "XScale-IOP8033x Family"
|
||||
string cpu_pxa250_name, "XScale-PXA250"
|
||||
string cpu_pxa210_name, "XScale-PXA210"
|
||||
string cpu_ixp42x_name, "XScale-IXP42x Family"
|
||||
string cpu_ixp43x_name, "XScale-IXP43x Family"
|
||||
string cpu_ixp46x_name, "XScale-IXP46x Family"
|
||||
string cpu_ixp2400_name, "XScale-IXP2400"
|
||||
string cpu_ixp2800_name, "XScale-IXP2800"
|
||||
string cpu_pxa255_name, "XScale-PXA255"
|
||||
string cpu_pxa270_name, "XScale-PXA270"
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __80200_A0_A1_proc_info,#object
|
||||
__80200_A0_A1_proc_info:
|
||||
.long 0x69052000
|
||||
.long 0xfffffffe
|
||||
.long PMD_TYPE_SECT | \
|
||||
.macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache
|
||||
.type __\name\()_proc_info,#object
|
||||
__\name\()_proc_info:
|
||||
.long \cpu_val
|
||||
.long \cpu_mask
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_80200_name
|
||||
.long \cpu_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_80200_A0_A1_cache_fns
|
||||
.size __80200_A0_A1_proc_info, . - __80200_A0_A1_proc_info
|
||||
|
||||
.type __80200_proc_info,#object
|
||||
__80200_proc_info:
|
||||
.long 0x69052000
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_80200_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __80200_proc_info, . - __80200_proc_info
|
||||
|
||||
.type __80219_proc_info,#object
|
||||
__80219_proc_info:
|
||||
.long 0x69052e20
|
||||
.long 0xffffffe0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_80219_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __80219_proc_info, . - __80219_proc_info
|
||||
|
||||
.type __8032x_proc_info,#object
|
||||
__8032x_proc_info:
|
||||
.long 0x69052420
|
||||
.long 0xfffff7e0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_8032x_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __8032x_proc_info, . - __8032x_proc_info
|
||||
|
||||
.type __8033x_proc_info,#object
|
||||
__8033x_proc_info:
|
||||
.long 0x69054010
|
||||
.long 0xfffffd30
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_8033x_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __8033x_proc_info, . - __8033x_proc_info
|
||||
|
||||
.type __pxa250_proc_info,#object
|
||||
__pxa250_proc_info:
|
||||
.long 0x69052100
|
||||
.long 0xfffff7f0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_pxa250_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __pxa250_proc_info, . - __pxa250_proc_info
|
||||
|
||||
.type __pxa210_proc_info,#object
|
||||
__pxa210_proc_info:
|
||||
.long 0x69052120
|
||||
.long 0xfffff3f0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_pxa210_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __pxa210_proc_info, . - __pxa210_proc_info
|
||||
|
||||
.type __ixp2400_proc_info, #object
|
||||
__ixp2400_proc_info:
|
||||
.long 0x69054190
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_ixp2400_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __ixp2400_proc_info, . - __ixp2400_proc_info
|
||||
|
||||
.type __ixp2800_proc_info, #object
|
||||
__ixp2800_proc_info:
|
||||
.long 0x690541a0
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_ixp2800_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __ixp2800_proc_info, . - __ixp2800_proc_info
|
||||
|
||||
.type __ixp42x_proc_info, #object
|
||||
__ixp42x_proc_info:
|
||||
.long 0x690541c0
|
||||
.long 0xffffffc0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_ixp42x_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __ixp42x_proc_info, . - __ixp42x_proc_info
|
||||
|
||||
.type __ixp43x_proc_info, #object
|
||||
__ixp43x_proc_info:
|
||||
.long 0x69054040
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_ixp43x_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __ixp43x_proc_info, . - __ixp43x_proc_info
|
||||
|
||||
.type __ixp46x_proc_info, #object
|
||||
__ixp46x_proc_info:
|
||||
.long 0x69054200
|
||||
.long 0xffffff00
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_ixp46x_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __ixp46x_proc_info, . - __ixp46x_proc_info
|
||||
|
||||
.type __pxa255_proc_info,#object
|
||||
__pxa255_proc_info:
|
||||
.long 0x69052d00
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_pxa255_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __pxa255_proc_info, . - __pxa255_proc_info
|
||||
|
||||
.type __pxa270_proc_info,#object
|
||||
__pxa270_proc_info:
|
||||
.long 0x69054110
|
||||
.long 0xfffffff0
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_BUFFERABLE | \
|
||||
PMD_SECT_CACHEABLE | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
.long PMD_TYPE_SECT | \
|
||||
PMD_SECT_AP_WRITE | \
|
||||
PMD_SECT_AP_READ
|
||||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long cpu_pxa270_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
.long xscale_mc_user_fns
|
||||
.long xscale_cache_fns
|
||||
.size __pxa270_proc_info, . - __pxa270_proc_info
|
||||
.ifb \cache
|
||||
.long xscale_cache_fns
|
||||
.else
|
||||
.long \cache
|
||||
.endif
|
||||
.size __\name\()_proc_info, . - __\name\()_proc_info
|
||||
.endm
|
||||
|
||||
xscale_proc_info 80200_A0_A1, 0x69052000, 0xfffffffe, cpu_80200_name, \
|
||||
cache=xscale_80200_A0_A1_cache_fns
|
||||
xscale_proc_info 80200, 0x69052000, 0xfffffff0, cpu_80200_name
|
||||
xscale_proc_info 80219, 0x69052e20, 0xffffffe0, cpu_80219_name
|
||||
xscale_proc_info 8032x, 0x69052420, 0xfffff7e0, cpu_8032x_name
|
||||
xscale_proc_info 8033x, 0x69054010, 0xfffffd30, cpu_8033x_name
|
||||
xscale_proc_info pxa250, 0x69052100, 0xfffff7f0, cpu_pxa250_name
|
||||
xscale_proc_info pxa210, 0x69052120, 0xfffff3f0, cpu_pxa210_name
|
||||
xscale_proc_info ixp2400, 0x69054190, 0xfffffff0, cpu_ixp2400_name
|
||||
xscale_proc_info ixp2800, 0x690541a0, 0xfffffff0, cpu_ixp2800_name
|
||||
xscale_proc_info ixp42x, 0x690541c0, 0xffffffc0, cpu_ixp42x_name
|
||||
xscale_proc_info ixp43x, 0x69054040, 0xfffffff0, cpu_ixp43x_name
|
||||
xscale_proc_info ixp46x, 0x69054200, 0xffffff00, cpu_ixp46x_name
|
||||
xscale_proc_info pxa255, 0x69052d00, 0xfffffff0, cpu_pxa255_name
|
||||
xscale_proc_info pxa270, 0x69054110, 0xfffffff0, cpu_pxa270_name
|
||||
|
@ -67,9 +67,5 @@ ENTRY(fa_flush_kern_tlb_range)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type fa_tlb_fns, #object
|
||||
ENTRY(fa_tlb_fns)
|
||||
.long fa_flush_user_tlb_range
|
||||
.long fa_flush_kern_tlb_range
|
||||
.long fa_tlb_flags
|
||||
.size fa_tlb_fns, . - fa_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions fa, fa_tlb_flags
|
||||
|
@ -44,9 +44,5 @@ ENTRY(v3_flush_kern_tlb_range)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v3_tlb_fns, #object
|
||||
ENTRY(v3_tlb_fns)
|
||||
.long v3_flush_user_tlb_range
|
||||
.long v3_flush_kern_tlb_range
|
||||
.long v3_tlb_flags
|
||||
.size v3_tlb_fns, . - v3_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v3, v3_tlb_flags
|
||||
|
@ -57,9 +57,5 @@ ENTRY(v4_flush_user_tlb_range)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4_tlb_fns, #object
|
||||
ENTRY(v4_tlb_fns)
|
||||
.long v4_flush_user_tlb_range
|
||||
.long v4_flush_kern_tlb_range
|
||||
.long v4_tlb_flags
|
||||
.size v4_tlb_fns, . - v4_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v4, v4_tlb_flags
|
||||
|
@ -69,9 +69,5 @@ ENTRY(v4wb_flush_kern_tlb_range)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4wb_tlb_fns, #object
|
||||
ENTRY(v4wb_tlb_fns)
|
||||
.long v4wb_flush_user_tlb_range
|
||||
.long v4wb_flush_kern_tlb_range
|
||||
.long v4wb_tlb_flags
|
||||
.size v4wb_tlb_fns, . - v4wb_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v4wb, v4wb_tlb_flags
|
||||
|
@ -60,9 +60,5 @@ ENTRY(v4wbi_flush_kern_tlb_range)
|
||||
|
||||
__INITDATA
|
||||
|
||||
.type v4wbi_tlb_fns, #object
|
||||
ENTRY(v4wbi_tlb_fns)
|
||||
.long v4wbi_flush_user_tlb_range
|
||||
.long v4wbi_flush_kern_tlb_range
|
||||
.long v4wbi_tlb_flags
|
||||
.size v4wbi_tlb_fns, . - v4wbi_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v4wbi, v4wbi_tlb_flags
|
||||
|
@ -90,9 +90,5 @@ ENTRY(v6wbi_flush_kern_tlb_range)
|
||||
|
||||
__INIT
|
||||
|
||||
.type v6wbi_tlb_fns, #object
|
||||
ENTRY(v6wbi_tlb_fns)
|
||||
.long v6wbi_flush_user_tlb_range
|
||||
.long v6wbi_flush_kern_tlb_range
|
||||
.long v6wbi_tlb_flags
|
||||
.size v6wbi_tlb_fns, . - v6wbi_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v6wbi, v6wbi_tlb_flags
|
||||
|
@ -85,10 +85,5 @@ ENDPROC(v7wbi_flush_kern_tlb_range)
|
||||
|
||||
__INIT
|
||||
|
||||
.type v7wbi_tlb_fns, #object
|
||||
ENTRY(v7wbi_tlb_fns)
|
||||
.long v7wbi_flush_user_tlb_range
|
||||
.long v7wbi_flush_kern_tlb_range
|
||||
ALT_SMP(.long v7wbi_tlb_flags_smp)
|
||||
ALT_UP(.long v7wbi_tlb_flags_up)
|
||||
.size v7wbi_tlb_fns, . - v7wbi_tlb_fns
|
||||
/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */
|
||||
define_tlb_functions v7wbi, v7wbi_tlb_flags_up, flags_smp=v7wbi_tlb_flags_smp
|
||||
|
@ -582,7 +582,6 @@ static int __init vfp_init(void)
|
||||
elf_hwcap |= HWCAP_VFPv3D16;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_NEON
|
||||
/*
|
||||
* Check for the presence of the Advanced SIMD
|
||||
* load/store instructions, integer and single
|
||||
@ -590,10 +589,13 @@ static int __init vfp_init(void)
|
||||
* for NEON if the hardware has the MVFR registers.
|
||||
*/
|
||||
if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) {
|
||||
#ifdef CONFIG_NEON
|
||||
if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100)
|
||||
elf_hwcap |= HWCAP_NEON;
|
||||
}
|
||||
#endif
|
||||
if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000)
|
||||
elf_hwcap |= HWCAP_VFPv4;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user