143f5f014SHyok S. Choi/* 243f5f014SHyok S. Choi * linux/arch/arm/mm/proc-arm9tdmi.S: utility functions for ARM9TDMI 343f5f014SHyok S. Choi * 443f5f014SHyok S. Choi * Copyright (C) 2003-2006 Hyok S. Choi <hyok.choi@samsung.com> 543f5f014SHyok S. Choi * 643f5f014SHyok S. Choi * This program is free software; you can redistribute it and/or modify 743f5f014SHyok S. Choi * it under the terms of the GNU General Public License version 2 as 843f5f014SHyok S. Choi * published by the Free Software Foundation. 943f5f014SHyok S. Choi * 1043f5f014SHyok S. Choi */ 1143f5f014SHyok S. Choi#include <linux/linkage.h> 1243f5f014SHyok S. Choi#include <linux/init.h> 1343f5f014SHyok S. Choi#include <asm/assembler.h> 1443f5f014SHyok S. Choi#include <asm/asm-offsets.h> 15*5ec9407dSRussell King#include <asm/hwcap.h> 1643f5f014SHyok S. Choi#include <asm/pgtable-hwdef.h> 1743f5f014SHyok S. Choi#include <asm/pgtable.h> 1843f5f014SHyok S. Choi#include <asm/ptrace.h> 1943f5f014SHyok S. Choi 2043f5f014SHyok S. Choi .text 2143f5f014SHyok S. Choi/* 2243f5f014SHyok S. Choi * cpu_arm9tdmi_proc_init() 2343f5f014SHyok S. Choi * cpu_arm9tdmi_do_idle() 2443f5f014SHyok S. Choi * cpu_arm9tdmi_dcache_clean_area() 2543f5f014SHyok S. Choi * cpu_arm9tdmi_switch_mm() 2643f5f014SHyok S. Choi * 2743f5f014SHyok S. Choi * These are not required. 2843f5f014SHyok S. Choi */ 2943f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_proc_init) 3043f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_do_idle) 3143f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_dcache_clean_area) 3243f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_switch_mm) 3343f5f014SHyok S. Choi mov pc, lr 3443f5f014SHyok S. Choi 3543f5f014SHyok S. Choi/* 3643f5f014SHyok S. Choi * cpu_arm9tdmi_proc_fin() 3743f5f014SHyok S. Choi */ 3843f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_proc_fin) 3943f5f014SHyok S. Choi mov r0, #PSR_F_BIT | PSR_I_BIT | SVC_MODE 4043f5f014SHyok S. Choi msr cpsr_c, r0 4143f5f014SHyok S. Choi mov pc, lr 4243f5f014SHyok S. Choi 4343f5f014SHyok S. Choi/* 4443f5f014SHyok S. Choi * Function: cpu_arm9tdmi_reset(loc) 4543f5f014SHyok S. Choi * Params : loc(r0) address to jump to 4643f5f014SHyok S. Choi * Purpose : Sets up everything for a reset and jump to the location for soft reset. 4743f5f014SHyok S. Choi */ 4843f5f014SHyok S. ChoiENTRY(cpu_arm9tdmi_reset) 4943f5f014SHyok S. Choi mov pc, r0 5043f5f014SHyok S. Choi 5143f5f014SHyok S. Choi __INIT 5243f5f014SHyok S. Choi 5343f5f014SHyok S. Choi .type __arm9tdmi_setup, #function 5443f5f014SHyok S. Choi__arm9tdmi_setup: 5543f5f014SHyok S. Choi mov pc, lr 5643f5f014SHyok S. Choi .size __arm9tdmi_setup, . - __arm9tdmi_setup 5743f5f014SHyok S. Choi 5843f5f014SHyok S. Choi __INITDATA 5943f5f014SHyok S. Choi 6043f5f014SHyok S. Choi/* 6143f5f014SHyok S. Choi * Purpose : Function pointers used to access above functions - all calls 6243f5f014SHyok S. Choi * come through these 6343f5f014SHyok S. Choi */ 6443f5f014SHyok S. Choi .type arm9tdmi_processor_functions, #object 6543f5f014SHyok S. ChoiENTRY(arm9tdmi_processor_functions) 660f45d7f3SHyok S. Choi .word nommu_early_abort 674a1fd556SCatalin Marinas .word pabort_noifar 6843f5f014SHyok S. Choi .word cpu_arm9tdmi_proc_init 6943f5f014SHyok S. Choi .word cpu_arm9tdmi_proc_fin 7043f5f014SHyok S. Choi .word cpu_arm9tdmi_reset 7143f5f014SHyok S. Choi .word cpu_arm9tdmi_do_idle 7243f5f014SHyok S. Choi .word cpu_arm9tdmi_dcache_clean_area 7343f5f014SHyok S. Choi .word cpu_arm9tdmi_switch_mm 7443f5f014SHyok S. Choi .word 0 @ cpu_*_set_pte 7543f5f014SHyok S. Choi .size arm9tdmi_processor_functions, . - arm9tdmi_processor_functions 7643f5f014SHyok S. Choi 7743f5f014SHyok S. Choi .section ".rodata" 7843f5f014SHyok S. Choi 7943f5f014SHyok S. Choi .type cpu_arch_name, #object 8043f5f014SHyok S. Choicpu_arch_name: 8143f5f014SHyok S. Choi .asciz "armv4t" 8243f5f014SHyok S. Choi .size cpu_arch_name, . - cpu_arch_name 8343f5f014SHyok S. Choi 8443f5f014SHyok S. Choi .type cpu_elf_name, #object 8543f5f014SHyok S. Choicpu_elf_name: 8643f5f014SHyok S. Choi .asciz "v4" 8743f5f014SHyok S. Choi .size cpu_elf_name, . - cpu_elf_name 8843f5f014SHyok S. Choi 8943f5f014SHyok S. Choi .type cpu_arm9tdmi_name, #object 9043f5f014SHyok S. Choicpu_arm9tdmi_name: 9143f5f014SHyok S. Choi .asciz "ARM9TDMI" 9243f5f014SHyok S. Choi .size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name 9343f5f014SHyok S. Choi 9443f5f014SHyok S. Choi .type cpu_p2001_name, #object 9543f5f014SHyok S. Choicpu_p2001_name: 9643f5f014SHyok S. Choi .asciz "P2001" 9743f5f014SHyok S. Choi .size cpu_p2001_name, . - cpu_p2001_name 9843f5f014SHyok S. Choi 9943f5f014SHyok S. Choi .align 10043f5f014SHyok S. Choi 10143f5f014SHyok S. Choi .section ".proc.info.init", #alloc, #execinstr 10243f5f014SHyok S. Choi 10343f5f014SHyok S. Choi .type __arm9tdmi_proc_info, #object 10443f5f014SHyok S. Choi__arm9tdmi_proc_info: 10543f5f014SHyok S. Choi .long 0x41009900 10643f5f014SHyok S. Choi .long 0xfff8ff00 10743f5f014SHyok S. Choi .long 0 10843f5f014SHyok S. Choi .long 0 10943f5f014SHyok S. Choi b __arm9tdmi_setup 11043f5f014SHyok S. Choi .long cpu_arch_name 11143f5f014SHyok S. Choi .long cpu_elf_name 11243f5f014SHyok S. Choi .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 11343f5f014SHyok S. Choi .long cpu_arm9tdmi_name 11443f5f014SHyok S. Choi .long arm9tdmi_processor_functions 11543f5f014SHyok S. Choi .long 0 11643f5f014SHyok S. Choi .long 0 11743f5f014SHyok S. Choi .long v4_cache_fns 11843f5f014SHyok S. Choi .size __arm9tdmi_proc_info, . - __arm9dmi_proc_info 11943f5f014SHyok S. Choi 12043f5f014SHyok S. Choi .type __p2001_proc_info, #object 12143f5f014SHyok S. Choi__p2001_proc_info: 12243f5f014SHyok S. Choi .long 0x41029000 12343f5f014SHyok S. Choi .long 0xffffffff 12443f5f014SHyok S. Choi .long 0 12543f5f014SHyok S. Choi .long 0 12643f5f014SHyok S. Choi b __arm9tdmi_setup 12743f5f014SHyok S. Choi .long cpu_arch_name 12843f5f014SHyok S. Choi .long cpu_elf_name 12943f5f014SHyok S. Choi .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT 13043f5f014SHyok S. Choi .long cpu_p2001_name 13143f5f014SHyok S. Choi .long arm9tdmi_processor_functions 13243f5f014SHyok S. Choi .long 0 13343f5f014SHyok S. Choi .long 0 13443f5f014SHyok S. Choi .long v4_cache_fns 13543f5f014SHyok S. Choi .size __p2001_proc_info, . - __p2001_proc_info 136