Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/include/asm-arm/cpu-multi32.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 | #include <asm/page.h> | |
11 | ||
12 | struct mm_struct; | |
13 | ||
14 | /* | |
15 | * Don't change this structure - ASM code | |
16 | * relies on it. | |
17 | */ | |
18 | extern struct processor { | |
19 | /* MISC | |
20 | * get data abort address/flags | |
21 | */ | |
22 | void (*_data_abort)(unsigned long pc); | |
23 | /* | |
24 | * Set up any processor specifics | |
25 | */ | |
26 | void (*_proc_init)(void); | |
27 | /* | |
28 | * Disable any processor specifics | |
29 | */ | |
30 | void (*_proc_fin)(void); | |
31 | /* | |
32 | * Special stuff for a reset | |
33 | */ | |
33215652 | 34 | void (*reset)(unsigned long addr) __attribute__((noreturn)); |
1da177e4 LT |
35 | /* |
36 | * Idle the processor | |
37 | */ | |
38 | int (*_do_idle)(void); | |
39 | /* | |
40 | * Processor architecture specific | |
41 | */ | |
42 | /* | |
43 | * clean a virtual address range from the | |
44 | * D-cache without flushing the cache. | |
45 | */ | |
46 | void (*dcache_clean_area)(void *addr, int size); | |
47 | ||
48 | /* | |
49 | * Set the page table | |
50 | */ | |
51 | void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); | |
52 | /* | |
53 | * Set a PTE | |
54 | */ | |
55 | void (*set_pte)(pte_t *ptep, pte_t pte); | |
56 | } processor; | |
57 | ||
58 | #define cpu_proc_init() processor._proc_init() | |
59 | #define cpu_proc_fin() processor._proc_fin() | |
60 | #define cpu_reset(addr) processor.reset(addr) | |
61 | #define cpu_do_idle() processor._do_idle() | |
62 | #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz) | |
63 | #define cpu_set_pte(ptep, pte) processor.set_pte(ptep, pte) | |
64 | #define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm) |