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, . - __arm7dmi_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