1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * arch/arm/include/asm/glue-cache.h 4 * 5 * Copyright (C) 1999-2002 Russell King 6 */ 7 #ifndef ASM_GLUE_CACHE_H 8 #define ASM_GLUE_CACHE_H 9 10 #include <asm/glue.h> 11 12 /* 13 * Cache Model 14 * =========== 15 */ 16 #undef _CACHE 17 #undef MULTI_CACHE 18 19 #if defined(CONFIG_CPU_CACHE_V4) 20 # ifdef _CACHE 21 # define MULTI_CACHE 1 22 # else 23 # define _CACHE v4 24 # endif 25 #endif 26 27 #if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ 28 defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) || \ 29 defined(CONFIG_CPU_ARM1026) 30 # define MULTI_CACHE 1 31 #endif 32 33 #if defined(CONFIG_CPU_FA526) 34 # ifdef _CACHE 35 # define MULTI_CACHE 1 36 # else 37 # define _CACHE fa 38 # endif 39 #endif 40 41 #if defined(CONFIG_CPU_ARM926T) 42 # ifdef _CACHE 43 # define MULTI_CACHE 1 44 # else 45 # define _CACHE arm926 46 # endif 47 #endif 48 49 #if defined(CONFIG_CPU_ARM940T) 50 # ifdef _CACHE 51 # define MULTI_CACHE 1 52 # else 53 # define _CACHE arm940 54 # endif 55 #endif 56 57 #if defined(CONFIG_CPU_ARM946E) 58 # ifdef _CACHE 59 # define MULTI_CACHE 1 60 # else 61 # define _CACHE arm946 62 # endif 63 #endif 64 65 #if defined(CONFIG_CPU_CACHE_V4WB) 66 # ifdef _CACHE 67 # define MULTI_CACHE 1 68 # else 69 # define _CACHE v4wb 70 # endif 71 #endif 72 73 #if defined(CONFIG_CPU_XSCALE) 74 # ifdef _CACHE 75 # define MULTI_CACHE 1 76 # else 77 # define _CACHE xscale 78 # endif 79 #endif 80 81 #if defined(CONFIG_CPU_XSC3) 82 # ifdef _CACHE 83 # define MULTI_CACHE 1 84 # else 85 # define _CACHE xsc3 86 # endif 87 #endif 88 89 #if defined(CONFIG_CPU_MOHAWK) 90 # ifdef _CACHE 91 # define MULTI_CACHE 1 92 # else 93 # define _CACHE mohawk 94 # endif 95 #endif 96 97 #if defined(CONFIG_CPU_FEROCEON) 98 # define MULTI_CACHE 1 99 #endif 100 101 #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) 102 # ifdef _CACHE 103 # define MULTI_CACHE 1 104 # else 105 # define _CACHE v6 106 # endif 107 #endif 108 109 #if defined(CONFIG_CPU_V7) 110 # ifdef _CACHE 111 # define MULTI_CACHE 1 112 # else 113 # define _CACHE v7 114 # endif 115 #endif 116 117 #if defined(CONFIG_CACHE_B15_RAC) 118 # define MULTI_CACHE 1 119 #endif 120 121 #ifdef CONFIG_CPU_CACHE_NOP 122 # define MULTI_CACHE 1 123 #endif 124 125 #if defined(CONFIG_CPU_V7M) 126 # define MULTI_CACHE 1 127 #endif 128 129 #if !defined(_CACHE) && !defined(MULTI_CACHE) 130 #error Unknown cache maintenance model 131 #endif 132 133 #ifndef MULTI_CACHE 134 #define __cpuc_flush_icache_all __glue(_CACHE,_flush_icache_all) 135 #define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all) 136 /* This function only has a dedicated assembly callback on the v7 cache */ 137 #ifdef CONFIG_CPU_CACHE_V7 138 #define __cpuc_flush_kern_louis __glue(_CACHE,_flush_kern_cache_louis) 139 #else 140 #define __cpuc_flush_kern_louis __glue(_CACHE,_flush_kern_cache_all) 141 #endif 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 148 #define dmac_flush_range __glue(_CACHE,_dma_flush_range) 149 #endif 150 151 #endif 152