Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: move cache/processor/fault glue to separate include files

This allows the cache/processor/fault glue to be more easily used
from assembler code. Tested on Assabet and Tegra 2.

Tested-by: Colin Cross <ccross@android.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

+646 -620
+2 -131
arch/arm/include/asm/cacheflush.h
··· 12 12 13 13 #include <linux/mm.h> 14 14 15 - #include <asm/glue.h> 15 + #include <asm/glue-cache.h> 16 16 #include <asm/shmparam.h> 17 17 #include <asm/cachetype.h> 18 18 #include <asm/outercache.h> 19 19 20 20 #define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT) 21 - 22 - /* 23 - * Cache Model 24 - * =========== 25 - */ 26 - #undef _CACHE 27 - #undef MULTI_CACHE 28 - 29 - #if defined(CONFIG_CPU_CACHE_V3) 30 - # ifdef _CACHE 31 - # define MULTI_CACHE 1 32 - # else 33 - # define _CACHE v3 34 - # endif 35 - #endif 36 - 37 - #if defined(CONFIG_CPU_CACHE_V4) 38 - # ifdef _CACHE 39 - # define MULTI_CACHE 1 40 - # else 41 - # define _CACHE v4 42 - # endif 43 - #endif 44 - 45 - #if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ 46 - defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) || \ 47 - defined(CONFIG_CPU_ARM1026) 48 - # define MULTI_CACHE 1 49 - #endif 50 - 51 - #if defined(CONFIG_CPU_FA526) 52 - # ifdef _CACHE 53 - # define MULTI_CACHE 1 54 - # else 55 - # define _CACHE fa 56 - # endif 57 - #endif 58 - 59 - #if defined(CONFIG_CPU_ARM926T) 60 - # ifdef _CACHE 61 - # define MULTI_CACHE 1 62 - # else 63 - # define _CACHE arm926 64 - # endif 65 - #endif 66 - 67 - #if defined(CONFIG_CPU_ARM940T) 68 - # ifdef _CACHE 69 - # define MULTI_CACHE 1 70 - # else 71 - # define _CACHE arm940 72 - # endif 73 - #endif 74 - 75 - #if defined(CONFIG_CPU_ARM946E) 76 - # ifdef _CACHE 77 - # define MULTI_CACHE 1 78 - # else 79 - # define _CACHE arm946 80 - # endif 81 - #endif 82 - 83 - #if defined(CONFIG_CPU_CACHE_V4WB) 84 - # ifdef _CACHE 85 - # define MULTI_CACHE 1 86 - # else 87 - # define _CACHE v4wb 88 - # endif 89 - #endif 90 - 91 - #if defined(CONFIG_CPU_XSCALE) 92 - # ifdef _CACHE 93 - # define MULTI_CACHE 1 94 - # else 95 - # define _CACHE xscale 96 - # endif 97 - #endif 98 - 99 - #if defined(CONFIG_CPU_XSC3) 100 - # ifdef _CACHE 101 - # define MULTI_CACHE 1 102 - # else 103 - # define _CACHE xsc3 104 - # endif 105 - #endif 106 - 107 - #if defined(CONFIG_CPU_MOHAWK) 108 - # ifdef _CACHE 109 - # define MULTI_CACHE 1 110 - # else 111 - # define _CACHE mohawk 112 - # endif 113 - #endif 114 - 115 - #if defined(CONFIG_CPU_FEROCEON) 116 - # define MULTI_CACHE 1 117 - #endif 118 - 119 - #if defined(CONFIG_CPU_V6) 120 - //# ifdef _CACHE 121 - # define MULTI_CACHE 1 122 - //# else 123 - //# define _CACHE v6 124 - //# endif 125 - #endif 126 - 127 - #if defined(CONFIG_CPU_V7) 128 - //# ifdef _CACHE 129 - # define MULTI_CACHE 1 130 - //# else 131 - //# define _CACHE v7 132 - //# endif 133 - #endif 134 - 135 - #if !defined(_CACHE) && !defined(MULTI_CACHE) 136 - #error Unknown cache maintainence model 137 - #endif 138 21 139 22 /* 140 23 * This flag is used to indicate that the page pointed to by a pte is clean ··· 132 249 * visible to the CPU. 133 250 */ 134 251 #define dmac_map_area cpu_cache.dma_map_area 135 - #define dmac_unmap_area cpu_cache.dma_unmap_area 252 + #define dmac_unmap_area cpu_cache.dma_unmap_area 136 253 #define dmac_flush_range cpu_cache.dma_flush_range 137 254 138 255 #else 139 - 140 - #define __cpuc_flush_icache_all __glue(_CACHE,_flush_icache_all) 141 - #define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all) 142 - #define __cpuc_flush_user_all __glue(_CACHE,_flush_user_cache_all) 143 - #define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range) 144 - #define __cpuc_coherent_kern_range __glue(_CACHE,_coherent_kern_range) 145 - #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range) 146 - #define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) 147 256 148 257 extern void __cpuc_flush_icache_all(void); 149 258 extern void __cpuc_flush_kern_all(void); ··· 151 276 * is visible to DMA, or data written by DMA to system memory is 152 277 * visible to the CPU. 153 278 */ 154 - #define dmac_map_area __glue(_CACHE,_dma_map_area) 155 - #define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) 156 - #define dmac_flush_range __glue(_CACHE,_dma_flush_range) 157 - 158 279 extern void dmac_map_area(const void *, size_t, int); 159 280 extern void dmac_unmap_area(const void *, size_t, int); 160 281 extern void dmac_flush_range(const void *, const void *);
-69
arch/arm/include/asm/cpu-multi32.h
··· 1 - /* 2 - * arch/arm/include/asm/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 - * Retrieve prefetch fault address 25 - */ 26 - unsigned long (*_prefetch_abort)(unsigned long lr); 27 - /* 28 - * Set up any processor specifics 29 - */ 30 - void (*_proc_init)(void); 31 - /* 32 - * Disable any processor specifics 33 - */ 34 - void (*_proc_fin)(void); 35 - /* 36 - * Special stuff for a reset 37 - */ 38 - void (*reset)(unsigned long addr) __attribute__((noreturn)); 39 - /* 40 - * Idle the processor 41 - */ 42 - int (*_do_idle)(void); 43 - /* 44 - * Processor architecture specific 45 - */ 46 - /* 47 - * clean a virtual address range from the 48 - * D-cache without flushing the cache. 49 - */ 50 - void (*dcache_clean_area)(void *addr, int size); 51 - 52 - /* 53 - * Set the page table 54 - */ 55 - void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); 56 - /* 57 - * Set a possibly extended PTE. Non-extended PTEs should 58 - * ignore 'ext'. 59 - */ 60 - void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext); 61 - } processor; 62 - 63 - #define cpu_proc_init() processor._proc_init() 64 - #define cpu_proc_fin() processor._proc_fin() 65 - #define cpu_reset(addr) processor.reset(addr) 66 - #define cpu_do_idle() processor._do_idle() 67 - #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz) 68 - #define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext) 69 - #define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm)
-44
arch/arm/include/asm/cpu-single.h
··· 1 - /* 2 - * arch/arm/include/asm/cpu-single.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 - /* 11 - * Single CPU 12 - */ 13 - #ifdef __STDC__ 14 - #define __catify_fn(name,x) name##x 15 - #else 16 - #define __catify_fn(name,x) name/**/x 17 - #endif 18 - #define __cpu_fn(name,x) __catify_fn(name,x) 19 - 20 - /* 21 - * If we are supporting multiple CPUs, then we must use a table of 22 - * function pointers for this lot. Otherwise, we can optimise the 23 - * table away. 24 - */ 25 - #define cpu_proc_init __cpu_fn(CPU_NAME,_proc_init) 26 - #define cpu_proc_fin __cpu_fn(CPU_NAME,_proc_fin) 27 - #define cpu_reset __cpu_fn(CPU_NAME,_reset) 28 - #define cpu_do_idle __cpu_fn(CPU_NAME,_do_idle) 29 - #define cpu_dcache_clean_area __cpu_fn(CPU_NAME,_dcache_clean_area) 30 - #define cpu_do_switch_mm __cpu_fn(CPU_NAME,_switch_mm) 31 - #define cpu_set_pte_ext __cpu_fn(CPU_NAME,_set_pte_ext) 32 - 33 - #include <asm/page.h> 34 - 35 - struct mm_struct; 36 - 37 - /* declare all the functions as extern */ 38 - extern void cpu_proc_init(void); 39 - extern void cpu_proc_fin(void); 40 - extern int cpu_do_idle(void); 41 - extern void cpu_dcache_clean_area(void *, int); 42 - extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); 43 - extern void cpu_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext); 44 - extern void cpu_reset(unsigned long addr) __attribute__((noreturn));
+146
arch/arm/include/asm/glue-cache.h
··· 1 + /* 2 + * arch/arm/include/asm/glue-cache.h 3 + * 4 + * Copyright (C) 1999-2002 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 ASM_GLUE_CACHE_H 11 + #define ASM_GLUE_CACHE_H 12 + 13 + #include <asm/glue.h> 14 + 15 + /* 16 + * Cache Model 17 + * =========== 18 + */ 19 + #undef _CACHE 20 + #undef MULTI_CACHE 21 + 22 + #if defined(CONFIG_CPU_CACHE_V3) 23 + # ifdef _CACHE 24 + # define MULTI_CACHE 1 25 + # else 26 + # define _CACHE v3 27 + # endif 28 + #endif 29 + 30 + #if defined(CONFIG_CPU_CACHE_V4) 31 + # ifdef _CACHE 32 + # define MULTI_CACHE 1 33 + # else 34 + # define _CACHE v4 35 + # endif 36 + #endif 37 + 38 + #if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ 39 + defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) || \ 40 + defined(CONFIG_CPU_ARM1026) 41 + # define MULTI_CACHE 1 42 + #endif 43 + 44 + #if defined(CONFIG_CPU_FA526) 45 + # ifdef _CACHE 46 + # define MULTI_CACHE 1 47 + # else 48 + # define _CACHE fa 49 + # endif 50 + #endif 51 + 52 + #if defined(CONFIG_CPU_ARM926T) 53 + # ifdef _CACHE 54 + # define MULTI_CACHE 1 55 + # else 56 + # define _CACHE arm926 57 + # endif 58 + #endif 59 + 60 + #if defined(CONFIG_CPU_ARM940T) 61 + # ifdef _CACHE 62 + # define MULTI_CACHE 1 63 + # else 64 + # define _CACHE arm940 65 + # endif 66 + #endif 67 + 68 + #if defined(CONFIG_CPU_ARM946E) 69 + # ifdef _CACHE 70 + # define MULTI_CACHE 1 71 + # else 72 + # define _CACHE arm946 73 + # endif 74 + #endif 75 + 76 + #if defined(CONFIG_CPU_CACHE_V4WB) 77 + # ifdef _CACHE 78 + # define MULTI_CACHE 1 79 + # else 80 + # define _CACHE v4wb 81 + # endif 82 + #endif 83 + 84 + #if defined(CONFIG_CPU_XSCALE) 85 + # ifdef _CACHE 86 + # define MULTI_CACHE 1 87 + # else 88 + # define _CACHE xscale 89 + # endif 90 + #endif 91 + 92 + #if defined(CONFIG_CPU_XSC3) 93 + # ifdef _CACHE 94 + # define MULTI_CACHE 1 95 + # else 96 + # define _CACHE xsc3 97 + # endif 98 + #endif 99 + 100 + #if defined(CONFIG_CPU_MOHAWK) 101 + # ifdef _CACHE 102 + # define MULTI_CACHE 1 103 + # else 104 + # define _CACHE mohawk 105 + # endif 106 + #endif 107 + 108 + #if defined(CONFIG_CPU_FEROCEON) 109 + # define MULTI_CACHE 1 110 + #endif 111 + 112 + #if defined(CONFIG_CPU_V6) 113 + //# ifdef _CACHE 114 + # define MULTI_CACHE 1 115 + //# else 116 + //# define _CACHE v6 117 + //# endif 118 + #endif 119 + 120 + #if defined(CONFIG_CPU_V7) 121 + //# ifdef _CACHE 122 + # define MULTI_CACHE 1 123 + //# else 124 + //# define _CACHE v7 125 + //# endif 126 + #endif 127 + 128 + #if !defined(_CACHE) && !defined(MULTI_CACHE) 129 + #error Unknown cache maintainence model 130 + #endif 131 + 132 + #ifndef MULTI_CACHE 133 + #define __cpuc_flush_icache_all __glue(_CACHE,_flush_icache_all) 134 + #define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all) 135 + #define __cpuc_flush_user_all __glue(_CACHE,_flush_user_cache_all) 136 + #define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range) 137 + #define __cpuc_coherent_kern_range __glue(_CACHE,_coherent_kern_range) 138 + #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range) 139 + #define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) 140 + 141 + #define dmac_map_area __glue(_CACHE,_dma_map_area) 142 + #define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) 143 + #define dmac_flush_range __glue(_CACHE,_dma_flush_range) 144 + #endif 145 + 146 + #endif
+110
arch/arm/include/asm/glue-df.h
··· 1 + /* 2 + * arch/arm/include/asm/glue-df.h 3 + * 4 + * Copyright (C) 1997-1999 Russell King 5 + * Copyright (C) 2000-2002 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_GLUE_DF_H 12 + #define ASM_GLUE_DF_H 13 + 14 + #include <asm/glue.h> 15 + 16 + /* 17 + * Data Abort Model 18 + * ================ 19 + * 20 + * We have the following to choose from: 21 + * arm6 - ARM6 style 22 + * arm7 - ARM7 style 23 + * v4_early - ARMv4 without Thumb early abort handler 24 + * v4t_late - ARMv4 with Thumb late abort handler 25 + * v4t_early - ARMv4 with Thumb early abort handler 26 + * v5tej_early - ARMv5 with Thumb and Java early abort handler 27 + * xscale - ARMv5 with Thumb with Xscale extensions 28 + * v6_early - ARMv6 generic early abort handler 29 + * v7_early - ARMv7 generic early abort handler 30 + */ 31 + #undef CPU_DABORT_HANDLER 32 + #undef MULTI_DABORT 33 + 34 + #if defined(CONFIG_CPU_ARM610) 35 + # ifdef CPU_DABORT_HANDLER 36 + # define MULTI_DABORT 1 37 + # else 38 + # define CPU_DABORT_HANDLER cpu_arm6_data_abort 39 + # endif 40 + #endif 41 + 42 + #if defined(CONFIG_CPU_ARM710) 43 + # ifdef CPU_DABORT_HANDLER 44 + # define MULTI_DABORT 1 45 + # else 46 + # define CPU_DABORT_HANDLER cpu_arm7_data_abort 47 + # endif 48 + #endif 49 + 50 + #ifdef CONFIG_CPU_ABRT_LV4T 51 + # ifdef CPU_DABORT_HANDLER 52 + # define MULTI_DABORT 1 53 + # else 54 + # define CPU_DABORT_HANDLER v4t_late_abort 55 + # endif 56 + #endif 57 + 58 + #ifdef CONFIG_CPU_ABRT_EV4 59 + # ifdef CPU_DABORT_HANDLER 60 + # define MULTI_DABORT 1 61 + # else 62 + # define CPU_DABORT_HANDLER v4_early_abort 63 + # endif 64 + #endif 65 + 66 + #ifdef CONFIG_CPU_ABRT_EV4T 67 + # ifdef CPU_DABORT_HANDLER 68 + # define MULTI_DABORT 1 69 + # else 70 + # define CPU_DABORT_HANDLER v4t_early_abort 71 + # endif 72 + #endif 73 + 74 + #ifdef CONFIG_CPU_ABRT_EV5TJ 75 + # ifdef CPU_DABORT_HANDLER 76 + # define MULTI_DABORT 1 77 + # else 78 + # define CPU_DABORT_HANDLER v5tj_early_abort 79 + # endif 80 + #endif 81 + 82 + #ifdef CONFIG_CPU_ABRT_EV5T 83 + # ifdef CPU_DABORT_HANDLER 84 + # define MULTI_DABORT 1 85 + # else 86 + # define CPU_DABORT_HANDLER v5t_early_abort 87 + # endif 88 + #endif 89 + 90 + #ifdef CONFIG_CPU_ABRT_EV6 91 + # ifdef CPU_DABORT_HANDLER 92 + # define MULTI_DABORT 1 93 + # else 94 + # define CPU_DABORT_HANDLER v6_early_abort 95 + # endif 96 + #endif 97 + 98 + #ifdef CONFIG_CPU_ABRT_EV7 99 + # ifdef CPU_DABORT_HANDLER 100 + # define MULTI_DABORT 1 101 + # else 102 + # define CPU_DABORT_HANDLER v7_early_abort 103 + # endif 104 + #endif 105 + 106 + #ifndef CPU_DABORT_HANDLER 107 + #error Unknown data abort handler type 108 + #endif 109 + 110 + #endif
+57
arch/arm/include/asm/glue-pf.h
··· 1 + /* 2 + * arch/arm/include/asm/glue-pf.h 3 + * 4 + * Copyright (C) 1997-1999 Russell King 5 + * Copyright (C) 2000-2002 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_GLUE_PF_H 12 + #define ASM_GLUE_PF_H 13 + 14 + #include <asm/glue.h> 15 + 16 + /* 17 + * Prefetch Abort Model 18 + * ================ 19 + * 20 + * We have the following to choose from: 21 + * legacy - no IFSR, no IFAR 22 + * v6 - ARMv6: IFSR, no IFAR 23 + * v7 - ARMv7: IFSR and IFAR 24 + */ 25 + 26 + #undef CPU_PABORT_HANDLER 27 + #undef MULTI_PABORT 28 + 29 + #ifdef CONFIG_CPU_PABRT_LEGACY 30 + # ifdef CPU_PABORT_HANDLER 31 + # define MULTI_PABORT 1 32 + # else 33 + # define CPU_PABORT_HANDLER legacy_pabort 34 + # endif 35 + #endif 36 + 37 + #ifdef CONFIG_CPU_PABRT_V6 38 + # ifdef CPU_PABORT_HANDLER 39 + # define MULTI_PABORT 1 40 + # else 41 + # define CPU_PABORT_HANDLER v6_pabort 42 + # endif 43 + #endif 44 + 45 + #ifdef CONFIG_CPU_PABRT_V7 46 + # ifdef CPU_PABORT_HANDLER 47 + # define MULTI_PABORT 1 48 + # else 49 + # define CPU_PABORT_HANDLER v7_pabort 50 + # endif 51 + #endif 52 + 53 + #ifndef CPU_PABORT_HANDLER 54 + #error Unknown prefetch abort handler type 55 + #endif 56 + 57 + #endif
+261
arch/arm/include/asm/glue-proc.h
··· 1 + /* 2 + * arch/arm/include/asm/glue-proc.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_GLUE_PROC_H 12 + #define ASM_GLUE_PROC_H 13 + 14 + #include <asm/glue.h> 15 + 16 + /* 17 + * Work out if we need multiple CPU support 18 + */ 19 + #undef MULTI_CPU 20 + #undef CPU_NAME 21 + 22 + /* 23 + * CPU_NAME - the prefix for CPU related functions 24 + */ 25 + 26 + #ifdef CONFIG_CPU_ARM610 27 + # ifdef CPU_NAME 28 + # undef MULTI_CPU 29 + # define MULTI_CPU 30 + # else 31 + # define CPU_NAME cpu_arm6 32 + # endif 33 + #endif 34 + 35 + #ifdef CONFIG_CPU_ARM7TDMI 36 + # ifdef CPU_NAME 37 + # undef MULTI_CPU 38 + # define MULTI_CPU 39 + # else 40 + # define CPU_NAME cpu_arm7tdmi 41 + # endif 42 + #endif 43 + 44 + #ifdef CONFIG_CPU_ARM710 45 + # ifdef CPU_NAME 46 + # undef MULTI_CPU 47 + # define MULTI_CPU 48 + # else 49 + # define CPU_NAME cpu_arm7 50 + # endif 51 + #endif 52 + 53 + #ifdef CONFIG_CPU_ARM720T 54 + # ifdef CPU_NAME 55 + # undef MULTI_CPU 56 + # define MULTI_CPU 57 + # else 58 + # define CPU_NAME cpu_arm720 59 + # endif 60 + #endif 61 + 62 + #ifdef CONFIG_CPU_ARM740T 63 + # ifdef CPU_NAME 64 + # undef MULTI_CPU 65 + # define MULTI_CPU 66 + # else 67 + # define CPU_NAME cpu_arm740 68 + # endif 69 + #endif 70 + 71 + #ifdef CONFIG_CPU_ARM9TDMI 72 + # ifdef CPU_NAME 73 + # undef MULTI_CPU 74 + # define MULTI_CPU 75 + # else 76 + # define CPU_NAME cpu_arm9tdmi 77 + # endif 78 + #endif 79 + 80 + #ifdef CONFIG_CPU_ARM920T 81 + # ifdef CPU_NAME 82 + # undef MULTI_CPU 83 + # define MULTI_CPU 84 + # else 85 + # define CPU_NAME cpu_arm920 86 + # endif 87 + #endif 88 + 89 + #ifdef CONFIG_CPU_ARM922T 90 + # ifdef CPU_NAME 91 + # undef MULTI_CPU 92 + # define MULTI_CPU 93 + # else 94 + # define CPU_NAME cpu_arm922 95 + # endif 96 + #endif 97 + 98 + #ifdef CONFIG_CPU_FA526 99 + # ifdef CPU_NAME 100 + # undef MULTI_CPU 101 + # define MULTI_CPU 102 + # else 103 + # define CPU_NAME cpu_fa526 104 + # endif 105 + #endif 106 + 107 + #ifdef CONFIG_CPU_ARM925T 108 + # ifdef CPU_NAME 109 + # undef MULTI_CPU 110 + # define MULTI_CPU 111 + # else 112 + # define CPU_NAME cpu_arm925 113 + # endif 114 + #endif 115 + 116 + #ifdef CONFIG_CPU_ARM926T 117 + # ifdef CPU_NAME 118 + # undef MULTI_CPU 119 + # define MULTI_CPU 120 + # else 121 + # define CPU_NAME cpu_arm926 122 + # endif 123 + #endif 124 + 125 + #ifdef CONFIG_CPU_ARM940T 126 + # ifdef CPU_NAME 127 + # undef MULTI_CPU 128 + # define MULTI_CPU 129 + # else 130 + # define CPU_NAME cpu_arm940 131 + # endif 132 + #endif 133 + 134 + #ifdef CONFIG_CPU_ARM946E 135 + # ifdef CPU_NAME 136 + # undef MULTI_CPU 137 + # define MULTI_CPU 138 + # else 139 + # define CPU_NAME cpu_arm946 140 + # endif 141 + #endif 142 + 143 + #ifdef CONFIG_CPU_SA110 144 + # ifdef CPU_NAME 145 + # undef MULTI_CPU 146 + # define MULTI_CPU 147 + # else 148 + # define CPU_NAME cpu_sa110 149 + # endif 150 + #endif 151 + 152 + #ifdef CONFIG_CPU_SA1100 153 + # ifdef CPU_NAME 154 + # undef MULTI_CPU 155 + # define MULTI_CPU 156 + # else 157 + # define CPU_NAME cpu_sa1100 158 + # endif 159 + #endif 160 + 161 + #ifdef CONFIG_CPU_ARM1020 162 + # ifdef CPU_NAME 163 + # undef MULTI_CPU 164 + # define MULTI_CPU 165 + # else 166 + # define CPU_NAME cpu_arm1020 167 + # endif 168 + #endif 169 + 170 + #ifdef CONFIG_CPU_ARM1020E 171 + # ifdef CPU_NAME 172 + # undef MULTI_CPU 173 + # define MULTI_CPU 174 + # else 175 + # define CPU_NAME cpu_arm1020e 176 + # endif 177 + #endif 178 + 179 + #ifdef CONFIG_CPU_ARM1022 180 + # ifdef CPU_NAME 181 + # undef MULTI_CPU 182 + # define MULTI_CPU 183 + # else 184 + # define CPU_NAME cpu_arm1022 185 + # endif 186 + #endif 187 + 188 + #ifdef CONFIG_CPU_ARM1026 189 + # ifdef CPU_NAME 190 + # undef MULTI_CPU 191 + # define MULTI_CPU 192 + # else 193 + # define CPU_NAME cpu_arm1026 194 + # endif 195 + #endif 196 + 197 + #ifdef CONFIG_CPU_XSCALE 198 + # ifdef CPU_NAME 199 + # undef MULTI_CPU 200 + # define MULTI_CPU 201 + # else 202 + # define CPU_NAME cpu_xscale 203 + # endif 204 + #endif 205 + 206 + #ifdef CONFIG_CPU_XSC3 207 + # ifdef CPU_NAME 208 + # undef MULTI_CPU 209 + # define MULTI_CPU 210 + # else 211 + # define CPU_NAME cpu_xsc3 212 + # endif 213 + #endif 214 + 215 + #ifdef CONFIG_CPU_MOHAWK 216 + # ifdef CPU_NAME 217 + # undef MULTI_CPU 218 + # define MULTI_CPU 219 + # else 220 + # define CPU_NAME cpu_mohawk 221 + # endif 222 + #endif 223 + 224 + #ifdef CONFIG_CPU_FEROCEON 225 + # ifdef CPU_NAME 226 + # undef MULTI_CPU 227 + # define MULTI_CPU 228 + # else 229 + # define CPU_NAME cpu_feroceon 230 + # endif 231 + #endif 232 + 233 + #ifdef CONFIG_CPU_V6 234 + # ifdef CPU_NAME 235 + # undef MULTI_CPU 236 + # define MULTI_CPU 237 + # else 238 + # define CPU_NAME cpu_v6 239 + # endif 240 + #endif 241 + 242 + #ifdef CONFIG_CPU_V7 243 + # ifdef CPU_NAME 244 + # undef MULTI_CPU 245 + # define MULTI_CPU 246 + # else 247 + # define CPU_NAME cpu_v7 248 + # endif 249 + #endif 250 + 251 + #ifndef MULTI_CPU 252 + #define cpu_proc_init __glue(CPU_NAME,_proc_init) 253 + #define cpu_proc_fin __glue(CPU_NAME,_proc_fin) 254 + #define cpu_reset __glue(CPU_NAME,_reset) 255 + #define cpu_do_idle __glue(CPU_NAME,_do_idle) 256 + #define cpu_dcache_clean_area __glue(CPU_NAME,_dcache_clean_area) 257 + #define cpu_do_switch_mm __glue(CPU_NAME,_switch_mm) 258 + #define cpu_set_pte_ext __glue(CPU_NAME,_set_pte_ext) 259 + #endif 260 + 261 + #endif
-138
arch/arm/include/asm/glue.h
··· 15 15 */ 16 16 #ifdef __KERNEL__ 17 17 18 - 19 18 #ifdef __STDC__ 20 19 #define ____glue(name,fn) name##fn 21 20 #else 22 21 #define ____glue(name,fn) name/**/fn 23 22 #endif 24 23 #define __glue(name,fn) ____glue(name,fn) 25 - 26 - 27 - 28 - /* 29 - * Data Abort Model 30 - * ================ 31 - * 32 - * We have the following to choose from: 33 - * arm6 - ARM6 style 34 - * arm7 - ARM7 style 35 - * v4_early - ARMv4 without Thumb early abort handler 36 - * v4t_late - ARMv4 with Thumb late abort handler 37 - * v4t_early - ARMv4 with Thumb early abort handler 38 - * v5tej_early - ARMv5 with Thumb and Java early abort handler 39 - * xscale - ARMv5 with Thumb with Xscale extensions 40 - * v6_early - ARMv6 generic early abort handler 41 - * v7_early - ARMv7 generic early abort handler 42 - */ 43 - #undef CPU_DABORT_HANDLER 44 - #undef MULTI_DABORT 45 - 46 - #if defined(CONFIG_CPU_ARM610) 47 - # ifdef CPU_DABORT_HANDLER 48 - # define MULTI_DABORT 1 49 - # else 50 - # define CPU_DABORT_HANDLER cpu_arm6_data_abort 51 - # endif 52 - #endif 53 - 54 - #if defined(CONFIG_CPU_ARM710) 55 - # ifdef CPU_DABORT_HANDLER 56 - # define MULTI_DABORT 1 57 - # else 58 - # define CPU_DABORT_HANDLER cpu_arm7_data_abort 59 - # endif 60 - #endif 61 - 62 - #ifdef CONFIG_CPU_ABRT_LV4T 63 - # ifdef CPU_DABORT_HANDLER 64 - # define MULTI_DABORT 1 65 - # else 66 - # define CPU_DABORT_HANDLER v4t_late_abort 67 - # endif 68 - #endif 69 - 70 - #ifdef CONFIG_CPU_ABRT_EV4 71 - # ifdef CPU_DABORT_HANDLER 72 - # define MULTI_DABORT 1 73 - # else 74 - # define CPU_DABORT_HANDLER v4_early_abort 75 - # endif 76 - #endif 77 - 78 - #ifdef CONFIG_CPU_ABRT_EV4T 79 - # ifdef CPU_DABORT_HANDLER 80 - # define MULTI_DABORT 1 81 - # else 82 - # define CPU_DABORT_HANDLER v4t_early_abort 83 - # endif 84 - #endif 85 - 86 - #ifdef CONFIG_CPU_ABRT_EV5TJ 87 - # ifdef CPU_DABORT_HANDLER 88 - # define MULTI_DABORT 1 89 - # else 90 - # define CPU_DABORT_HANDLER v5tj_early_abort 91 - # endif 92 - #endif 93 - 94 - #ifdef CONFIG_CPU_ABRT_EV5T 95 - # ifdef CPU_DABORT_HANDLER 96 - # define MULTI_DABORT 1 97 - # else 98 - # define CPU_DABORT_HANDLER v5t_early_abort 99 - # endif 100 - #endif 101 - 102 - #ifdef CONFIG_CPU_ABRT_EV6 103 - # ifdef CPU_DABORT_HANDLER 104 - # define MULTI_DABORT 1 105 - # else 106 - # define CPU_DABORT_HANDLER v6_early_abort 107 - # endif 108 - #endif 109 - 110 - #ifdef CONFIG_CPU_ABRT_EV7 111 - # ifdef CPU_DABORT_HANDLER 112 - # define MULTI_DABORT 1 113 - # else 114 - # define CPU_DABORT_HANDLER v7_early_abort 115 - # endif 116 - #endif 117 - 118 - #ifndef CPU_DABORT_HANDLER 119 - #error Unknown data abort handler type 120 - #endif 121 - 122 - /* 123 - * Prefetch Abort Model 124 - * ================ 125 - * 126 - * We have the following to choose from: 127 - * legacy - no IFSR, no IFAR 128 - * v6 - ARMv6: IFSR, no IFAR 129 - * v7 - ARMv7: IFSR and IFAR 130 - */ 131 - 132 - #undef CPU_PABORT_HANDLER 133 - #undef MULTI_PABORT 134 - 135 - #ifdef CONFIG_CPU_PABRT_LEGACY 136 - # ifdef CPU_PABORT_HANDLER 137 - # define MULTI_PABORT 1 138 - # else 139 - # define CPU_PABORT_HANDLER legacy_pabort 140 - # endif 141 - #endif 142 - 143 - #ifdef CONFIG_CPU_PABRT_V6 144 - # ifdef CPU_PABORT_HANDLER 145 - # define MULTI_PABORT 1 146 - # else 147 - # define CPU_PABORT_HANDLER v6_pabort 148 - # endif 149 - #endif 150 - 151 - #ifdef CONFIG_CPU_PABRT_V7 152 - # ifdef CPU_PABORT_HANDLER 153 - # define MULTI_PABORT 1 154 - # else 155 - # define CPU_PABORT_HANDLER v7_pabort 156 - # endif 157 - #endif 158 - 159 - #ifndef CPU_PABORT_HANDLER 160 - #error Unknown prefetch abort handler type 161 - #endif 162 24 163 25 #endif
+66 -237
arch/arm/include/asm/proc-fns.h
··· 13 13 14 14 #ifdef __KERNEL__ 15 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_ARM610 28 - # ifdef CPU_NAME 29 - # undef MULTI_CPU 30 - # define MULTI_CPU 31 - # else 32 - # define CPU_NAME cpu_arm6 33 - # endif 34 - #endif 35 - 36 - #ifdef CONFIG_CPU_ARM7TDMI 37 - # ifdef CPU_NAME 38 - # undef MULTI_CPU 39 - # define MULTI_CPU 40 - # else 41 - # define CPU_NAME cpu_arm7tdmi 42 - # endif 43 - #endif 44 - 45 - #ifdef CONFIG_CPU_ARM710 46 - # ifdef CPU_NAME 47 - # undef MULTI_CPU 48 - # define MULTI_CPU 49 - # else 50 - # define CPU_NAME cpu_arm7 51 - # endif 52 - #endif 53 - 54 - #ifdef CONFIG_CPU_ARM720T 55 - # ifdef CPU_NAME 56 - # undef MULTI_CPU 57 - # define MULTI_CPU 58 - # else 59 - # define CPU_NAME cpu_arm720 60 - # endif 61 - #endif 62 - 63 - #ifdef CONFIG_CPU_ARM740T 64 - # ifdef CPU_NAME 65 - # undef MULTI_CPU 66 - # define MULTI_CPU 67 - # else 68 - # define CPU_NAME cpu_arm740 69 - # endif 70 - #endif 71 - 72 - #ifdef CONFIG_CPU_ARM9TDMI 73 - # ifdef CPU_NAME 74 - # undef MULTI_CPU 75 - # define MULTI_CPU 76 - # else 77 - # define CPU_NAME cpu_arm9tdmi 78 - # endif 79 - #endif 80 - 81 - #ifdef CONFIG_CPU_ARM920T 82 - # ifdef CPU_NAME 83 - # undef MULTI_CPU 84 - # define MULTI_CPU 85 - # else 86 - # define CPU_NAME cpu_arm920 87 - # endif 88 - #endif 89 - 90 - #ifdef CONFIG_CPU_ARM922T 91 - # ifdef CPU_NAME 92 - # undef MULTI_CPU 93 - # define MULTI_CPU 94 - # else 95 - # define CPU_NAME cpu_arm922 96 - # endif 97 - #endif 98 - 99 - #ifdef CONFIG_CPU_FA526 100 - # ifdef CPU_NAME 101 - # undef MULTI_CPU 102 - # define MULTI_CPU 103 - # else 104 - # define CPU_NAME cpu_fa526 105 - # endif 106 - #endif 107 - 108 - #ifdef CONFIG_CPU_ARM925T 109 - # ifdef CPU_NAME 110 - # undef MULTI_CPU 111 - # define MULTI_CPU 112 - # else 113 - # define CPU_NAME cpu_arm925 114 - # endif 115 - #endif 116 - 117 - #ifdef CONFIG_CPU_ARM926T 118 - # ifdef CPU_NAME 119 - # undef MULTI_CPU 120 - # define MULTI_CPU 121 - # else 122 - # define CPU_NAME cpu_arm926 123 - # endif 124 - #endif 125 - 126 - #ifdef CONFIG_CPU_ARM940T 127 - # ifdef CPU_NAME 128 - # undef MULTI_CPU 129 - # define MULTI_CPU 130 - # else 131 - # define CPU_NAME cpu_arm940 132 - # endif 133 - #endif 134 - 135 - #ifdef CONFIG_CPU_ARM946E 136 - # ifdef CPU_NAME 137 - # undef MULTI_CPU 138 - # define MULTI_CPU 139 - # else 140 - # define CPU_NAME cpu_arm946 141 - # endif 142 - #endif 143 - 144 - #ifdef CONFIG_CPU_SA110 145 - # ifdef CPU_NAME 146 - # undef MULTI_CPU 147 - # define MULTI_CPU 148 - # else 149 - # define CPU_NAME cpu_sa110 150 - # endif 151 - #endif 152 - 153 - #ifdef CONFIG_CPU_SA1100 154 - # ifdef CPU_NAME 155 - # undef MULTI_CPU 156 - # define MULTI_CPU 157 - # else 158 - # define CPU_NAME cpu_sa1100 159 - # endif 160 - #endif 161 - 162 - #ifdef CONFIG_CPU_ARM1020 163 - # ifdef CPU_NAME 164 - # undef MULTI_CPU 165 - # define MULTI_CPU 166 - # else 167 - # define CPU_NAME cpu_arm1020 168 - # endif 169 - #endif 170 - 171 - #ifdef CONFIG_CPU_ARM1020E 172 - # ifdef CPU_NAME 173 - # undef MULTI_CPU 174 - # define MULTI_CPU 175 - # else 176 - # define CPU_NAME cpu_arm1020e 177 - # endif 178 - #endif 179 - 180 - #ifdef CONFIG_CPU_ARM1022 181 - # ifdef CPU_NAME 182 - # undef MULTI_CPU 183 - # define MULTI_CPU 184 - # else 185 - # define CPU_NAME cpu_arm1022 186 - # endif 187 - #endif 188 - 189 - #ifdef CONFIG_CPU_ARM1026 190 - # ifdef CPU_NAME 191 - # undef MULTI_CPU 192 - # define MULTI_CPU 193 - # else 194 - # define CPU_NAME cpu_arm1026 195 - # endif 196 - #endif 197 - 198 - #ifdef CONFIG_CPU_XSCALE 199 - # ifdef CPU_NAME 200 - # undef MULTI_CPU 201 - # define MULTI_CPU 202 - # else 203 - # define CPU_NAME cpu_xscale 204 - # endif 205 - #endif 206 - 207 - #ifdef CONFIG_CPU_XSC3 208 - # ifdef CPU_NAME 209 - # undef MULTI_CPU 210 - # define MULTI_CPU 211 - # else 212 - # define CPU_NAME cpu_xsc3 213 - # endif 214 - #endif 215 - 216 - #ifdef CONFIG_CPU_MOHAWK 217 - # ifdef CPU_NAME 218 - # undef MULTI_CPU 219 - # define MULTI_CPU 220 - # else 221 - # define CPU_NAME cpu_mohawk 222 - # endif 223 - #endif 224 - 225 - #ifdef CONFIG_CPU_FEROCEON 226 - # ifdef CPU_NAME 227 - # undef MULTI_CPU 228 - # define MULTI_CPU 229 - # else 230 - # define CPU_NAME cpu_feroceon 231 - # endif 232 - #endif 233 - 234 - #ifdef CONFIG_CPU_V6 235 - # ifdef CPU_NAME 236 - # undef MULTI_CPU 237 - # define MULTI_CPU 238 - # else 239 - # define CPU_NAME cpu_v6 240 - # endif 241 - #endif 242 - 243 - #ifdef CONFIG_CPU_V7 244 - # ifdef CPU_NAME 245 - # undef MULTI_CPU 246 - # define MULTI_CPU 247 - # else 248 - # define CPU_NAME cpu_v7 249 - # endif 250 - #endif 16 + #include <asm/glue-proc.h> 17 + #include <asm/page.h> 251 18 252 19 #ifndef __ASSEMBLY__ 253 20 21 + struct mm_struct; 22 + 23 + /* 24 + * Don't change this structure - ASM code relies on it. 25 + */ 26 + extern struct processor { 27 + /* MISC 28 + * get data abort address/flags 29 + */ 30 + void (*_data_abort)(unsigned long pc); 31 + /* 32 + * Retrieve prefetch fault address 33 + */ 34 + unsigned long (*_prefetch_abort)(unsigned long lr); 35 + /* 36 + * Set up any processor specifics 37 + */ 38 + void (*_proc_init)(void); 39 + /* 40 + * Disable any processor specifics 41 + */ 42 + void (*_proc_fin)(void); 43 + /* 44 + * Special stuff for a reset 45 + */ 46 + void (*reset)(unsigned long addr) __attribute__((noreturn)); 47 + /* 48 + * Idle the processor 49 + */ 50 + int (*_do_idle)(void); 51 + /* 52 + * Processor architecture specific 53 + */ 54 + /* 55 + * clean a virtual address range from the 56 + * D-cache without flushing the cache. 57 + */ 58 + void (*dcache_clean_area)(void *addr, int size); 59 + 60 + /* 61 + * Set the page table 62 + */ 63 + void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); 64 + /* 65 + * Set a possibly extended PTE. Non-extended PTEs should 66 + * ignore 'ext'. 67 + */ 68 + void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext); 69 + } processor; 70 + 254 71 #ifndef MULTI_CPU 255 - #include <asm/cpu-single.h> 72 + extern void cpu_proc_init(void); 73 + extern void cpu_proc_fin(void); 74 + extern int cpu_do_idle(void); 75 + extern void cpu_dcache_clean_area(void *, int); 76 + extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); 77 + extern void cpu_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext); 78 + extern void cpu_reset(unsigned long addr) __attribute__((noreturn)); 256 79 #else 257 - #include <asm/cpu-multi32.h> 80 + #define cpu_proc_init() processor._proc_init() 81 + #define cpu_proc_fin() processor._proc_fin() 82 + #define cpu_reset(addr) processor.reset(addr) 83 + #define cpu_do_idle() processor._do_idle() 84 + #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz) 85 + #define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext) 86 + #define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm) 258 87 #endif 259 88 260 89 #include <asm/memory.h>
+2
arch/arm/kernel/asm-offsets.c
··· 13 13 #include <linux/sched.h> 14 14 #include <linux/mm.h> 15 15 #include <linux/dma-mapping.h> 16 + #include <asm/glue-df.h> 17 + #include <asm/glue-pf.h> 16 18 #include <asm/mach/arch.h> 17 19 #include <asm/thread_info.h> 18 20 #include <asm/memory.h>
+2 -1
arch/arm/kernel/entry-armv.S
··· 16 16 */ 17 17 18 18 #include <asm/memory.h> 19 - #include <asm/glue.h> 19 + #include <asm/glue-df.h> 20 + #include <asm/glue-pf.h> 20 21 #include <asm/vfpmacros.h> 21 22 #include <mach/entry-macro.S> 22 23 #include <asm/thread_notify.h>