xref: /openbmc/linux/arch/arm/mm/proc-arm7tdmi.S (revision 22246614)
1/*
2 *  linux/arch/arm/mm/proc-arm7tdmi.S: utility functions for ARM7TDMI
3 *
4 *  Copyright (C) 2003-2006 Hyok S. Choi <hyok.choi@samsung.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11#include <linux/linkage.h>
12#include <linux/init.h>
13#include <asm/assembler.h>
14#include <asm/asm-offsets.h>
15#include <asm/elf.h>
16#include <asm/pgtable-hwdef.h>
17#include <asm/pgtable.h>
18#include <asm/ptrace.h>
19
20	.text
21/*
22 * cpu_arm7tdmi_proc_init()
23 * cpu_arm7tdmi_do_idle()
24 * cpu_arm7tdmi_dcache_clean_area()
25 * cpu_arm7tdmi_switch_mm()
26 *
27 * These are not required.
28 */
29ENTRY(cpu_arm7tdmi_proc_init)
30ENTRY(cpu_arm7tdmi_do_idle)
31ENTRY(cpu_arm7tdmi_dcache_clean_area)
32ENTRY(cpu_arm7tdmi_switch_mm)
33		mov	pc, lr
34
35/*
36 * cpu_arm7tdmi_proc_fin()
37 */
38ENTRY(cpu_arm7tdmi_proc_fin)
39		mov	r0, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
40		msr	cpsr_c, r0
41		mov	pc, lr
42
43/*
44 * Function: cpu_arm7tdmi_reset(loc)
45 * Params  : loc(r0)	address to jump to
46 * Purpose : Sets up everything for a reset and jump to the location for soft reset.
47 */
48ENTRY(cpu_arm7tdmi_reset)
49		mov	pc, r0
50
51		__INIT
52
53		.type	__arm7tdmi_setup, #function
54__arm7tdmi_setup:
55		mov	pc, lr
56		.size	__arm7tdmi_setup, . - __arm7tdmi_setup
57
58		__INITDATA
59
60/*
61 * Purpose : Function pointers used to access above functions - all calls
62 *	     come through these
63 */
64		.type	arm7tdmi_processor_functions, #object
65ENTRY(arm7tdmi_processor_functions)
66		.word	v4t_late_abort
67		.word	pabort_noifar
68		.word	cpu_arm7tdmi_proc_init
69		.word	cpu_arm7tdmi_proc_fin
70		.word	cpu_arm7tdmi_reset
71		.word	cpu_arm7tdmi_do_idle
72		.word	cpu_arm7tdmi_dcache_clean_area
73		.word	cpu_arm7tdmi_switch_mm
74		.word	0		@ cpu_*_set_pte
75		.size	arm7tdmi_processor_functions, . - arm7tdmi_processor_functions
76
77		.section ".rodata"
78
79		.type	cpu_arch_name, #object
80cpu_arch_name:
81		.asciz	"armv4t"
82		.size	cpu_arch_name, . - cpu_arch_name
83
84		.type	cpu_elf_name, #object
85cpu_elf_name:
86		.asciz	"v4"
87		.size	cpu_elf_name, . - cpu_elf_name
88
89		.type	cpu_arm7tdmi_name, #object
90cpu_arm7tdmi_name:
91		.asciz	"ARM7TDMI"
92		.size	cpu_arm7tdmi_name, . - cpu_arm7tdmi_name
93
94		.type	cpu_triscenda7_name, #object
95cpu_triscenda7_name:
96		.asciz	"Triscend-A7x"
97		.size	cpu_triscenda7_name, . - cpu_triscenda7_name
98
99		.type	cpu_at91_name, #object
100cpu_at91_name:
101		.asciz	"Atmel-AT91M40xxx"
102		.size	cpu_at91_name, . - cpu_at91_name
103
104		.type	cpu_s3c3410_name, #object
105cpu_s3c3410_name:
106		.asciz	"Samsung-S3C3410"
107		.size	cpu_s3c3410_name, . - cpu_s3c3410_name
108
109		.type	cpu_s3c44b0x_name, #object
110cpu_s3c44b0x_name:
111		.asciz	"Samsung-S3C44B0x"
112		.size	cpu_s3c44b0x_name, . - cpu_s3c44b0x_name
113
114		.type	cpu_s3c4510b, #object
115cpu_s3c4510b_name:
116		.asciz	"Samsung-S3C4510B"
117		.size	cpu_s3c4510b_name, . - cpu_s3c4510b_name
118
119		.type	cpu_s3c4530_name, #object
120cpu_s3c4530_name:
121		.asciz	"Samsung-S3C4530"
122		.size	cpu_s3c4530_name, . - cpu_s3c4530_name
123
124		.type	cpu_netarm_name, #object
125cpu_netarm_name:
126		.asciz	"NETARM"
127		.size	cpu_netarm_name, . - cpu_netarm_name
128
129		.align
130
131		.section ".proc.info.init", #alloc, #execinstr
132
133		.type	__arm7tdmi_proc_info, #object
134__arm7tdmi_proc_info:
135		.long	0x41007700
136		.long	0xfff8ff00
137		.long	0
138		.long	0
139		b	__arm7tdmi_setup
140		.long	cpu_arch_name
141		.long	cpu_elf_name
142		.long	HWCAP_SWP | HWCAP_26BIT
143		.long	cpu_arm7tdmi_name
144		.long	arm7tdmi_processor_functions
145		.long	0
146		.long	0
147		.long	v4_cache_fns
148		.size	__arm7tdmi_proc_info, . - __arm7dmi_proc_info
149
150		.type	__triscenda7_proc_info, #object
151__triscenda7_proc_info:
152		.long	0x0001d2ff
153		.long	0x0001ffff
154		.long	0
155		.long	0
156		b	__arm7tdmi_setup
157		.long	cpu_arch_name
158		.long	cpu_elf_name
159		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
160		.long	cpu_triscenda7_name
161		.long	arm7tdmi_processor_functions
162		.long	0
163		.long	0
164		.long	v4_cache_fns
165		.size	__triscenda7_proc_info, . - __triscenda7_proc_info
166
167		.type	__at91_proc_info, #object
168__at91_proc_info:
169		.long	0x14000040
170		.long	0xfff000e0
171		.long	0
172		.long	0
173		b	__arm7tdmi_setup
174		.long	cpu_arch_name
175		.long	cpu_elf_name
176		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
177		.long	cpu_at91_name
178		.long	arm7tdmi_processor_functions
179		.long	0
180		.long	0
181		.long	v4_cache_fns
182		.size	__at91_proc_info, . - __at91_proc_info
183
184		.type	__s3c4510b_proc_info, #object
185__s3c4510b_proc_info:
186		.long	0x36365000
187		.long	0xfffff000
188		.long	0
189		.long	0
190		b	__arm7tdmi_setup
191		.long	cpu_arch_name
192		.long	cpu_elf_name
193		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
194		.long	cpu_s3c4510b_name
195		.long	arm7tdmi_processor_functions
196		.long	0
197		.long	0
198		.long	v4_cache_fns
199		.size	__s3c4510b_proc_info, . - __s3c4510b_proc_info
200
201		.type	__s3c4530_proc_info, #object
202__s3c4530_proc_info:
203		.long	0x4c000000
204		.long	0xfff000e0
205		.long	0
206		.long	0
207		b	__arm7tdmi_setup
208		.long	cpu_arch_name
209		.long	cpu_elf_name
210		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
211		.long	cpu_s3c4530_name
212		.long	arm7tdmi_processor_functions
213		.long	0
214		.long	0
215		.long	v4_cache_fns
216		.size	__s3c4530_proc_info, . - __s3c4530_proc_info
217
218		.type	__s3c3410_proc_info, #object
219__s3c3410_proc_info:
220		.long	0x34100000
221		.long	0xffff0000
222		.long	0
223		.long	0
224		b	__arm7tdmi_setup
225		.long	cpu_arch_name
226		.long	cpu_elf_name
227		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
228		.long	cpu_s3c3410_name
229		.long	arm7tdmi_processor_functions
230		.long	0
231		.long	0
232		.long	v4_cache_fns
233		.size	__s3c3410_proc_info, . - __s3c3410_proc_info
234
235		.type	__s3c44b0x_proc_info, #object
236__s3c44b0x_proc_info:
237		.long	0x44b00000
238		.long	0xffff0000
239		.long	0
240		.long	0
241		b	__arm7tdmi_setup
242		.long	cpu_arch_name
243		.long	cpu_elf_name
244		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
245		.long	cpu_s3c44b0x_name
246		.long	arm7tdmi_processor_functions
247		.long	0
248		.long	0
249		.long	v4_cache_fns
250		.size	__s3c44b0x_proc_info, . - __s3c44b0x_proc_info
251