tlbflush.h (bba7d0b9ba0f04d25145de8170a17a3a07bbfdde) tlbflush.h (28853ac8fe5221de74a14f1182d7b2b383dfd85c)
1/*
2 * arch/arm/include/asm/tlbflush.h
3 *
4 * Copyright (C) 1999-2003 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.

--- 40 unchanged lines hidden (view full) ---

49 * =============
50 *
51 * We have the following to choose from:
52 * v3 - ARMv3
53 * v4 - ARMv4 without write buffer
54 * v4wb - ARMv4 with write buffer without I TLB flush entry instruction
55 * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction
56 * fr - Feroceon (v4wbi with non-outer-cacheable page table walks)
1/*
2 * arch/arm/include/asm/tlbflush.h
3 *
4 * Copyright (C) 1999-2003 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.

--- 40 unchanged lines hidden (view full) ---

49 * =============
50 *
51 * We have the following to choose from:
52 * v3 - ARMv3
53 * v4 - ARMv4 without write buffer
54 * v4wb - ARMv4 with write buffer without I TLB flush entry instruction
55 * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction
56 * fr - Feroceon (v4wbi with non-outer-cacheable page table walks)
57 * fa - Faraday (v4 with write buffer with UTLB and branch target buffer (BTB))
57 * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction
58 * v7wbi - identical to v6wbi
59 */
60#undef _TLB
61#undef MULTI_TLB
62
63#define v3_tlb_flags (TLB_V3_FULL | TLB_V3_PAGE)
64

--- 20 unchanged lines hidden (view full) ---

85# else
86# define _TLB v4
87# endif
88#else
89# define v4_possible_flags 0
90# define v4_always_flags (-1UL)
91#endif
92
58 * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction
59 * v7wbi - identical to v6wbi
60 */
61#undef _TLB
62#undef MULTI_TLB
63
64#define v3_tlb_flags (TLB_V3_FULL | TLB_V3_PAGE)
65

--- 20 unchanged lines hidden (view full) ---

86# else
87# define _TLB v4
88# endif
89#else
90# define v4_possible_flags 0
91# define v4_always_flags (-1UL)
92#endif
93
94#define fa_tlb_flags (TLB_WB | TLB_BTB | TLB_DCLEAN | \
95 TLB_V4_U_FULL | TLB_V4_U_PAGE)
96
97#ifdef CONFIG_CPU_TLB_FA
98# define fa_possible_flags fa_tlb_flags
99# define fa_always_flags fa_tlb_flags
100# ifdef _TLB
101# define MULTI_TLB 1
102# else
103# define _TLB fa
104# endif
105#else
106# define fa_possible_flags 0
107# define fa_always_flags (-1UL)
108#endif
109
93#define v4wbi_tlb_flags (TLB_WB | TLB_DCLEAN | \
94 TLB_V4_I_FULL | TLB_V4_D_FULL | \
95 TLB_V4_I_PAGE | TLB_V4_D_PAGE)
96
97#ifdef CONFIG_CPU_TLB_V4WBI
98# define v4wbi_possible_flags v4wbi_tlb_flags
99# define v4wbi_always_flags v4wbi_tlb_flags
100# ifdef _TLB

--- 162 unchanged lines hidden (view full) ---

263 * implemented the "%?" method, but this has been discontinued due to too
264 * many people getting it wrong.
265 */
266#define possible_tlb_flags (v3_possible_flags | \
267 v4_possible_flags | \
268 v4wbi_possible_flags | \
269 fr_possible_flags | \
270 v4wb_possible_flags | \
110#define v4wbi_tlb_flags (TLB_WB | TLB_DCLEAN | \
111 TLB_V4_I_FULL | TLB_V4_D_FULL | \
112 TLB_V4_I_PAGE | TLB_V4_D_PAGE)
113
114#ifdef CONFIG_CPU_TLB_V4WBI
115# define v4wbi_possible_flags v4wbi_tlb_flags
116# define v4wbi_always_flags v4wbi_tlb_flags
117# ifdef _TLB

--- 162 unchanged lines hidden (view full) ---

280 * implemented the "%?" method, but this has been discontinued due to too
281 * many people getting it wrong.
282 */
283#define possible_tlb_flags (v3_possible_flags | \
284 v4_possible_flags | \
285 v4wbi_possible_flags | \
286 fr_possible_flags | \
287 v4wb_possible_flags | \
288 fa_possible_flags | \
271 v6wbi_possible_flags | \
272 v7wbi_possible_flags)
273
274#define always_tlb_flags (v3_always_flags & \
275 v4_always_flags & \
276 v4wbi_always_flags & \
277 fr_always_flags & \
278 v4wb_always_flags & \
289 v6wbi_possible_flags | \
290 v7wbi_possible_flags)
291
292#define always_tlb_flags (v3_always_flags & \
293 v4_always_flags & \
294 v4wbi_always_flags & \
295 fr_always_flags & \
296 v4wb_always_flags & \
297 fa_always_flags & \
279 v6wbi_always_flags & \
280 v7wbi_always_flags)
281
282#define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f)))
283
284static inline void local_flush_tlb_all(void)
285{
286 const int zero = 0;

--- 210 unchanged lines hidden ---
298 v6wbi_always_flags & \
299 v7wbi_always_flags)
300
301#define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f)))
302
303static inline void local_flush_tlb_all(void)
304{
305 const int zero = 0;

--- 210 unchanged lines hidden ---