18
* Work out if we need multiple CPU support
24
* CPU_NAME - the prefix for CPU related functions
27
#ifdef CONFIG_CPU_ARM610
32
# define CPU_NAME cpu_arm6
36
#ifdef CONFIG_CPU_ARM7TDMI
41
# define CPU_NAME cpu_arm7tdmi
45
#ifdef CONFIG_CPU_ARM710
50
# define CPU_NAME cpu_arm7
54
#ifdef CONFIG_CPU_ARM720T
59
# define CPU_NAME cpu_arm720
63
#ifdef CONFIG_CPU_ARM740T
68
# define CPU_NAME cpu_arm740
72
#ifdef CONFIG_CPU_ARM9TDMI
77
# define CPU_NAME cpu_arm9tdmi
81
#ifdef CONFIG_CPU_ARM920T
86
# define CPU_NAME cpu_arm920
90
#ifdef CONFIG_CPU_ARM922T
95
# define CPU_NAME cpu_arm922
99
#ifdef CONFIG_CPU_FA526
104
# define CPU_NAME cpu_fa526
108
#ifdef CONFIG_CPU_ARM925T
113
# define CPU_NAME cpu_arm925
117
#ifdef CONFIG_CPU_ARM926T
122
# define CPU_NAME cpu_arm926
126
#ifdef CONFIG_CPU_ARM940T
131
# define CPU_NAME cpu_arm940
135
#ifdef CONFIG_CPU_ARM946E
140
# define CPU_NAME cpu_arm946
144
#ifdef CONFIG_CPU_SA110
149
# define CPU_NAME cpu_sa110
153
#ifdef CONFIG_CPU_SA1100
158
# define CPU_NAME cpu_sa1100
162
#ifdef CONFIG_CPU_ARM1020
167
# define CPU_NAME cpu_arm1020
171
#ifdef CONFIG_CPU_ARM1020E
176
# define CPU_NAME cpu_arm1020e
180
#ifdef CONFIG_CPU_ARM1022
185
# define CPU_NAME cpu_arm1022
189
#ifdef CONFIG_CPU_ARM1026
194
# define CPU_NAME cpu_arm1026
198
#ifdef CONFIG_CPU_XSCALE
203
# define CPU_NAME cpu_xscale
207
#ifdef CONFIG_CPU_XSC3
212
# define CPU_NAME cpu_xsc3
216
#ifdef CONFIG_CPU_MOHAWK
221
# define CPU_NAME cpu_mohawk
225
#ifdef CONFIG_CPU_FEROCEON
230
# define CPU_NAME cpu_feroceon
234
#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K)
239
# define CPU_NAME cpu_v6
248
# define CPU_NAME cpu_v7
16
#include <asm/glue-proc.h>
252
19
#ifndef __ASSEMBLY__
24
* Don't change this structure - ASM code relies on it.
26
extern struct processor {
28
* get data abort address/flags
30
void (*_data_abort)(unsigned long pc);
32
* Retrieve prefetch fault address
34
unsigned long (*_prefetch_abort)(unsigned long lr);
36
* Set up any processor specifics
38
void (*_proc_init)(void);
40
* Disable any processor specifics
42
void (*_proc_fin)(void);
44
* Special stuff for a reset
46
void (*reset)(unsigned long addr) __attribute__((noreturn));
50
int (*_do_idle)(void);
52
* Processor architecture specific
55
* clean a virtual address range from the
56
* D-cache without flushing the cache.
58
void (*dcache_clean_area)(void *addr, int size);
63
void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm);
65
* Set a possibly extended PTE. Non-extended PTEs should
68
void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext);
71
unsigned int suspend_size;
72
void (*do_suspend)(void *);
73
void (*do_resume)(void *);
255
#include <asm/cpu-single.h>
77
extern void cpu_proc_init(void);
78
extern void cpu_proc_fin(void);
79
extern int cpu_do_idle(void);
80
extern void cpu_dcache_clean_area(void *, int);
81
extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm);
82
extern void cpu_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
83
extern void cpu_reset(unsigned long addr) __attribute__((noreturn));
257
#include <asm/cpu-multi32.h>
85
#define cpu_proc_init() processor._proc_init()
86
#define cpu_proc_fin() processor._proc_fin()
87
#define cpu_reset(addr) processor.reset(addr)
88
#define cpu_do_idle() processor._do_idle()
89
#define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz)
90
#define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext)
91
#define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm)
94
extern void cpu_resume(void);
260
96
#include <asm/memory.h>