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 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 legacy_pabort 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