aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Austin <jonathan.austin@arm.com>2016-08-30 12:32:42 -0400
committerRussell King <rmk+kernel@armlinux.org.uk>2016-09-06 10:51:08 -0400
commitc3a6bcbe6a9e7e0d66c279e4a47aa07327040b38 (patch)
treed2e6072ebbd02042ae29eeefe7f4e263698d3add
parentbc0ee9d24ad21a5c2b5944f66623a02e9c8831aa (diff)
ARM: 8608/1: V7M: Indirect proc_info construction for V7M CPUs
This patch copies the method used for V7A/R CPUs to specify differing processor info for different cores. This patch differentiates Cortex-M3 and Cortex-M4 and leaves a fallback case for any other V7M processors. Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> Tested-by: Andras Szemzo <sza@esh.hu> Tested-by: Joachim Eastwood <manabian@gmail.com> Tested-by: Alexandre TORGUE <alexandre.torgue@st.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mm/proc-v7m.S46
1 files changed, 35 insertions, 11 deletions
diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S
index 11f5816e2680..796a9836cfdb 100644
--- a/arch/arm/mm/proc-v7m.S
+++ b/arch/arm/mm/proc-v7m.S
@@ -132,6 +132,40 @@ ENDPROC(__v7m_setup)
132 132
133 .section ".proc.info.init", #alloc 133 .section ".proc.info.init", #alloc
134 134
135.macro __v7m_proc name, initfunc, cache_fns = nop_cache_fns, hwcaps = 0, proc_fns = v7m_processor_functions
136 .long 0 /* proc_info_list.__cpu_mm_mmu_flags */
137 .long 0 /* proc_info_list.__cpu_io_mmu_flags */
138 initfn \initfunc, \name
139 .long cpu_arch_name
140 .long cpu_elf_name
141 .long HWCAP_HALF | HWCAP_THUMB | HWCAP_FAST_MULT | \hwcaps
142 .long cpu_v7m_name
143 .long \proc_fns
144 .long 0 /* proc_info_list.tlb */
145 .long 0 /* proc_info_list.user */
146 .long \cache_fns
147.endm
148
149 /*
150 * Match ARM Cortex-M4 processor.
151 */
152 .type __v7m_cm4_proc_info, #object
153__v7m_cm4_proc_info:
154 .long 0x410fc240 /* ARM Cortex-M4 0xC24 */
155 .long 0xff0ffff0 /* Mask off revision, patch release */
156 __v7m_proc __v7m_cm4_proc_info, __v7m_setup, hwcaps = HWCAP_EDSP
157 .size __v7m_cm4_proc_info, . - __v7m_cm4_proc_info
158
159 /*
160 * Match ARM Cortex-M3 processor.
161 */
162 .type __v7m_cm3_proc_info, #object
163__v7m_cm3_proc_info:
164 .long 0x410fc230 /* ARM Cortex-M3 0xC23 */
165 .long 0xff0ffff0 /* Mask off revision, patch release */
166 __v7m_proc __v7m_cm3_proc_info, __v7m_setup
167 .size __v7m_cm3_proc_info, . - __v7m_cm3_proc_info
168
135 /* 169 /*
136 * Match any ARMv7-M processor core. 170 * Match any ARMv7-M processor core.
137 */ 171 */
@@ -139,16 +173,6 @@ ENDPROC(__v7m_setup)
139__v7m_proc_info: 173__v7m_proc_info:
140 .long 0x000f0000 @ Required ID value 174 .long 0x000f0000 @ Required ID value
141 .long 0x000f0000 @ Mask for ID 175 .long 0x000f0000 @ Mask for ID
142 .long 0 @ proc_info_list.__cpu_mm_mmu_flags 176 __v7m_proc __v7m_proc_info, __v7m_setup
143 .long 0 @ proc_info_list.__cpu_io_mmu_flags
144 initfn __v7m_setup, __v7m_proc_info @ proc_info_list.__cpu_flush
145 .long cpu_arch_name
146 .long cpu_elf_name
147 .long HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT
148 .long cpu_v7m_name
149 .long v7m_processor_functions @ proc_info_list.proc
150 .long 0 @ proc_info_list.tlb
151 .long 0 @ proc_info_list.user
152 .long nop_cache_fns @ proc_info_list.cache
153 .size __v7m_proc_info, . - __v7m_proc_info 177 .size __v7m_proc_info, . - __v7m_proc_info
154 178