1*43f5f014SHyok S. Choi/* 2*43f5f014SHyok S. Choi * linux/arch/arm/mm/proc-arm9tdmi.S: utility functions for ARM9TDMI 3*43f5f014SHyok S. Choi * 4*43f5f014SHyok S. Choi * Copyright (C) 2003-2006 Hyok S. Choi <hyok.choi@samsung.com> 5*43f5f014SHyok S. Choi * 6*43f5f014SHyok S. Choi * This program is free software; you can redistribute it and/or modify 7*43f5f014SHyok S. Choi * it under the terms of the GNU General Public License version 2 as 8*43f5f014SHyok S. Choi * published by the Free Software Foundation. 9*43f5f014SHyok S. Choi * 10*43f5f014SHyok S. Choi */ 11*43f5f014SHyok S. Choi#include <linux/linkage.h> 12*43f5f014SHyok S. Choi#include <linux/init.h> 13*43f5f014SHyok S. Choi#include <asm/assembler.h> 14*43f5f014SHyok S. Choi#include <asm/asm-offsets.h> 15*43f5f014SHyok S. Choi#include <asm/pgtable-hwdef.h> 16*43f5f014SHyok S. Choi#include <asm/pgtable.h> 17*43f5f014SHyok S. Choi#include <asm/procinfo.h> 18*43f5f014SHyok S. Choi#include <asm/ptrace.h> 19*43f5f014SHyok S. Choi 20*43f5f014SHyok S. Choi .text 21*43f5f014SHyok S. Choi/* 22*43f5f014SHyok S. Choi * cpu_arm9tdmi_proc_init() 23*43f5f014SHyok S. Choi * cpu_arm9tdmi_do_idle() 24*43f5f014SHyok S. Choi * cpu_arm9tdmi_dcache_clean_area() 25*43f5f014SHyok S. Choi * cpu_arm9tdmi_switch_mm() 26*43f5f014SHyok S. Choi * 27*43f5f014SHyok S. Choi * These are not required. 28*43f5f014SHyok S. Choi */ 29*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_proc_init) 30*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_do_idle) 31*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_dcache_clean_area) 32*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_switch_mm) 33*43f5f014SHyok S. Choi mov pc, lr 34*43f5f014SHyok S. Choi 35*43f5f014SHyok S. Choi/* 36*43f5f014SHyok S. Choi * cpu_arm9tdmi_proc_fin() 37*43f5f014SHyok S. Choi */ 38*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_proc_fin) 39*43f5f014SHyok S. Choi mov r0, #PSR_F_BIT | PSR_I_BIT | SVC_MODE 40*43f5f014SHyok S. Choi msr cpsr_c, r0 41*43f5f014SHyok S. Choi mov pc, lr 42*43f5f014SHyok S. Choi 43*43f5f014SHyok S. Choi/* 44*43f5f014SHyok S. Choi * Function: cpu_arm9tdmi_reset(loc) 45*43f5f014SHyok S. Choi * Params : loc(r0) address to jump to 46*43f5f014SHyok S. Choi * Purpose : Sets up everything for a reset and jump to the location for soft reset. 47*43f5f014SHyok S. Choi */ 48*43f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_reset) 49*43f5f014SHyok S. Choi mov pc, r0 50*43f5f014SHyok S. Choi 51*43f5f014SHyok S. Choi __INIT 52*43f5f014SHyok S. Choi 53*43f5f014SHyok S. Choi .type __arm9tdmi_setup, #function 54*43f5f014SHyok S. Choi__arm9tdmi_setup: 55*43f5f014SHyok S. Choi mov pc, lr 56*43f5f014SHyok S. Choi .size __arm9tdmi_setup, . - __arm9tdmi_setup 57*43f5f014SHyok S. Choi 58*43f5f014SHyok S. Choi __INITDATA 59*43f5f014SHyok S. Choi 60*43f5f014SHyok S. Choi/* 61*43f5f014SHyok S. Choi * Purpose : Function pointers used to access above functions - all calls 62*43f5f014SHyok S. Choi * come through these 63*43f5f014SHyok S. Choi */ 64*43f5f014SHyok S. Choi .type arm9tdmi_processor_functions, #object 65*43f5f014SHyok S. ChoiENTRY(arm9tdmi_processor_functions) 66*43f5f014SHyok S. Choi .word v4t_early_abort 67*43f5f014SHyok S. Choi .word cpu_arm9tdmi_proc_init 68*43f5f014SHyok S. Choi .word cpu_arm9tdmi_proc_fin 69*43f5f014SHyok S. Choi .word cpu_arm9tdmi_reset 70*43f5f014SHyok S. Choi .word cpu_arm9tdmi_do_idle 71*43f5f014SHyok S. Choi .word cpu_arm9tdmi_dcache_clean_area 72*43f5f014SHyok S. Choi .word cpu_arm9tdmi_switch_mm 73*43f5f014SHyok S. Choi .word 0 @ cpu_*_set_pte 74*43f5f014SHyok S. Choi .size arm9tdmi_processor_functions, . - arm9tdmi_processor_functions 75*43f5f014SHyok S. Choi 76*43f5f014SHyok S. Choi .section ".rodata" 77*43f5f014SHyok S. Choi 78*43f5f014SHyok S. Choi .type cpu_arch_name, #object 79*43f5f014SHyok S. Choicpu_arch_name: 80*43f5f014SHyok S. Choi .asciz "armv4t" 81*43f5f014SHyok S. Choi .size cpu_arch_name, . - cpu_arch_name 82*43f5f014SHyok S. Choi 83*43f5f014SHyok S. Choi .type cpu_elf_name, #object 84*43f5f014SHyok S. Choicpu_elf_name: 85*43f5f014SHyok S. Choi .asciz "v4" 86*43f5f014SHyok S. Choi .size cpu_elf_name, . - cpu_elf_name 87*43f5f014SHyok S. Choi 88*43f5f014SHyok S. Choi .type cpu_arm9tdmi_name, #object 89*43f5f014SHyok S. Choicpu_arm9tdmi_name: 90*43f5f014SHyok S. Choi .asciz "ARM9TDMI" 91*43f5f014SHyok S. Choi .size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name 92*43f5f014SHyok S. Choi 93*43f5f014SHyok S. Choi .type cpu_p2001_name, #object 94*43f5f014SHyok S. Choicpu_p2001_name: 95*43f5f014SHyok S. Choi .asciz "P2001" 96*43f5f014SHyok S. Choi .size cpu_p2001_name, . - cpu_p2001_name 97*43f5f014SHyok S. Choi 98*43f5f014SHyok S. Choi .align 99*43f5f014SHyok S. Choi 100*43f5f014SHyok S. Choi .section ".proc.info.init", #alloc, #execinstr 101*43f5f014SHyok S. Choi 102*43f5f014SHyok S. Choi .type __arm9tdmi_proc_info, #object 103*43f5f014SHyok S. Choi__arm9tdmi_proc_info: 104*43f5f014SHyok S. Choi .long 0x41009900 105*43f5f014SHyok S. Choi .long 0xfff8ff00 106*43f5f014SHyok S. Choi .long 0 107*43f5f014SHyok S. Choi .long 0 108*43f5f014SHyok S. Choi b __arm9tdmi_setup 109*43f5f014SHyok S. Choi .long cpu_arch_name 110*43f5f014SHyok S. Choi .long cpu_elf_name 111*43f5f014SHyok S. Choi .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 112*43f5f014SHyok S. Choi .long cpu_arm9tdmi_name 113*43f5f014SHyok S. Choi .long arm9tdmi_processor_functions 114*43f5f014SHyok S. Choi .long 0 115*43f5f014SHyok S. Choi .long 0 116*43f5f014SHyok S. Choi .long v4_cache_fns 117*43f5f014SHyok S. Choi .size __arm9tdmi_proc_info, . - __arm9dmi_proc_info 118*43f5f014SHyok S. Choi 119*43f5f014SHyok S. Choi .type __p2001_proc_info, #object 120*43f5f014SHyok S. Choi__p2001_proc_info: 121*43f5f014SHyok S. Choi .long 0x41029000 122*43f5f014SHyok S. Choi .long 0xffffffff 123*43f5f014SHyok S. Choi .long 0 124*43f5f014SHyok S. Choi .long 0 125*43f5f014SHyok S. Choi b __arm9tdmi_setup 126*43f5f014SHyok S. Choi .long cpu_arch_name 127*43f5f014SHyok S. Choi .long cpu_elf_name 128*43f5f014SHyok S. Choi .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 129*43f5f014SHyok S. Choi .long cpu_p2001_name 130*43f5f014SHyok S. Choi .long arm9tdmi_processor_functions 131*43f5f014SHyok S. Choi .long 0 132*43f5f014SHyok S. Choi .long 0 133*43f5f014SHyok S. Choi .long v4_cache_fns 134*43f5f014SHyok S. Choi .size __p2001_proc_info, . - __p2001_proc_info 135