xref: /openbmc/linux/arch/arm/mm/proc-arm9tdmi.S (revision 5ec9407dd1196daaf12b427b351e2cd62d2a16a7)
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