1 /*
2  *  linux/include/asm-arm/cpu-multi26.h
3  *
4  *  Copyright (C) 2000 Russell King
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 #ifndef __ASSEMBLY__
11 
12 #include <asm/page.h>
13 
14 /* forward-declare task_struct */
15 struct task_struct;
16 
17 /*
18  * Don't change this structure - ASM code
19  * relies on it.
20  */
21 extern struct processor {
22 	/* check for any bugs */
23 	void (*_check_bugs)(void);
24 	/* Set up any processor specifics */
25 	void (*_proc_init)(void);
26 	/* Disable any processor specifics */
27 	void (*_proc_fin)(void);
28 	/* set the MEMC hardware mappings */
29 	void (*_set_pgd)(pgd_t *pgd);
30 	/* XCHG */
31 	unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr);
32 	unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr);
33 } processor;
34 
35 extern const struct processor arm2_processor_functions;
36 extern const struct processor arm250_processor_functions;
37 extern const struct processor arm3_processor_functions;
38 
39 #define cpu_check_bugs()			processor._check_bugs()
40 #define cpu_proc_init()				processor._proc_init()
41 #define cpu_proc_fin()				processor._proc_fin()
42 #define cpu_do_idle()				do { } while (0)
43 #define cpu_switch_mm(pgd,tsk)			processor._set_pgd(pgd)
44 #define cpu_xchg_1(x,ptr)			processor._xchg_1(x,ptr)
45 #define cpu_xchg_4(x,ptr)			processor._xchg_4(x,ptr)
46 
47 extern void cpu_memc_update_all(pgd_t *pgd);
48 extern void cpu_memc_update_entry(pgd_t *pgd, unsigned long phys_pte, unsigned long log_addr);
49 
50 #endif
51