Changes in kernel/arch/arm32/include/barrier.h [9d58539:6412909] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/barrier.h
r9d58539 r6412909 47 47 #define write_barrier() asm volatile ("" ::: "memory") 48 48 49 #define smc_coherence(a) 50 #define smc_coherence_block(a, l) 49 /* 50 * There are multiple ways ICache can be implemented on ARM machines. Namely 51 * PIPT, VIPT, and ASID and VMID tagged VIVT (see ARM Architecture Reference 52 * Manual B3.11.2 (p. 1383). However, CortexA8 Manual states: "For maximum 53 * compatibility across processors, ARM recommends that operating systems target 54 * the ARMv7 base architecture that uses ASID-tagged VIVT instruction caches, 55 * and do not assume the presence of the IVIPT extension. Software that relies 56 * on the IVIPT extension might fail in an unpredictable way on an ARMv7 57 * implementation that does not include the IVIPT extension." (7.2.6 p. 245). 58 * Only PIPT invalidates cache for all VA aliases if one block is invalidated. 59 * 60 * @note: Supporting ASID and VMID tagged VIVT may need to add ICache 61 * maintenance to other places than just smc. 62 */ 63 64 /* Available on both all supported arms, 65 * invalidates entire ICache so the written value does not matter. */ 66 #define smc_coherence(a) asm volatile ( "mcr p15, 0, r0, c7, c5, 0") 67 #define smc_coherence_block(a, l) smc_coherence(a) 68 51 69 52 70 #endif
Note:
See TracChangeset
for help on using the changeset viewer.