Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[linux-2.6] / arch / arm / mm / proc-arm7tdmi.S
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  */
29 ENTRY(cpu_arm7tdmi_proc_init)
30 ENTRY(cpu_arm7tdmi_do_idle)
31 ENTRY(cpu_arm7tdmi_dcache_clean_area)
32 ENTRY(cpu_arm7tdmi_switch_mm)
33                 mov     pc, lr
34
35 /*
36  * cpu_arm7tdmi_proc_fin()
37  */
38 ENTRY(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  */
48 ENTRY(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
65 ENTRY(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
80 cpu_arch_name:
81                 .asciz  "armv4t"
82                 .size   cpu_arch_name, . - cpu_arch_name
83
84                 .type   cpu_elf_name, #object
85 cpu_elf_name:
86                 .asciz  "v4"
87                 .size   cpu_elf_name, . - cpu_elf_name
88
89                 .type   cpu_arm7tdmi_name, #object
90 cpu_arm7tdmi_name:
91                 .asciz  "ARM7TDMI"
92                 .size   cpu_arm7tdmi_name, . - cpu_arm7tdmi_name
93
94                 .type   cpu_triscenda7_name, #object
95 cpu_triscenda7_name:
96                 .asciz  "Triscend-A7x"
97                 .size   cpu_triscenda7_name, . - cpu_triscenda7_name
98
99                 .type   cpu_at91_name, #object
100 cpu_at91_name:
101                 .asciz  "Atmel-AT91M40xxx"
102                 .size   cpu_at91_name, . - cpu_at91_name
103
104                 .type   cpu_s3c3410_name, #object
105 cpu_s3c3410_name:
106                 .asciz  "Samsung-S3C3410"
107                 .size   cpu_s3c3410_name, . - cpu_s3c3410_name
108
109                 .type   cpu_s3c44b0x_name, #object
110 cpu_s3c44b0x_name:
111                 .asciz  "Samsung-S3C44B0x"
112                 .size   cpu_s3c44b0x_name, . - cpu_s3c44b0x_name
113
114                 .type   cpu_s3c4510b, #object
115 cpu_s3c4510b_name:
116                 .asciz  "Samsung-S3C4510B"
117                 .size   cpu_s3c4510b_name, . - cpu_s3c4510b_name
118
119                 .type   cpu_s3c4530_name, #object
120 cpu_s3c4530_name:
121                 .asciz  "Samsung-S3C4530"
122                 .size   cpu_s3c4530_name, . - cpu_s3c4530_name
123
124                 .type   cpu_netarm_name, #object
125 cpu_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