1 /* 2 * linux/include/asm-arm/proc-fns.h 3 * 4 * Copyright (C) 1997-1999 Russell King 5 * Copyright (C) 2000 Deep Blue Solutions Ltd 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 */ 11 #ifndef __ASM_PROCFNS_H 12 #define __ASM_PROCFNS_H 13 14 #ifdef __KERNEL__ 15 16 17 /* 18 * Work out if we need multiple CPU support 19 */ 20 #undef MULTI_CPU 21 #undef CPU_NAME 22 23 /* 24 * CPU_NAME - the prefix for CPU related functions 25 */ 26 27 #ifdef CONFIG_CPU_32 28 # ifdef CONFIG_CPU_ARM610 29 # ifdef CPU_NAME 30 # undef MULTI_CPU 31 # define MULTI_CPU 32 # else 33 # define CPU_NAME cpu_arm6 34 # endif 35 # endif 36 # ifdef CONFIG_CPU_ARM710 37 # ifdef CPU_NAME 38 # undef MULTI_CPU 39 # define MULTI_CPU 40 # else 41 # define CPU_NAME cpu_arm7 42 # endif 43 # endif 44 # ifdef CONFIG_CPU_ARM720T 45 # ifdef CPU_NAME 46 # undef MULTI_CPU 47 # define MULTI_CPU 48 # else 49 # define CPU_NAME cpu_arm720 50 # endif 51 # endif 52 # ifdef CONFIG_CPU_ARM920T 53 # ifdef CPU_NAME 54 # undef MULTI_CPU 55 # define MULTI_CPU 56 # else 57 # define CPU_NAME cpu_arm920 58 # endif 59 # endif 60 # ifdef CONFIG_CPU_ARM922T 61 # ifdef CPU_NAME 62 # undef MULTI_CPU 63 # define MULTI_CPU 64 # else 65 # define CPU_NAME cpu_arm922 66 # endif 67 # endif 68 # ifdef CONFIG_CPU_ARM925T 69 # ifdef CPU_NAME 70 # undef MULTI_CPU 71 # define MULTI_CPU 72 # else 73 # define CPU_NAME cpu_arm925 74 # endif 75 # endif 76 # ifdef CONFIG_CPU_ARM926T 77 # ifdef CPU_NAME 78 # undef MULTI_CPU 79 # define MULTI_CPU 80 # else 81 # define CPU_NAME cpu_arm926 82 # endif 83 # endif 84 # ifdef CONFIG_CPU_SA110 85 # ifdef CPU_NAME 86 # undef MULTI_CPU 87 # define MULTI_CPU 88 # else 89 # define CPU_NAME cpu_sa110 90 # endif 91 # endif 92 # ifdef CONFIG_CPU_SA1100 93 # ifdef CPU_NAME 94 # undef MULTI_CPU 95 # define MULTI_CPU 96 # else 97 # define CPU_NAME cpu_sa1100 98 # endif 99 # endif 100 # ifdef CONFIG_CPU_ARM1020 101 # ifdef CPU_NAME 102 # undef MULTI_CPU 103 # define MULTI_CPU 104 # else 105 # define CPU_NAME cpu_arm1020 106 # endif 107 # endif 108 # ifdef CONFIG_CPU_ARM1020E 109 # ifdef CPU_NAME 110 # undef MULTI_CPU 111 # define MULTI_CPU 112 # else 113 # define CPU_NAME cpu_arm1020e 114 # endif 115 # endif 116 # ifdef CONFIG_CPU_ARM1022 117 # ifdef CPU_NAME 118 # undef MULTI_CPU 119 # define MULTI_CPU 120 # else 121 # define CPU_NAME cpu_arm1022 122 # endif 123 # endif 124 # ifdef CONFIG_CPU_ARM1026 125 # ifdef CPU_NAME 126 # undef MULTI_CPU 127 # define MULTI_CPU 128 # else 129 # define CPU_NAME cpu_arm1026 130 # endif 131 # endif 132 # ifdef CONFIG_CPU_XSCALE 133 # ifdef CPU_NAME 134 # undef MULTI_CPU 135 # define MULTI_CPU 136 # else 137 # define CPU_NAME cpu_xscale 138 # endif 139 # endif 140 # ifdef CONFIG_CPU_XSC3 141 # ifdef CPU_NAME 142 # undef MULTI_CPU 143 # define MULTI_CPU 144 # else 145 # define CPU_NAME cpu_xsc3 146 # endif 147 # endif 148 # ifdef CONFIG_CPU_V6 149 # ifdef CPU_NAME 150 # undef MULTI_CPU 151 # define MULTI_CPU 152 # else 153 # define CPU_NAME cpu_v6 154 # endif 155 # endif 156 #endif 157 158 #ifndef __ASSEMBLY__ 159 160 #ifndef MULTI_CPU 161 #include "asm/cpu-single.h" 162 #else 163 #include "asm/cpu-multi32.h" 164 #endif 165 166 #include <asm/memory.h> 167 168 #ifdef CONFIG_MMU 169 170 #define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm) 171 172 #define cpu_get_pgd() \ 173 ({ \ 174 unsigned long pg; \ 175 __asm__("mrc p15, 0, %0, c2, c0, 0" \ 176 : "=r" (pg) : : "cc"); \ 177 pg &= ~0x3fff; \ 178 (pgd_t *)phys_to_virt(pg); \ 179 }) 180 181 #endif 182 183 #endif /* __ASSEMBLY__ */ 184 #endif /* __KERNEL__ */ 185 #endif /* __ASM_PROCFNS_H */ 186