Changeset 0ab362c in mainline for kernel/arch/arm32/include/barrier.h
- Timestamp:
- 2012-11-22T14:36:04Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e32720ff
- Parents:
- 1f7753a (diff), 0f2c80a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/barrier.h
r1f7753a r0ab362c 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.