Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
cb5fd904
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
cb5fd904
编写于
7月 08, 2011
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-rmk' of
git://linux-arm.org/linux-2.6-wd
into devel-stable
上级
2ff07209
f4daf06f
变更
46
隐藏空白更改
内联
并排
Showing
46 changed file
with
913 addition
and
2053 deletion
+913
-2053
arch/arm/include/asm/assembler.h
arch/arm/include/asm/assembler.h
+9
-0
arch/arm/include/asm/hwcap.h
arch/arm/include/asm/hwcap.h
+20
-16
arch/arm/include/asm/perf_event.h
arch/arm/include/asm/perf_event.h
+2
-0
arch/arm/kernel/perf_event.c
arch/arm/kernel/perf_event.c
+6
-0
arch/arm/kernel/perf_event_v7.c
arch/arm/kernel/perf_event_v7.c
+324
-20
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+4
-0
arch/arm/mm/cache-fa.S
arch/arm/mm/cache-fa.S
+2
-13
arch/arm/mm/cache-v3.S
arch/arm/mm/cache-v3.S
+2
-13
arch/arm/mm/cache-v4.S
arch/arm/mm/cache-v4.S
+2
-13
arch/arm/mm/cache-v4wb.S
arch/arm/mm/cache-v4wb.S
+2
-13
arch/arm/mm/cache-v4wt.S
arch/arm/mm/cache-v4wt.S
+2
-13
arch/arm/mm/cache-v6.S
arch/arm/mm/cache-v6.S
+2
-13
arch/arm/mm/cache-v7.S
arch/arm/mm/cache-v7.S
+2
-13
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020.S
+6
-39
arch/arm/mm/proc-arm1020e.S
arch/arm/mm/proc-arm1020e.S
+7
-45
arch/arm/mm/proc-arm1022.S
arch/arm/mm/proc-arm1022.S
+7
-45
arch/arm/mm/proc-arm1026.S
arch/arm/mm/proc-arm1026.S
+7
-46
arch/arm/mm/proc-arm6_7.S
arch/arm/mm/proc-arm6_7.S
+32
-134
arch/arm/mm/proc-arm720.S
arch/arm/mm/proc-arm720.S
+17
-68
arch/arm/mm/proc-arm740.S
arch/arm/mm/proc-arm740.S
+7
-35
arch/arm/mm/proc-arm7tdmi.S
arch/arm/mm/proc-arm7tdmi.S
+39
-177
arch/arm/mm/proc-arm920.S
arch/arm/mm/proc-arm920.S
+7
-46
arch/arm/mm/proc-arm922.S
arch/arm/mm/proc-arm922.S
+7
-46
arch/arm/mm/proc-arm925.S
arch/arm/mm/proc-arm925.S
+16
-72
arch/arm/mm/proc-arm926.S
arch/arm/mm/proc-arm926.S
+7
-44
arch/arm/mm/proc-arm940.S
arch/arm/mm/proc-arm940.S
+7
-44
arch/arm/mm/proc-arm946.S
arch/arm/mm/proc-arm946.S
+7
-46
arch/arm/mm/proc-arm9tdmi.S
arch/arm/mm/proc-arm9tdmi.S
+18
-60
arch/arm/mm/proc-fa526.S
arch/arm/mm/proc-fa526.S
+5
-33
arch/arm/mm/proc-feroceon.S
arch/arm/mm/proc-feroceon.S
+49
-153
arch/arm/mm/proc-macros.S
arch/arm/mm/proc-macros.S
+63
-0
arch/arm/mm/proc-mohawk.S
arch/arm/mm/proc-mohawk.S
+18
-43
arch/arm/mm/proc-sa110.S
arch/arm/mm/proc-sa110.S
+5
-34
arch/arm/mm/proc-sa1100.S
arch/arm/mm/proc-sa1100.S
+17
-67
arch/arm/mm/proc-v6.S
arch/arm/mm/proc-v6.S
+10
-29
arch/arm/mm/proc-v7.S
arch/arm/mm/proc-v7.S
+65
-71
arch/arm/mm/proc-xsc3.S
arch/arm/mm/proc-xsc3.S
+17
-73
arch/arm/mm/proc-xscale.S
arch/arm/mm/proc-xscale.S
+76
-431
arch/arm/mm/tlb-fa.S
arch/arm/mm/tlb-fa.S
+2
-6
arch/arm/mm/tlb-v3.S
arch/arm/mm/tlb-v3.S
+2
-6
arch/arm/mm/tlb-v4.S
arch/arm/mm/tlb-v4.S
+2
-6
arch/arm/mm/tlb-v4wb.S
arch/arm/mm/tlb-v4wb.S
+2
-6
arch/arm/mm/tlb-v4wbi.S
arch/arm/mm/tlb-v4wbi.S
+2
-6
arch/arm/mm/tlb-v6.S
arch/arm/mm/tlb-v6.S
+2
-6
arch/arm/mm/tlb-v7.S
arch/arm/mm/tlb-v7.S
+2
-7
arch/arm/vfp/vfpmodule.c
arch/arm/vfp/vfpmodule.c
+4
-2
未找到文件。
arch/arm/include/asm/assembler.h
浏览文件 @
cb5fd904
...
...
@@ -293,4 +293,13 @@
.
macro
ldrusr
,
reg
,
ptr
,
inc
,
cond
=
al
,
rept
=
1
,
abort
=
9001
f
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__ */
arch/arm/include/asm/hwcap.h
浏览文件 @
cb5fd904
...
...
@@ -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__)
/*
...
...
arch/arm/include/asm/perf_event.h
浏览文件 @
cb5fd904
...
...
@@ -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
,
};
...
...
arch/arm/kernel/perf_event.c
浏览文件 @
cb5fd904
...
...
@@ -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
)
{
...
...
arch/arm/kernel/perf_event_v7.c
浏览文件 @
cb5fd904
...
...
@@ -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 */
arch/arm/kernel/setup.c
浏览文件 @
cb5fd904
...
...
@@ -977,6 +977,10 @@ static const char *hwcap_str[] = {
"neon"
,
"vfpv3"
,
"vfpv3d16"
,
"tls"
,
"vfpv4"
,
"idiva"
,
"idivt"
,
NULL
};
...
...
arch/arm/mm/cache-fa.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v3.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v4.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v4wb.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v4wt.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v6.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/cache-v7.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-arm1020.S
浏览文件 @
cb5fd904
...
...
@@ -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
:
...
...
arch/arm/mm/proc-arm1020e.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm1022.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm1026.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm6_7.S
浏览文件 @
cb5fd904
...
...
@@ -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_function
s
.
long
\
cpu
_name
.
long
\
cpu_proc_func
s
.
long
v3_tlb_fns
.
long
v3_user_fns
.
long
v3_cache_fns
.
size
__arm6_proc_info
,
.
-
__arm6_proc_info
.
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
|
\
.
size
__
\
name
\
()
_proc_info
,
.
-
__
\
name
\
()
_proc_info
.
endm
arm67_proc_info
arm6
,
0x41560600
,
0xfffffff0
,
cpu_arm6_name
,
\
0
x00000c1e
,
__arm6_setup
,
arm6_processor_functions
arm67_proc_info
arm610
,
0x41560610
,
0xfffffff0
,
cpu_arm610_name
,
\
0
x00000c1e
,
__arm6_setup
,
arm6_processor_functions
arm67_proc_info
arm7
,
0x41007000
,
0xffffff00
,
cpu_arm7_name
,
\
0
x00000c1e
,
__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
arch/arm/mm/proc-arm720.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-arm740.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-arm7tdmi.S
浏览文件 @
cb5fd904
...
...
@@ -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
.
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
arm7tdmi_processor_functions
.
long
0
.
long
0
.
long
v4_cache_fns
.
size
__arm7tdmi_proc_info
,
.
-
__arm7tdmi_proc_info
.
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
.
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_
THUMB |
HWCAP_26BIT
.
long
cpu_s3c44b0x
_name
.
long
HWCAP_SWP
| HWCAP_
26BIT |
(
\
extra_hwcaps
)
.
long
\
cpu
_name
.
long
arm7tdmi_processor_functions
.
long
0
.
long
0
.
long
v4_cache_fns
.
size
__s3c44b0x_proc_info
,
.
-
__s3c44b0x_proc_info
.
size
__
\
name
\
()
_proc_info
,
.
-
__
\
name
\
()
_proc_info
.
endm
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
arch/arm/mm/proc-arm920.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm922.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm925.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-arm926.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm940.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm946.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-arm9tdmi.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-fa526.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-feroceon.S
浏览文件 @
cb5fd904
...
...
@@ -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
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
@
define
struct
cpu_cache_fns
(
see
<
asm
/
cacheflush
.
h
>
and
proc
-
macros
.
S
)
define_cache_functions
feroceon
.
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,93 +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
.
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_feroceon_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
#endif
.
type
__88fr531_proc_info
,#
object
__88fr531_proc_info
:
.
long
0x56055310
.
long
0xfffffff0
.
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
|
\
...
...
@@ -640,59 +573,22 @@ __88fr531_proc_info:
.
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
\
cpu
_name
.
long
feroceon_processor_functions
.
long
v4wbi_tlb_fns
.
long
feroceon_user_fns
.
long
feroceon_cache_fns
.
size
__88fr531_proc_info
,
.
-
__88fr531_proc_info
.
long
\
cache
.
size
__
\
name
\
()
_proc_info
,
.
-
__
\
name
\
()
_proc_info
.
endm
.
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
#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
__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
88
fr531
,
0x56055310
,
0xfffffff0
,
cpu_88fr531_name
,
\
cache
=
feroceon_cache_fns
feroceon_proc_info
88
fr571
,
0x56155710
,
0xfffffff0
,
cpu_88fr571_name
,
\
cache
=
feroceon_range_cache_fns
feroceon_proc_info
88
fr131
,
0x56251310
,
0xfffffff0
,
cpu_88fr131_name
,
\
cache
=
feroceon_range_cache_fns
arch/arm/mm/proc-macros.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/proc-mohawk.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-sa110.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-sa1100.S
浏览文件 @
cb5fd904
...
...
@@ -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
.
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
@
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
.
type
cpu_sa1100_name
,
#
object
cpu_sa1100_name
:
.
asciz
"StrongARM-1100"
.
size
cpu_sa1100_name
,
.
-
cpu_sa1100_name
.
section
".rodata"
.
type
cpu_sa1110_name
,
#
object
cpu_sa1110_name
:
.
asciz
"StrongARM-111
0"
.
size
cpu_sa1110_name
,
.
-
cpu_sa1110_name
string
cpu_arch_name
,
"armv4"
string
cpu_elf_name
,
"v4"
string
cpu_sa1100_name
,
"StrongARM-110
0"
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
arch/arm/mm/proc-v6.S
浏览文件 @
cb5fd904
...
...
@@ -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
...
...
arch/arm/mm/proc-v7.S
浏览文件 @
cb5fd904
...
...
@@ -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
1
f
__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
arch/arm/mm/proc-xsc3.S
浏览文件 @
cb5fd904
...
...
@@ -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
/*
Note
:
PXA935
changed
its
implementor
ID
from
Intel
to
Marvell
*/
xsc3_proc_info
xsc3
,
0x69056000
,
0xffffe000
.
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
/*
Note
:
PXA935
changed
its
implementor
ID
from
Intel
to
Marvell
*/
xsc3_proc_info
xsc3_pxa935
,
0x56056000
,
0xffffe000
arch/arm/mm/proc-xscale.S
浏览文件 @
cb5fd904
...
...
@@ -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
.
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_arch_name
,
"armv5te"
string
cpu_elf_name
,
"v5"
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
|
\
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_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
|
\
.
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_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
8032
x
,
0x69052420
,
0xfffff7e0
,
cpu_8032x_name
xscale_proc_info
8033
x
,
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
arch/arm/mm/tlb-fa.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v3.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v4.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v4wb.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v4wbi.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v6.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/mm/tlb-v7.S
浏览文件 @
cb5fd904
...
...
@@ -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
arch/arm/vfp/vfpmodule.c
浏览文件 @
cb5fd904
...
...
@@ -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
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录