1/* 2 * linux/arch/arm/mm/proc-arm9tdmi.S: utility functions for ARM9TDMI 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_arm9tdmi_proc_init() 23 * cpu_arm9tdmi_do_idle() 24 * cpu_arm9tdmi_dcache_clean_area() 25 * cpu_arm9tdmi_switch_mm() 26 * 27 * These are not required. 28 */ 29ENTRY(cpu_arm9tdmi_proc_init) 30ENTRY(cpu_arm9tdmi_do_idle) 31ENTRY(cpu_arm9tdmi_dcache_clean_area) 32ENTRY(cpu_arm9tdmi_switch_mm) 33 mov pc, lr 34 35/* 36 * cpu_arm9tdmi_proc_fin() 37 */ 38ENTRY(cpu_arm9tdmi_proc_fin) 39 mov pc, lr 40 41/* 42 * Function: cpu_arm9tdmi_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_arm9tdmi_reset) 47 mov pc, r0 48 49 __CPUINIT 50 51 .type __arm9tdmi_setup, #function 52__arm9tdmi_setup: 53 mov pc, lr 54 .size __arm9tdmi_setup, . - __arm9tdmi_setup 55 56 __INITDATA 57 58/* 59 * Purpose : Function pointers used to access above functions - all calls 60 * come through these 61 */ 62 .type arm9tdmi_processor_functions, #object 63ENTRY(arm9tdmi_processor_functions) 64 .word nommu_early_abort 65 .word legacy_pabort 66 .word cpu_arm9tdmi_proc_init 67 .word cpu_arm9tdmi_proc_fin 68 .word cpu_arm9tdmi_reset 69 .word cpu_arm9tdmi_do_idle 70 .word cpu_arm9tdmi_dcache_clean_area 71 .word cpu_arm9tdmi_switch_mm 72 .word 0 @ cpu_*_set_pte 73 .word 0 74 .word 0 75 .word 0 76 .size arm9tdmi_processor_functions, . - arm9tdmi_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_arm9tdmi_name, #object 91cpu_arm9tdmi_name: 92 .asciz "ARM9TDMI" 93 .size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name 94 95 .type cpu_p2001_name, #object 96cpu_p2001_name: 97 .asciz "P2001" 98 .size cpu_p2001_name, . - cpu_p2001_name 99 100 .align 101 102 .section ".proc.info.init", #alloc, #execinstr 103 104 .type __arm9tdmi_proc_info, #object 105__arm9tdmi_proc_info: 106 .long 0x41009900 107 .long 0xfff8ff00 108 .long 0 109 .long 0 110 b __arm9tdmi_setup 111 .long cpu_arch_name 112 .long cpu_elf_name 113 .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 114 .long cpu_arm9tdmi_name 115 .long arm9tdmi_processor_functions 116 .long 0 117 .long 0 118 .long v4_cache_fns 119 .size __arm9tdmi_proc_info, . - __arm9tdmi_proc_info 120 121 .type __p2001_proc_info, #object 122__p2001_proc_info: 123 .long 0x41029000 124 .long 0xffffffff 125 .long 0 126 .long 0 127 b __arm9tdmi_setup 128 .long cpu_arch_name 129 .long cpu_elf_name 130 .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 131 .long cpu_p2001_name 132 .long arm9tdmi_processor_functions 133 .long 0 134 .long 0 135 .long v4_cache_fns 136 .size __p2001_proc_info, . - __p2001_proc_info 137