4 #include <linux/init.h>
6 #ifndef CONFIG_CPU_ARM926T
7 #error CPU not supported
13 .global warm_cop_clean_inval_d
14 warm_cop_clean_inval_d:
15 0: mrc p15, 0, r15, c7, c14, 3 @ test, clean and invalidate
20 .global warm_cop_clean_d
22 0: mrc p15, 0, r15, c7, c10, 3 @ test and clean
27 .global warm_cop_inval_d
30 mcr p15, 0, r0, c7, c6, 0
34 .global warm_cop_inval_i
37 mcr p15, 0, r0, c7, c5, 0
41 .global warm_cop_drain_wb
44 mcr p15, 0, r0, c7, c10, 4
48 #define R_CLEAN_INVAL_D \
49 mcr p15, 0, r0, c7, c14, 1
52 mcr p15, 0, r0, c7, c10, 1
55 mcr p15, 0, r0, c7, c6, 1
58 mcr p15, 0, r0, c7, c5, 1
60 #define WARM_COP_MK_RANGE_FUNC(name,f1,f2) \
71 WARM_COP_MK_RANGE_FUNC(warm_cop_r_clean_d_inval_di, R_CLEAN_INVAL_D, R_INVAL_I)
72 WARM_COP_MK_RANGE_FUNC(warm_cop_r_clean_d_inval_d, R_CLEAN_INVAL_D, )
73 WARM_COP_MK_RANGE_FUNC(warm_cop_r_clean_d_inval_i, R_CLEAN_D, R_INVAL_I)
74 WARM_COP_MK_RANGE_FUNC(warm_cop_r_clean_d, R_CLEAN_D, )
75 WARM_COP_MK_RANGE_FUNC(warm_cop_r_inval_di, R_INVAL_D, R_INVAL_I)
76 WARM_COP_MK_RANGE_FUNC(warm_cop_r_inval_d, R_INVAL_D, )
77 WARM_COP_MK_RANGE_FUNC(warm_cop_r_inval_i, R_INVAL_I, )
80 .global warm_drain_wb_inval_tlb
81 warm_drain_wb_inval_tlb:
83 mcr p15, 0, r0, c7, c10, 4
84 mcr p15, 0, r0, c8, c7, 0