1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: reg_access.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 27499 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_HW_ARM_REG_ACCESS_H_ 17 #define NN_HW_ARM_REG_ACCESS_H_ 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 //TODO: もし CTR 依存のものがあれば切り出す 24 25 //---------------------------------------------------------------------- 26 // instruction level macros 27 // NOTE: 28 // v is a register int variable 29 // a-e are symbols as like as c0, cpsr_c, etc. 30 //---------------------------------------------------------------------- 31 32 // MRS/MSR 33 #define HW_INST_MRS(a,v) __asm { mrs a,v } 34 35 #define HW_INST_MSR(a,v) __asm { msr a,v } 36 37 // MRC/MCR 38 // a: CP, b: Op1, c: CRn, d: CRm, e: Op2 39 #define HW_INST_MRC(a,b,c,d,e,v) __asm { mrc a,b,v,c,d,e } 40 41 #define HW_INST_MCR(a,b,c,d,e,v) __asm { mcr a,b,v,c,d,e } 42 43 /* 44 memo: read only 45 pc: __current_pc() 46 sp: __current_sp() 47 lr: __return_address() 48 */ 49 50 //---------------------------------------------------------------------- 51 // mrs/msr family 52 //---------------------------------------------------------------------- 53 54 #define HW_GET_CPSR(v) HW_INST_MRS(cpsr,v) 55 #define HW_GET_SPSR(v) HW_INST_MRS(spsr,v) 56 57 #define HW_SET_CPSR(f,v) HW_INST_MSR(cpsr_##f,v) // f: fields 58 #define HW_SET_SPSR(f,v) HW_INST_MSR(spsr_##f,v) // f: fields 59 60 //---------------------------------------------------------------------- 61 // cp15 62 //---------------------------------------------------------------------- 63 64 #define HW_GET_CP15_C0(c,o,v) HW_INST_MRC(p15,0,c0,c,o,v) // Opcode_1 is fixed 65 #define HW_GET_CP15_C1(o,v) HW_INST_MRC(p15,0,c1,c0,o,v) // Opcode_1 and CRm are fixed 66 #define HW_GET_CP15_C2(o,v) HW_INST_MRC(p15,0,c2,c0,o,v) // Opcode_1 and CRm are fixed 67 #define HW_GET_CP15_C3(v) HW_INST_MRC(p15,0,c3,c0,0,v) // fixed all 68 #define HW_GET_CP15_C5(o,v) HW_INST_MRC(p15,0,c5,c0,o,v) // Opcode_1 and CRm are fixed 69 70 #if defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6) 71 #define HW_GET_CP15_C6(o,v) HW_INST_MRC(p15,0,c6,c0,o,v) // Opcode_1 and CRm are fixed 72 #else 73 #define HW_GET_CP15_C6(c,o,v) HW_INST_MRC(p15,0,c6,c,o,v) // Opcode_1 is fixed 74 #endif 75 76 #define HW_GET_CP15_C7(c,o,v) HW_INST_MRC(p15,0,c7,c,o,v) // Opcode_1 is fixed 77 #define HW_GET_CP15_C8(c,o,v) HW_INST_MRC(p15,0,c8,c,o,v) // Opcode_1 is fixed 78 79 #if defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6) 80 #define HW_GET_CP15_C9(v) HW_INST_MRC(p15,0,c9,c0,0,v) // fixed all 81 #else 82 #define HW_GET_CP15_C9(o,v) HW_INST_MRC(p15,0,c9,c0,o,v) // Opcode_1 and CRm are fixed 83 #endif 84 85 #define HW_GET_CP15_C10(c,o,v) HW_INST_MRC(p15,0,c10,c,o,v) // Opcode_1 is fixed 86 #define HW_GET_CP15_C13(o,v) HW_INST_MRC(p15,0,c13,c0,o,v) // Opcode_1 and CRm are fixed 87 #define HW_GET_CP15_C15(o1,c,o2,v) HW_INST_MRC(p15,o1,c15,c,o2,v) // not fixed all 88 89 #define HW_GET_CP15_C15_0(c,o,v) HW_INST_MRC(p15,0,c15,c,o,v) 90 #define HW_GET_CP15_C15_1(c,o,v) HW_INST_MRC(p15,1,c15,c,o,v) 91 #define HW_GET_CP15_C15_2(c,o,v) HW_INST_MRC(p15,2,c15,c,o,v) 92 #define HW_GET_CP15_C15_5(c,o,v) HW_INST_MRC(p15,5,c15,c,o,v) 93 #define HW_GET_CP15_C15_7(v) HW_INST_MRC(p15,7,c15,c1,0,v) 94 95 // NOTE: must set variable not constant 96 97 #define HW_SET_CP15_C0(c,o,v) HW_INST_MCR(p15,0,c0,c,o,v) // Opcode_1 is fixed 98 #define HW_SET_CP15_C1(o,v) HW_INST_MCR(p15,0,c1,c0,o,v) // Opcode_1 and CRm are fixed 99 #define HW_SET_CP15_C2(o,v) HW_INST_MCR(p15,0,c2,c0,o,v) // Opcode_1 and CRm are fixed 100 #define HW_SET_CP15_C3(v) HW_INST_MCR(p15,0,c3,c0,0,v) // fixed all 101 #define HW_SET_CP15_C5(o,v) HW_INST_MCR(p15,0,c5,c0,o,v) // Opcode_1 and CRm are fixed 102 #define HW_SET_CP15_C6(o,v) HW_INST_MCR(p15,0,c6,c0,o,v) // Opcode_1 and CRm are fixed 103 #define HW_SET_CP15_C7(c,o,v) HW_INST_MCR(p15,0,c7,c,o,v) // Opcode_1 is fixed 104 #define HW_SET_CP15_C8(c,o,v) HW_INST_MCR(p15,0,c8,c,o,v) // Opcode_1 is fixed 105 #define HW_SET_CP15_C9(v) HW_INST_MCR(p15,0,c9,c0,0,v) // fixed all 106 #define HW_SET_CP15_C10(c,o,v) HW_INST_MCR(p15,0,c10,c,o,v) // Opcode_1 is fixed 107 #define HW_SET_CP15_C13(o,v) HW_INST_MCR(p15,0,c13,c0,o,v) // Opcode_1 and CRm are fixed 108 #define HW_SET_CP15_C15(o1,c,o2,v) HW_INST_MCR(p15,o1,c15,c,o2,v) // not fixed all 109 110 #define HW_SET_CP15_C15_0(c,o,v) HW_INST_MCR(p15,0,c15,c,o,v) 111 #define HW_SET_CP15_C15_5(c,o,v) HW_INST_MCR(p15,5,c15,c,o,v) 112 #define HW_SET_CP15_C15_7(v) HW_INST_MCR(p15,7,c15,c1,0,v) 113 114 // 115 // special named macro 116 // 117 118 #define HW_GET_CP15_MAIN_ID(v) HW_INST_MRC(p15,0,c0,c0,0,v) 119 #define HW_GET_CP15_CACHE_TYPE(v) HW_INST_MRC(p15,0,c0,c0,1,v) 120 #define HW_GET_CP15_TLB_TYPE(v) HW_INST_MRC(p15,0,c0,c0,3,v) 121 #define HW_GET_CP15_CPU_ID(v) HW_INST_MRC(p15,0,c0,c0,5,v) 122 #define HW_GET_CP15_PFR0(v) HW_INST_MRC(p15,0,c0,c1,0,v) 123 #define HW_GET_CP15_PFR1(v) HW_INST_MRC(p15,0,c0,c1,1,v) 124 #define HW_GET_CP15_DFR0(v) HW_INST_MRC(p15,0,c0,c1,2,v) 125 #define HW_GET_CP15_MMFR0(v) HW_INST_MRC(p15,0,c0,c1,4,v) 126 #define HW_GET_CP15_MMFR1(v) HW_INST_MRC(p15,0,c0,c1,5,v) 127 #define HW_GET_CP15_MMFR2(v) HW_INST_MRC(p15,0,c0,c1,6,v) 128 #define HW_GET_CP15_MMFR3(v) HW_INST_MRC(p15,0,c0,c1,7,v) 129 #define HW_GET_CP15_ISAR0(v) HW_INST_MRC(p15,0,c0,c2,0,v) 130 #define HW_GET_CP15_ISAR1(v) HW_INST_MRC(p15,0,c0,c2,1,v) 131 #define HW_GET_CP15_ISAR2(v) HW_INST_MRC(p15,0,c0,c2,2,v) 132 #define HW_GET_CP15_ISAR3(v) HW_INST_MRC(p15,0,c0,c2,3,v) 133 #define HW_GET_CP15_ISAR4(v) HW_INST_MRC(p15,0,c0,c2,4,v) 134 #define HW_GET_CP15_CONTROL(v) HW_INST_MRC(p15,0,c1,c0,0,v) 135 #define HW_GET_CP15_AUX_CONTROL(v) HW_INST_MRC(p15,0,c1,c0,1,v) 136 #define HW_GET_CP15_COPROCESSOR_ACCESS_CONTROL(v) HW_INST_MRC(p15,0,c1,c0,2,v) 137 138 #if defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6) 139 #define HW_GET_CP15_TTB0(v) HW_INST_MRC(p15,0,c2,c0,0,v) 140 #define HW_GET_CP15_TTB1(v) HW_INST_MRC(p15,0,c2,c0,1,v) 141 #define HW_GET_CP15_TTB_CONTROL(v) HW_INST_MRC(p15,0,c2,c0,2,v) 142 #define HW_GET_CP15_DOMAIN_ACCESS_CONTROL(v) HW_INST_MRC(p15,0,c3,c0,0,v) 143 #define HW_GET_CP15_DATA_FAULT_STATUS(v) HW_INST_MRC(p15,0,c5,c0,0,v) 144 #define HW_GET_CP15_INSTRUCTION_FAULT_STATUS(v) HW_INST_MRC(p15,0,c5,c0,1,v) 145 #define HW_GET_CP15_DATA_FAULT_ADDRESS(v) HW_INST_MRC(p15,0,c6,c0,0,v) 146 #define HW_GET_CP15_WATCHPOINT_FAULT_ADDRESS(v) HW_INST_MRC(p15,0,c6,c0,1,v) 147 #else 148 #define HW_GET_CP15_CACHE_ENABLE(v) HW_INST_MRC(p15,0,c2,c0,0,v) 149 #define HW_GET_CP15_DATA_CACHE_ENABLE(v) HW_GET_CP15_CACHE_ENABLE(v) 150 #define HW_GET_CP15_INSTRUCTION_CACHE_ENABLE(v) HW_INST_MRC(p15,0,c2,c0,1,v) 151 #define HW_GET_CP15_WRITE_BUFFER_ENABLE(v) HW_INST_MRC(p15,0,c3,c0,0,v) 152 #define HW_GET_CP15_ACCESS_PERMISSION(v) HW_INST_MRC(p15,0,c5,c0,0,v) 153 #define HW_GET_CP15_DATA_ACCESS_PERMISSION(v) HW_GET_CP15_ACCESS_PERMISSION(v) 154 #define HW_GET_CP15_INSTRUCTION_ACCESS_PERMISSION(v) HW_INST_MRC(p15,0,c5,c0,1,v) 155 #define HW_GET_CP15_DATA_ACCESS_PERMISSION_EX(v) HW_INST_MRC(p15,0,c5,c0,2,v) 156 #define HW_GET_CP15_INSTRUCTION_ACCESS_PERMISSION_EX(v) HW_INST_MRC(p15,0,c5,c0,3,v) 157 #define HW_GET_CP15_PROTECTION_REGION_0(v) HW_INST_MRC(p15,0,c6,c0,0,v) 158 #define HW_GET_CP15_PROTECTION_REGION_1(v) HW_INST_MRC(p15,0,c6,c1,0,v) 159 #define HW_GET_CP15_PROTECTION_REGION_2(v) HW_INST_MRC(p15,0,c6,c2,0,v) 160 #define HW_GET_CP15_PROTECTION_REGION_3(v) HW_INST_MRC(p15,0,c6,c3,0,v) 161 #define HW_GET_CP15_PROTECTION_REGION_4(v) HW_INST_MRC(p15,0,c6,c4,0,v) 162 #define HW_GET_CP15_PROTECTION_REGION_5(v) HW_INST_MRC(p15,0,c6,c5,0,v) 163 #define HW_GET_CP15_PROTECTION_REGION_6(v) HW_INST_MRC(p15,0,c6,c6,0,v) 164 #define HW_GET_CP15_PROTECTION_REGION_7(v) HW_INST_MRC(p15,0,c6,c7,0,v) 165 #endif 166 167 #define HW_GET_CP15_PA(v) HW_INST_MRC(p15,0,c7,c4,0,v) 168 #define HW_GET_CP15_DATA_CACHE_LOCKDOWN(v) HW_INST_MRC(p15,0,c9,c0,0,v) 169 170 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 171 #define HW_GET_CP15_INSTRUCTION_CACHE_LOCKDOWN(v) HW_INST_MRC(p15,0,c9,c0,1,v) 172 #define HW_GET_CP15_DTCM(v) HW_INST_MRC(p15,0,c9,c1,0,v) 173 #define HW_GET_CP15_ITCM(v) HW_INST_MRC(p15,0,c9,c1,1,v) 174 #endif 175 176 #define HW_GET_CP15_TLB_LOCKDOWN(v) HW_INST_MRC(p15,0,c10,c0,0,v) 177 #define HW_GET_CP15_PRIMARY_REGION_REMAP(v) HW_INST_MRC(p15,0,c10,c2,0,v) 178 #define HW_GET_CP15_NORMAL_REGION_REMAP(v) HW_INST_MRC(p15,0,c10,c2,1,v) 179 #define HW_GET_CP15_FSCSE_PID(v) HW_INST_MRC(p15,0,c13,c0,0,v) 180 #define HW_GET_CP15_CONTEXT_ID(v) HW_INST_MRC(p15,0,c13,c0,1,v) 181 #define HW_GET_CP15_THREAD_ID(v) HW_INST_MRC(p15,0,c13,c0,2,v) 182 #define HW_GET_CP15_THREAD_ID_USER_READ_ONLY(v) HW_INST_MRC(p15,0,c13,c0,3,v) 183 #define HW_GET_CP15_THREAD_ID_PRIVILEGED_ONLY(v) HW_INST_MRC(p15,0,c13,c0,4,v) 184 185 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 186 #define HW_GET_CP15_TEST_STATE(v) HW_INST_MRC(p15,0,c15,c0,0,v) 187 #define HW_GET_CP15_INSTRUCTIN_TAG_BIST_ADDRESS(v) HW_INST_MRC(p15,0,c15,c0,2,v) 188 #define HW_GET_CP15_INSTRUCTIN_TAG_BIST_GENERAL(v) HW_INST_MRC(p15,0,c15,c0,3,v) 189 #define HW_GET_CP15_DATA_TAG_BIST_ADDRESS(v) HW_INST_MRC(p15,0,c15,c0,6,v) 190 #define HW_GET_CP15_DATA_TAG_BIST_GENERAL(v) HW_INST_MRC(p15,0,c15,c0,7,v) 191 #define HW_GET_CP15_ITCM_BIST_ADDRESS(v) HW_INST_MRC(p15,1,c15,c0,2,v) 192 #define HW_GET_CP15_ITCM_BIST_GENERAL(v) HW_INST_MRC(p15,1,c15,c0,3,v) 193 #define HW_GET_CP15_DTCM_BIST_ADDRESS(v) HW_INST_MRC(p15,1,c15,c0,6,v) 194 #define HW_GET_CP15_DTCM_BIST_GENERAL(v) HW_INST_MRC(p15,1,c15,c0,7,v) 195 #define HW_GET_CP15_TRACE_STATE_CONTROL(v) HW_INST_MRC(p15,1,c15,c1,0,v) 196 #define HW_GET_CP15_INSTRUCTIN_CACHE_RAM_BIST_ADDRESS(v) HW_INST_MRC(p15,2,c15,c0,2,v) 197 #define HW_GET_CP15_INSTRUCTIN_CACHE_RAM_BIST_GENERAL(v) HW_INST_MRC(p15,2,c15,c0,3,v) 198 #define HW_GET_CP15_DATA_CACHE_RAM_BIST_ADDRESS(v) HW_INST_MRC(p15,2,c15,c0,6,v) 199 #define HW_GET_CP15_DATA_CACHE_RAM_BIST_GENERAL(v) HW_INST_MRC(p15,2,c15,c0,7,v) 200 #endif 201 202 #define HW_GET_CP15_PERFORMANCE_MONITOR_CONTROL(v) HW_INST_MRC(p15,0,c15,c12,0,v) 203 #define HW_GET_CP15_CCNT(v) HW_INST_MRC(p15,0,c15,c12,1,v) 204 #define HW_GET_CP15_PMN0(v) HW_INST_MRC(p15,0,c15,c12,2,v) 205 #define HW_GET_CP15_PMN1(v) HW_INST_MRC(p15,0,c15,c12,3,v) 206 207 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 208 #define HW_GET_CP15_CACHE_DEBUG_INDEX(v) HW_INST_MRC(p15,3,c15,c0,0,v) 209 #define HW_GET_CP15_INSTRUCTION_TAG(v) HW_INST_MRC(p15,3,c15,c1,0,v) 210 #define HW_GET_CP15_DATA_TAG(v) HW_INST_MRC(p15,3,c15,c2,0,v) 211 #define HW_GET_CP15_INSTRUCTION_CACHE(v) HW_INST_MRC(p15,3,c15,c3,0,v) 212 #define HW_GET_CP15_DATA_CACHE(v) HW_INST_MRC(p15,3,c15,c4,0,v) 213 #endif 214 215 #define HW_GET_CP15_MAIN_TLB_LOCKDOWN_VA(v) HW_INST_MRC(p15,5,c15,c5,2,v) 216 #define HW_GET_CP15_MAIN_TLB_LOCKDOWN_PA(v) HW_INST_MRC(p15,5,c15,c6,2,v) 217 #define HW_GET_CP15_MAIN_TLB_LOCKDOWN_ATTRIBUTE(v) HW_INST_MRC(p15,5,c15,c7,2,v) 218 #define HW_GET_CP15_TLB_DEBUG_CONTROL(v) HW_INST_MRC(p15,7,c15,c1,0,v) 219 220 #define HW_SET_CP15_CONTROL(v) HW_INST_MCR(p15,0,c1,c0,0,v) 221 #define HW_SET_CP15_AUX_CONTROL(v) HW_INST_MCR(p15,0,c1,c0,1,v) 222 #define HW_SET_CP15_COPROCESSOR_ACCESS_CONTROL(v) HW_INST_MCR(p15,0,c1,c0,2,v) 223 224 #if defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6) 225 #define HW_SET_CP15_TTB0(v) HW_INST_MCR(p15,0,c2,c0,0,v) 226 #define HW_SET_CP15_TTB1(v) HW_INST_MCR(p15,0,c2,c0,1,v) 227 #define HW_SET_CP15_TTB_CONTROL(v) HW_INST_MCR(p15,0,c2,c0,2,v) 228 #define HW_SET_CP15_DOMAIN_ACCESS_CONTROL(v) HW_INST_MCR(p15,0,c3,c0,0,v) 229 #define HW_SET_CP15_DATA_FAULT_STATUS(v) HW_INST_MCR(p15,0,c5,c0,0,v) 230 #define HW_SET_CP15_INSTRUCTION_FAULT_STATUS(v) HW_INST_MCR(p15,0,c5,c0,1,v) 231 #define HW_SET_CP15_DATA_FAULT_ADDRESS(v) HW_INST_MCR(p15,0,c6,c0,0,v) 232 #define HW_SET_CP15_WATCHPOINT_FAULT_ADDRESS(v) HW_INST_MCR(p15,0,c6,c0,1,v) 233 #else 234 #define HW_SET_CP15_CACHE_ENABLE(v) HW_INST_MCR(p15,0,c2,c0,0,v) 235 #define HW_SET_CP15_DATA_CACHE_ENABLE(v) HW_SET_CP15_CACHE_ENABLE(v) 236 #define HW_SET_CP15_INSTRUCTION_CACHE_ENABLE(v) HW_INST_MCR(p15,0,c2,c0,1,v) 237 #define HW_SET_CP15_WRITE_BUFFER_ENABLE(v) HW_INST_MCR(p15,0,c3,c0,0,v) 238 #define HW_SET_CP15_ACCESS_PERMISSION(v) HW_INST_MCR(p15,0,c5,c0,0,v) 239 #define HW_SET_CP15_DATA_ACCESS_PERMISSION(v) HW_SET_CP15_ACCESS_PERMISSION(v) 240 #define HW_SET_CP15_INSTRUCTION_ACCESS_PERMISSION(v) HW_INST_MCR(p15,0,c5,c0,1,v) 241 #define HW_SET_CP15_DATA_ACCESS_PERMISSION_EX(v) HW_INST_MCR(p15,0,c5,c0,2,v) 242 #define HW_SET_CP15_INSTRUCTION_ACCESS_PERMISSION_EX(v) HW_INST_MCR(p15,0,c5,c0,3,v) 243 #define HW_SET_CP15_PROTECTION_REGION_0(v) HW_INST_MCR(p15,0,c6,c0,0,v) 244 #define HW_SET_CP15_PROTECTION_REGION_1(v) HW_INST_MCR(p15,0,c6,c1,0,v) 245 #define HW_SET_CP15_PROTECTION_REGION_2(v) HW_INST_MCR(p15,0,c6,c2,0,v) 246 #define HW_SET_CP15_PROTECTION_REGION_3(v) HW_INST_MCR(p15,0,c6,c3,0,v) 247 #define HW_SET_CP15_PROTECTION_REGION_4(v) HW_INST_MCR(p15,0,c6,c4,0,v) 248 #define HW_SET_CP15_PROTECTION_REGION_5(v) HW_INST_MCR(p15,0,c6,c5,0,v) 249 #define HW_SET_CP15_PROTECTION_REGION_6(v) HW_INST_MCR(p15,0,c6,c6,0,v) 250 #define HW_SET_CP15_PROTECTION_REGION_7(v) HW_INST_MCR(p15,0,c6,c7,0,v) 251 #endif 252 253 #define HW_SET_CP15_WFI(v) HW_INST_MCR(p15,0,c7,c0,4,v) 254 #define HW_SET_CP15_INVALIDATE_ENTIRE_INSTRUCTION_CACHE(v) HW_INST_MCR(p15,0,c7,c5,0,v) 255 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_CACHE_MVA(v) HW_INST_MCR(p15,0,c7,c5,1,v) 256 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_CACHE_INDEX(v) HW_INST_MCR(p15,0,c7,c5,2,v) 257 #define HW_SET_CP15_FLUSH_PREFETCH_BUFFER(v) HW_INST_MCR(p15,0,c7,c5,4,v) 258 #define HW_SET_CP15_FLUSH_ENTIRE_BRANCH_TARGET_CACHE(v) HW_INST_MCR(p15,0,c7,c5,6,v) 259 #define HW_SET_CP15_FLUSH_BRANCH_TARGET_CACHE_ENTRY(v) HW_INST_MCR(p15,0,c7,c5,7,v) 260 #define HW_SET_CP15_INVALIDATE_ENTIRE_DATA_CACHE(v) HW_INST_MCR(p15,0,c7,c6,0,v) 261 #define HW_SET_CP15_INVALIDATE_DATA_CACHE_MVA(v) HW_INST_MCR(p15,0,c7,c6,1,v) 262 #define HW_SET_CP15_INVALIDATE_DATA_CACHE_INDEX(v) HW_INST_MCR(p15,0,c7,c6,2,v) 263 #define HW_SET_CP15_INVALIDATE_BOTH_CACHE(v) HW_INST_MCR(p15,0,c7,c7,0,v) 264 #define HW_SET_CP15_VA_TO_PA_PRIVILEGED_READ(v) HW_INST_MCR(p15,0,c7,c8,0,v) 265 #define HW_SET_CP15_VA_TO_PA_PRIVILEGED_WRITE(v) HW_INST_MCR(p15,0,c7,c8,1,v) 266 #define HW_SET_CP15_VA_TO_PA_USER_READ(v) HW_INST_MCR(p15,0,c7,c8,2,v) 267 #define HW_SET_CP15_VA_TO_PA_USER_WRITE(v) HW_INST_MCR(p15,0,c7,c8,3,v) 268 #define HW_SET_CP15_CLEAN_ENTIRE_DATA_CACHE(v) HW_INST_MCR(p15,0,c7,c10,0,v) 269 #define HW_SET_CP15_CLEAN_DATA_CACHE_MVA(v) HW_INST_MCR(p15,0,c7,c10,1,v) 270 #define HW_SET_CP15_CLEAN_DATA_CACHE_INDEX(v) HW_INST_MCR(p15,0,c7,c10,2,v) 271 #define HW_SET_CP15_DATA_SYNC_BARRIER(v) HW_INST_MCR(p15,0,c7,c10,4,v) 272 #define HW_SET_CP15_DATA_MEMORY_BARRIER(v) HW_INST_MCR(p15,0,c7,c10,5,v) 273 #define HW_SET_CP15_CLEAN_INVALIDATE_ENTIRE_DATA_CACHE(v) HW_INST_MCR(p15,0,c7,c14,0,v) 274 #define HW_SET_CP15_CLEAN_INVALIDATE_DATA_CACHE_MVA(v) HW_INST_MCR(p15,0,c7,c14,1,v) 275 #define HW_SET_CP15_CLEAN_INVALIDATE_DATA_CACHE_INDEX(v) HW_INST_MCR(p15,0,c7,c14,2,v) 276 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_TLB(v) HW_INST_MCR(p15,0,c8,c5,0,v) 277 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_TLB_SINGLE(v) HW_INST_MCR(p15,0,c8,c5,1,v) 278 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_TLB_ASID(v) HW_INST_MCR(p15,0,c8,c5,2,v) 279 #define HW_SET_CP15_INVALIDATE_INSTRUCTION_TLB_MVA(v) HW_INST_MCR(p15,0,c8,c5,3,v) 280 #define HW_SET_CP15_INVALIDATE_DATA_TLB(v) HW_INST_MCR(p15,0,c8,c6,0,v) 281 #define HW_SET_CP15_INVALIDATE_DATA_TLB_SINGLE(v) HW_INST_MCR(p15,0,c8,c6,1,v) 282 #define HW_SET_CP15_INVALIDATE_DATA_TLB_ASID(v) HW_INST_MCR(p15,0,c8,c6,2,v) 283 #define HW_SET_CP15_INVALIDATE_DATA_TLB_MVA(v) HW_INST_MCR(p15,0,c8,c6,3,v) 284 #define HW_SET_CP15_INVALIDATE_UNIFIED_TLB(v) HW_INST_MCR(p15,0,c8,c7,0,v) 285 #define HW_SET_CP15_INVALIDATE_UNIFIED_TLB_SINGLE(v) HW_INST_MCR(p15,0,c8,c7,1,v) 286 #define HW_SET_CP15_INVALIDATE_UNIFIED_TLB_ASID(v) HW_INST_MCR(p15,0,c8,c7,2,v) 287 #define HW_SET_CP15_INVALIDATE_UNIFIED_TLB_MVA(v) HW_INST_MCR(p15,0,c8,c7,3,v) 288 #define HW_SET_CP15_DATA_CACHE_LOCKDOWN(v) HW_INST_MCR(p15,0,c9,c0,0,v) 289 290 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 291 #define HW_SET_CP15_INSTRUCTION_CACHE_LOCKDOWN(v) HW_INST_MCR(p15,0,c9,c0,1,v) 292 #define HW_SET_CP15_DTCM(v) HW_INST_MCR(p15,0,c9,c1,0,v) 293 #define HW_SET_CP15_ITCM(v) HW_INST_MCR(p15,0,c9,c1,1,v) 294 #endif 295 296 #define HW_SET_CP15_TLB_LOCKDOWN(v) HW_INST_MCR(p15,0,c10,c0,0,v) 297 #define HW_SET_CP15_PRIMARY_REGION_REMAP(v) HW_INST_MCR(p15,0,c10,c2,0,v) 298 #define HW_SET_CP15_NORMAL_REGION_REMAP(v) HW_INST_MCR(p15,0,c10,c2,1,v) 299 #define HW_SET_CP15_FSCSE_PID(v) HW_INST_MCR(p15,0,c13,c0,0,v) 300 #define HW_SET_CP15_CONTEXT_ID(v) HW_INST_MCR(p15,0,c13,c0,1,v) 301 #define HW_SET_CP15_THREAD_ID(v) HW_INST_MCR(p15,0,c13,c0,2,v) 302 #define HW_SET_CP15_THREAD_ID_USER_READ_ONLY(v) HW_INST_MCR(p15,0,c13,c0,3,v) 303 #define HW_SET_CP15_THREAD_ID_PRIVILEGED_ONLY(v) HW_INST_MCR(p15,0,c13,c0,4,v) 304 305 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 306 #define HW_SET_CP15_TEST_STATE(v) HW_INST_MCR(p15,0,c15,c0,0,v) 307 #define HW_SET_CP15_INSTRUCTIN_TAG_BIST_ADDRESS(v) HW_INST_MCR(p15,0,c15,c0,2,v) 308 #define HW_SET_CP15_INSTRUCTIN_TAG_BIST_GENERAL(v) HW_INST_MCR(p15,0,c15,c0,3,v) 309 #define HW_SET_CP15_DATA_TAG_BIST_ADDRESS(v) HW_INST_MCR(p15,0,c15,c0,6,v) 310 #define HW_SET_CP15_DATA_TAG_BIST_GENERAL(v) HW_INST_MCR(p15,0,c15,c0,7,v) 311 #define HW_SET_CP15_ITCM_BIST_ADDRESS(v) HW_INST_MCR(p15,1,c15,c0,2,v) 312 #define HW_SET_CP15_ITCM_BIST_GENERAL(v) HW_INST_MCR(p15,1,c15,c0,3,v) 313 #define HW_SET_CP15_DTCM_BIST_ADDRESS(v) HW_INST_MCR(p15,1,c15,c0,6,v) 314 #define HW_SET_CP15_DTCM_BIST_GENERAL(v) HW_INST_MCR(p15,1,c15,c0,7,v) 315 #define HW_SET_CP15_TRACE_STATE_CONTROL(v) HW_INST_MCR(p15,1,c15,c1,0,v) 316 #define HW_SET_CP15_INSTRUCTIN_CACHE_RAM_BIST_ADDRESS(v) HW_INST_MCR(p15,2,c15,c0,2,v) 317 #define HW_SET_CP15_INSTRUCTIN_CACHE_RAM_BIST_GENERAL(v) HW_INST_MCR(p15,2,c15,c0,3,v) 318 #define HW_SET_CP15_DATA_CACHE_RAM_BIST_ADDRESS(v) HW_INST_MCR(p15,2,c15,c0,6,v) 319 #define HW_SET_CP15_DATA_CACHE_RAM_BIST_GENERAL(v) HW_INST_MCR(p15,2,c15,c0,7,v) 320 #endif 321 322 #define HW_SET_CP15_PERFORMANCE_MONITOR_CONTROL(v) HW_INST_MCR(p15,0,c15,c12,0,v) 323 #define HW_SET_CP15_CCNT(v) HW_INST_MCR(p15,0,c15,c12,1,v) 324 #define HW_SET_CP15_PMN0(v) HW_INST_MCR(p15,0,c15,c12,2,v) 325 #define HW_SET_CP15_PMN1(v) HW_INST_MCR(p15,0,c15,c12,3,v) 326 #define HW_SET_CP15_READ_MAIN_TLB_LOCKDOWN_ENTRY(v) HW_INST_MCR(p15,5,c15,c4,2,v) 327 #define HW_SET_CP15_WRITE_MAIN_TLB_LOCKDOWN_ENTRY(v) HW_INST_MCR(p15,5,c15,c4,4,v) 328 329 #if ! (defined(SDK_ARM11) || defined(NN_PROCESSOR_ARM_V6)) 330 #define HW_SET_CP15_CACHE_DEBUG_INDEX(v) HW_INST_MCR(p15,3,c15,c0,0,v) 331 #define HW_SET_CP15_INSTRUCTION_TAG(v) HW_INST_MCR(p15,3,c15,c1,0,v) 332 #define HW_SET_CP15_DATA_TAG(v) HW_INST_MCR(p15,3,c15,c2,0,v) 333 #define HW_SET_CP15_INSTRUCTION_CACHE(v) HW_INST_MCR(p15,3,c15,c3,0,v) 334 #define HW_SET_CP15_DATA_CACHE(v) HW_INST_MCR(p15,3,c15,c4,0,v) 335 #endif 336 337 #define HW_SET_CP15_MAIN_TLB_LOCKDOWN_VA(v) HW_INST_MCR(p15,5,c15,c5,2,v) 338 #define HW_SET_CP15_MAIN_TLB_LOCKDOWN_PA(v) HW_INST_MCR(p15,5,c15,c6,2,v) 339 #define HW_SET_CP15_MAIN_TLB_LOCKDOWN_ATTRIBUTE(v) HW_INST_MCR(p15,5,c15,c7,2,v) 340 #define HW_SET_CP15_TLB_DEBUG_CONTROL(v) HW_INST_MCR(p15,7,c15,c1,0,v) 341 342 // 343 // static input value 344 // 345 #define HW_CP15_WFI() HW_INST_MCR(p15,0,c7,c0,4,0) 346 #define HW_CP15_INVALIDATE_ENTIRE_INSTRUCTION_CACHE() HW_INST_MCR(p15,0,c7,c5,0,0) 347 #define HW_CP15_FLUSH_PREFETCH_BUFFER() HW_INST_MCR(p15,0,c7,c5,4,0) 348 #define HW_CP15_FLUSH_ENTIRE_BRANCH_TARGET_CACHE() HW_INST_MCR(p15,0,c7,c5,6,0) 349 #define HW_CP15_INVALIDATE_ENTIRE_DATA_CACHE() HW_INST_MCR(p15,0,c7,c6,0,0) 350 #define HW_CP15_INVALIDATE_BOTH_CACHE() HW_INST_MCR(p15,0,c7,c7,0,0) 351 #define HW_CP15_CLEAN_ENTIRE_DATA_CACHE() HW_INST_MCR(p15,0,c7,c10,0,0) 352 #define HW_CP15_DATA_SYNC_BARRIER() HW_INST_MCR(p15,0,c7,c10,4,0) 353 #define HW_CP15_DATA_MEMORY_BARRIER() HW_INST_MCR(p15,0,c7,c10,5,0) 354 #define HW_CP15_CLEAN_INVALIDATE_ENTIRE_DATA_CACHE() HW_INST_MCR(p15,0,c7,c14,0,0) 355 #define HW_CP15_INVALIDATE_INSTRUCTION_TLB() HW_INST_MCR(p15,0,c8,c5,0,0) 356 #define HW_CP15_INVALIDATE_DATA_TLB() HW_INST_MCR(p15,0,c8,c6,0,0) 357 #define HW_CP15_INVALIDATE_UNIFIED_TLB() HW_INST_MCR(p15,0,c8,c7,0,0) 358 359 360 #ifdef __cplusplus 361 } // extern "C" 362 #endif 363 364 // NN_HW_ARM_REG_ACCESS_H_ 365 #endif 366