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