diff options
| author | 2015-03-26 12:54:16 -0400 | |
|---|---|---|
| committer | 2015-04-02 00:19:11 -0400 | |
| commit | 5e5954c63b1a22ba2d333d23ae4c194798fe5412 (patch) | |
| tree | b002936fff0450760eff4469a06e48e745200a36 /src/core/arm/skyeye_common | |
| parent | dyncom: Migrate InAPrivilegedMode to armsupp (diff) | |
| download | yuzu-5e5954c63b1a22ba2d333d23ae4c194798fe5412.tar.gz yuzu-5e5954c63b1a22ba2d333d23ae4c194798fe5412.tar.xz yuzu-5e5954c63b1a22ba2d333d23ae4c194798fe5412.zip | |
dyncom: Move CP15 register reading into its own function.
Keeps everything contained. Added all supported readable registers in an ARM11 MPCore.
Diffstat (limited to 'src/core/arm/skyeye_common')
| -rw-r--r-- | src/core/arm/skyeye_common/arm_regformat.h | 57 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/armdefs.h | 2 |
2 files changed, 54 insertions, 5 deletions
diff --git a/src/core/arm/skyeye_common/arm_regformat.h b/src/core/arm/skyeye_common/arm_regformat.h index 5be3a561f..fb5b70f1e 100644 --- a/src/core/arm/skyeye_common/arm_regformat.h +++ b/src/core/arm/skyeye_common/arm_regformat.h | |||
| @@ -50,6 +50,8 @@ enum { | |||
| 50 | EXCLUSIVE_TAG, | 50 | EXCLUSIVE_TAG, |
| 51 | EXCLUSIVE_STATE, | 51 | EXCLUSIVE_STATE, |
| 52 | EXCLUSIVE_RESULT, | 52 | EXCLUSIVE_RESULT, |
| 53 | |||
| 54 | // c0 - Information registers | ||
| 53 | CP15_BASE, | 55 | CP15_BASE, |
| 54 | CP15_C0 = CP15_BASE, | 56 | CP15_C0 = CP15_BASE, |
| 55 | CP15_C0_C0 = CP15_C0, | 57 | CP15_C0_C0 = CP15_C0, |
| @@ -57,15 +59,30 @@ enum { | |||
| 57 | CP15_CACHE_TYPE, | 59 | CP15_CACHE_TYPE, |
| 58 | CP15_TCM_STATUS, | 60 | CP15_TCM_STATUS, |
| 59 | CP15_TLB_TYPE, | 61 | CP15_TLB_TYPE, |
| 62 | CP15_CPU_ID, | ||
| 60 | CP15_C0_C1, | 63 | CP15_C0_C1, |
| 61 | CP15_PROCESSOR_FEATURE_0 = CP15_C0_C1, | 64 | CP15_PROCESSOR_FEATURE_0 = CP15_C0_C1, |
| 62 | CP15_PROCESSOR_FEATURE_1, | 65 | CP15_PROCESSOR_FEATURE_1, |
| 63 | CP15_DEBUG_FEATURE_0, | 66 | CP15_DEBUG_FEATURE_0, |
| 64 | CP15_AUXILIARY_FEATURE_0, | 67 | CP15_AUXILIARY_FEATURE_0, |
| 68 | CP15_MEMORY_MODEL_FEATURE_0, | ||
| 69 | CP15_MEMORY_MODEL_FEATURE_1, | ||
| 70 | CP15_MEMORY_MODEL_FEATURE_2, | ||
| 71 | CP15_MEMORY_MODEL_FEATURE_3, | ||
| 72 | CP15_C0_C2, | ||
| 73 | CP15_ISA_FEATURE_0 = CP15_C0_C2, | ||
| 74 | CP15_ISA_FEATURE_1, | ||
| 75 | CP15_ISA_FEATURE_2, | ||
| 76 | CP15_ISA_FEATURE_3, | ||
| 77 | CP15_ISA_FEATURE_4, | ||
| 78 | |||
| 79 | // c1 - Control registers | ||
| 65 | CP15_C1_C0, | 80 | CP15_C1_C0, |
| 66 | CP15_CONTROL = CP15_C1_C0, | 81 | CP15_CONTROL = CP15_C1_C0, |
| 67 | CP15_AUXILIARY_CONTROL, | 82 | CP15_AUXILIARY_CONTROL, |
| 68 | CP15_COPROCESSOR_ACCESS_CONTROL, | 83 | CP15_COPROCESSOR_ACCESS_CONTROL, |
| 84 | |||
| 85 | // c2 - Translation table registers | ||
| 69 | CP15_C2, | 86 | CP15_C2, |
| 70 | CP15_C2_C0 = CP15_C2, | 87 | CP15_C2_C0 = CP15_C2, |
| 71 | CP15_TRANSLATION_BASE = CP15_C2_C0, | 88 | CP15_TRANSLATION_BASE = CP15_C2_C0, |
| @@ -74,24 +91,54 @@ enum { | |||
| 74 | CP15_TRANSLATION_BASE_CONTROL, | 91 | CP15_TRANSLATION_BASE_CONTROL, |
| 75 | CP15_DOMAIN_ACCESS_CONTROL, | 92 | CP15_DOMAIN_ACCESS_CONTROL, |
| 76 | CP15_RESERVED, | 93 | CP15_RESERVED, |
| 77 | /* Fault status */ | 94 | |
| 95 | // c5 - Fault status registers | ||
| 78 | CP15_FAULT_STATUS, | 96 | CP15_FAULT_STATUS, |
| 79 | CP15_INSTR_FAULT_STATUS, | 97 | CP15_INSTR_FAULT_STATUS, |
| 80 | CP15_COMBINED_DATA_FSR = CP15_FAULT_STATUS, | 98 | CP15_COMBINED_DATA_FSR = CP15_FAULT_STATUS, |
| 81 | CP15_INST_FSR, | 99 | CP15_INST_FSR, |
| 82 | /* Fault Address register */ | 100 | |
| 101 | // c6 - Fault Address registers | ||
| 83 | CP15_FAULT_ADDRESS, | 102 | CP15_FAULT_ADDRESS, |
| 84 | CP15_COMBINED_DATA_FAR = CP15_FAULT_ADDRESS, | 103 | CP15_COMBINED_DATA_FAR = CP15_FAULT_ADDRESS, |
| 85 | CP15_WFAR, | 104 | CP15_WFAR, |
| 86 | CP15_IFAR, | 105 | CP15_IFAR, |
| 106 | |||
| 107 | // c7 - Cache operation registers | ||
| 108 | CP15_PHYS_ADDRESS, | ||
| 109 | |||
| 110 | // c9 - Data cache lockdown register | ||
| 111 | CP15_DATA_CACHE_LOCKDOWN, | ||
| 112 | |||
| 113 | // c10 - TLB/Memory map registers | ||
| 114 | CP15_TLB_LOCKDOWN, | ||
| 115 | CP15_PRIMARY_REGION_REMAP, | ||
| 116 | CP15_NORMAL_REGION_REMAP, | ||
| 117 | |||
| 118 | // c13 - Thread related registers | ||
| 87 | CP15_PID, | 119 | CP15_PID, |
| 88 | CP15_CONTEXT_ID, | 120 | CP15_CONTEXT_ID, |
| 89 | CP15_THREAD_UPRW, // Thread ID register - User/Privileged Read/Write | 121 | CP15_THREAD_UPRW, // Thread ID register - User/Privileged Read/Write |
| 90 | CP15_THREAD_URO, // Thread ID register - User Read Only (Privileged R/W) | 122 | CP15_THREAD_URO, // Thread ID register - User Read Only (Privileged R/W) |
| 91 | CP15_THREAD_PRW, // Thread ID register - Privileged R/W only. | 123 | CP15_THREAD_PRW, // Thread ID register - Privileged R/W only. |
| 92 | CP15_TLB_FAULT_ADDR, /* defined by SkyEye */ | 124 | |
| 93 | CP15_TLB_FAULT_STATUS, /* defined by SkyEye */ | 125 | // c15 - Performance and TLB lockdown registers |
| 94 | /* VFP registers */ | 126 | CP15_PERFORMANCE_MONITOR_CONTROL, |
| 127 | CP15_CYCLE_COUNTER, | ||
| 128 | CP15_COUNT_0, | ||
| 129 | CP15_COUNT_1, | ||
| 130 | CP15_READ_MAIN_TLB_LOCKDOWN_ENTRY, | ||
| 131 | CP15_WRITE_MAIN_TLB_LOCKDOWN_ENTRY, | ||
| 132 | CP15_MAIN_TLB_LOCKDOWN_VIRT_ADDRESS, | ||
| 133 | CP15_MAIN_TLB_LOCKDOWN_PHYS_ADDRESS, | ||
| 134 | CP15_MAIN_TLB_LOCKDOWN_ATTRIBUTE, | ||
| 135 | CP15_TLB_DEBUG_CONTROL, | ||
| 136 | |||
| 137 | // Skyeye defined | ||
| 138 | CP15_TLB_FAULT_ADDR, | ||
| 139 | CP15_TLB_FAULT_STATUS, | ||
| 140 | |||
| 141 | // VFP registers | ||
| 95 | VFP_BASE, | 142 | VFP_BASE, |
| 96 | VFP_FPSID = VFP_BASE, | 143 | VFP_FPSID = VFP_BASE, |
| 97 | VFP_FPSCR, | 144 | VFP_FPSCR, |
diff --git a/src/core/arm/skyeye_common/armdefs.h b/src/core/arm/skyeye_common/armdefs.h index 633649d3e..14f2a39d1 100644 --- a/src/core/arm/skyeye_common/armdefs.h +++ b/src/core/arm/skyeye_common/armdefs.h | |||
| @@ -358,3 +358,5 @@ extern u32 ARMul_UnsignedSatQ(s32, u8, bool*); | |||
| 358 | 358 | ||
| 359 | extern bool InBigEndianMode(ARMul_State*); | 359 | extern bool InBigEndianMode(ARMul_State*); |
| 360 | extern bool InAPrivilegedMode(ARMul_State*); | 360 | extern bool InAPrivilegedMode(ARMul_State*); |
| 361 | |||
| 362 | extern u32 ReadCP15Register(ARMul_State* cpu, u32 crn, u32 opcode_1, u32 crm, u32 opcode_2); | ||