Home | History | Annotate | Download | only in asm-arm
      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