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

ARM: 8603/1: V7M: Add addresses for mem-mapped V7M cache operations

V7M implements cache operations similarly to V7A/R, however all operations
are performed via memory-mapped IO instead of co-processor operations.

This patch adds register definitions relevant to the V7M ARM architecture's
cache architecture.

Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Tested-by: Andras Szemzo <sza@esh.hu>
Tested-by: Joachim Eastwood <manabian@gmail.com>
Tested-by: Alexandre TORGUE <alexandre.torgue@st.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Jonathan Austin and committed by
Russell King
296909ee 26150aa9

+22
+22
arch/arm/include/asm/v7m.h
··· 24 24 25 25 #define V7M_SCB_CCR 0x14 26 26 #define V7M_SCB_CCR_STKALIGN (1 << 9) 27 + #define V7M_SCB_CCR_DC (1 << 16) 28 + #define V7M_SCB_CCR_IC (1 << 17) 29 + #define V7M_SCB_CCR_BP (1 << 18) 27 30 28 31 #define V7M_SCB_SHPR2 0x1c 29 32 #define V7M_SCB_SHPR3 0x20 ··· 49 46 */ 50 47 #define EXC_RET_STACK_MASK 0x00000004 51 48 #define EXC_RET_THREADMODE_PROCESSSTACK 0xfffffffd 49 + 50 + /* Cache related definitions */ 51 + 52 + #define V7M_SCB_CLIDR 0x78 /* Cache Level ID register */ 53 + #define V7M_SCB_CTR 0x7c /* Cache Type register */ 54 + #define V7M_SCB_CCSIDR 0x80 /* Cache size ID register */ 55 + #define V7M_SCB_CSSELR 0x84 /* Cache size selection register */ 56 + 57 + /* Cache opeartions */ 58 + #define V7M_SCB_ICIALLU 0x250 /* I-cache invalidate all to PoU */ 59 + #define V7M_SCB_ICIMVAU 0x258 /* I-cache invalidate by MVA to PoU */ 60 + #define V7M_SCB_DCIMVAC 0x25c /* D-cache invalidate by MVA to PoC */ 61 + #define V7M_SCB_DCISW 0x260 /* D-cache invalidate by set-way */ 62 + #define V7M_SCB_DCCMVAU 0x264 /* D-cache clean by MVA to PoU */ 63 + #define V7M_SCB_DCCMVAC 0x268 /* D-cache clean by MVA to PoC */ 64 + #define V7M_SCB_DCCSW 0x26c /* D-cache clean by set-way */ 65 + #define V7M_SCB_DCCIMVAC 0x270 /* D-cache clean and invalidate by MVA to PoC */ 66 + #define V7M_SCB_DCCISW 0x274 /* D-cache clean and invalidate by set-way */ 67 + #define V7M_SCB_BPIALL 0x278 /* D-cache clean and invalidate by set-way */ 52 68 53 69 #ifndef __ASSEMBLY__ 54 70