xref: /openbmc/linux/arch/arm/mm/proc-arm7tdmi.S (revision 7fe2f639)
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/hwcap.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	pc, lr
40
41/*
42 * Function: cpu_arm7tdmi_reset(loc)
43 * Params  : loc(r0)	address to jump to
44 * Purpose : Sets up everything for a reset and jump to the location for soft reset.
45 */
46ENTRY(cpu_arm7tdmi_reset)
47		mov	pc, r0
48
49		__CPUINIT
50
51		.type	__arm7tdmi_setup, #function
52__arm7tdmi_setup:
53		mov	pc, lr
54		.size	__arm7tdmi_setup, . - __arm7tdmi_setup
55
56		__INITDATA
57
58/*
59 * Purpose : Function pointers used to access above functions - all calls
60 *	     come through these
61 */
62		.type	arm7tdmi_processor_functions, #object
63ENTRY(arm7tdmi_processor_functions)
64		.word	v4t_late_abort
65		.word	legacy_pabort
66		.word	cpu_arm7tdmi_proc_init
67		.word	cpu_arm7tdmi_proc_fin
68		.word	cpu_arm7tdmi_reset
69		.word	cpu_arm7tdmi_do_idle
70		.word	cpu_arm7tdmi_dcache_clean_area
71		.word	cpu_arm7tdmi_switch_mm
72		.word	0		@ cpu_*_set_pte
73		.word	0
74		.word	0
75		.word	0
76		.size	arm7tdmi_processor_functions, . - arm7tdmi_processor_functions
77
78		.section ".rodata"
79
80		.type	cpu_arch_name, #object
81cpu_arch_name:
82		.asciz	"armv4t"
83		.size	cpu_arch_name, . - cpu_arch_name
84
85		.type	cpu_elf_name, #object
86cpu_elf_name:
87		.asciz	"v4"
88		.size	cpu_elf_name, . - cpu_elf_name
89
90		.type	cpu_arm7tdmi_name, #object
91cpu_arm7tdmi_name:
92		.asciz	"ARM7TDMI"
93		.size	cpu_arm7tdmi_name, . - cpu_arm7tdmi_name
94
95		.type	cpu_triscenda7_name, #object
96cpu_triscenda7_name:
97		.asciz	"Triscend-A7x"
98		.size	cpu_triscenda7_name, . - cpu_triscenda7_name
99
100		.type	cpu_at91_name, #object
101cpu_at91_name:
102		.asciz	"Atmel-AT91M40xxx"
103		.size	cpu_at91_name, . - cpu_at91_name
104
105		.type	cpu_s3c3410_name, #object
106cpu_s3c3410_name:
107		.asciz	"Samsung-S3C3410"
108		.size	cpu_s3c3410_name, . - cpu_s3c3410_name
109
110		.type	cpu_s3c44b0x_name, #object
111cpu_s3c44b0x_name:
112		.asciz	"Samsung-S3C44B0x"
113		.size	cpu_s3c44b0x_name, . - cpu_s3c44b0x_name
114
115		.type	cpu_s3c4510b, #object
116cpu_s3c4510b_name:
117		.asciz	"Samsung-S3C4510B"
118		.size	cpu_s3c4510b_name, . - cpu_s3c4510b_name
119
120		.type	cpu_s3c4530_name, #object
121cpu_s3c4530_name:
122		.asciz	"Samsung-S3C4530"
123		.size	cpu_s3c4530_name, . - cpu_s3c4530_name
124
125		.type	cpu_netarm_name, #object
126cpu_netarm_name:
127		.asciz	"NETARM"
128		.size	cpu_netarm_name, . - cpu_netarm_name
129
130		.align
131
132		.section ".proc.info.init", #alloc, #execinstr
133
134		.type	__arm7tdmi_proc_info, #object
135__arm7tdmi_proc_info:
136		.long	0x41007700
137		.long	0xfff8ff00
138		.long	0
139		.long	0
140		b	__arm7tdmi_setup
141		.long	cpu_arch_name
142		.long	cpu_elf_name
143		.long	HWCAP_SWP | HWCAP_26BIT
144		.long	cpu_arm7tdmi_name
145		.long	arm7tdmi_processor_functions
146		.long	0
147		.long	0
148		.long	v4_cache_fns
149		.size	__arm7tdmi_proc_info, . - __arm7tdmi_proc_info
150
151		.type	__triscenda7_proc_info, #object
152__triscenda7_proc_info:
153		.long	0x0001d2ff
154		.long	0x0001ffff
155		.long	0
156		.long	0
157		b	__arm7tdmi_setup
158		.long	cpu_arch_name
159		.long	cpu_elf_name
160		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
161		.long	cpu_triscenda7_name
162		.long	arm7tdmi_processor_functions
163		.long	0
164		.long	0
165		.long	v4_cache_fns
166		.size	__triscenda7_proc_info, . - __triscenda7_proc_info
167
168		.type	__at91_proc_info, #object
169__at91_proc_info:
170		.long	0x14000040
171		.long	0xfff000e0
172		.long	0
173		.long	0
174		b	__arm7tdmi_setup
175		.long	cpu_arch_name
176		.long	cpu_elf_name
177		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
178		.long	cpu_at91_name
179		.long	arm7tdmi_processor_functions
180		.long	0
181		.long	0
182		.long	v4_cache_fns
183		.size	__at91_proc_info, . - __at91_proc_info
184
185		.type	__s3c4510b_proc_info, #object
186__s3c4510b_proc_info:
187		.long	0x36365000
188		.long	0xfffff000
189		.long	0
190		.long	0
191		b	__arm7tdmi_setup
192		.long	cpu_arch_name
193		.long	cpu_elf_name
194		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
195		.long	cpu_s3c4510b_name
196		.long	arm7tdmi_processor_functions
197		.long	0
198		.long	0
199		.long	v4_cache_fns
200		.size	__s3c4510b_proc_info, . - __s3c4510b_proc_info
201
202		.type	__s3c4530_proc_info, #object
203__s3c4530_proc_info:
204		.long	0x4c000000
205		.long	0xfff000e0
206		.long	0
207		.long	0
208		b	__arm7tdmi_setup
209		.long	cpu_arch_name
210		.long	cpu_elf_name
211		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
212		.long	cpu_s3c4530_name
213		.long	arm7tdmi_processor_functions
214		.long	0
215		.long	0
216		.long	v4_cache_fns
217		.size	__s3c4530_proc_info, . - __s3c4530_proc_info
218
219		.type	__s3c3410_proc_info, #object
220__s3c3410_proc_info:
221		.long	0x34100000
222		.long	0xffff0000
223		.long	0
224		.long	0
225		b	__arm7tdmi_setup
226		.long	cpu_arch_name
227		.long	cpu_elf_name
228		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
229		.long	cpu_s3c3410_name
230		.long	arm7tdmi_processor_functions
231		.long	0
232		.long	0
233		.long	v4_cache_fns
234		.size	__s3c3410_proc_info, . - __s3c3410_proc_info
235
236		.type	__s3c44b0x_proc_info, #object
237__s3c44b0x_proc_info:
238		.long	0x44b00000
239		.long	0xffff0000
240		.long	0
241		.long	0
242		b	__arm7tdmi_setup
243		.long	cpu_arch_name
244		.long	cpu_elf_name
245		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
246		.long	cpu_s3c44b0x_name
247		.long	arm7tdmi_processor_functions
248		.long	0
249		.long	0
250		.long	v4_cache_fns
251		.size	__s3c44b0x_proc_info, . - __s3c44b0x_proc_info
252