diff options
| author | 2015-06-13 15:05:51 -0400 | |
|---|---|---|
| committer | 2015-06-13 15:05:51 -0400 | |
| commit | 54e69b89b9c324c00a9acdb024603c6f1d389141 (patch) | |
| tree | 0274e47441859cff0f114a9a1adafea9a13d4696 /src | |
| parent | Merge pull request #856 from lioncash/vfp (diff) | |
| parent | vfp: Handle accesses to the VFP media feature registers (diff) | |
| download | yuzu-54e69b89b9c324c00a9acdb024603c6f1d389141.tar.gz yuzu-54e69b89b9c324c00a9acdb024603c6f1d389141.tar.xz yuzu-54e69b89b9c324c00a9acdb024603c6f1d389141.zip | |
Merge pull request #857 from lioncash/vfp
vfp: Handle accesses to the VFP media feature registers
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/arm/skyeye_common/arm_regformat.h | 2 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfp.cpp | 4 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpinstr.cpp | 6 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/core/arm/skyeye_common/arm_regformat.h b/src/core/arm/skyeye_common/arm_regformat.h index 6c89774eb..a92effbb4 100644 --- a/src/core/arm/skyeye_common/arm_regformat.h +++ b/src/core/arm/skyeye_common/arm_regformat.h | |||
| @@ -59,6 +59,8 @@ enum { | |||
| 59 | VFP_FPSID, | 59 | VFP_FPSID, |
| 60 | VFP_FPSCR, | 60 | VFP_FPSCR, |
| 61 | VFP_FPEXC, | 61 | VFP_FPEXC, |
| 62 | VFP_MVFR0, | ||
| 63 | VFP_MVFR1, | ||
| 62 | 64 | ||
| 63 | // Not an actual register. | 65 | // Not an actual register. |
| 64 | // All VFP system registers should be defined above this. | 66 | // All VFP system registers should be defined above this. |
diff --git a/src/core/arm/skyeye_common/vfp/vfp.cpp b/src/core/arm/skyeye_common/vfp/vfp.cpp index b88d47750..571d6c2f2 100644 --- a/src/core/arm/skyeye_common/vfp/vfp.cpp +++ b/src/core/arm/skyeye_common/vfp/vfp.cpp | |||
| @@ -33,6 +33,10 @@ unsigned VFPInit(ARMul_State* state) | |||
| 33 | state->VFP[VFP_FPEXC] = 0; | 33 | state->VFP[VFP_FPEXC] = 0; |
| 34 | state->VFP[VFP_FPSCR] = 0; | 34 | state->VFP[VFP_FPSCR] = 0; |
| 35 | 35 | ||
| 36 | // ARM11 MPCore feature register values. | ||
| 37 | state->VFP[VFP_MVFR0] = 0x11111111; | ||
| 38 | state->VFP[VFP_MVFR1] = 0; | ||
| 39 | |||
| 36 | return 0; | 40 | return 0; |
| 37 | } | 41 | } |
| 38 | 42 | ||
diff --git a/src/core/arm/skyeye_common/vfp/vfpinstr.cpp b/src/core/arm/skyeye_common/vfp/vfpinstr.cpp index d4060b791..67fe63aa4 100644 --- a/src/core/arm/skyeye_common/vfp/vfpinstr.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpinstr.cpp | |||
| @@ -1141,12 +1141,10 @@ VMRS_INST: | |||
| 1141 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPSID]; | 1141 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPSID]; |
| 1142 | break; | 1142 | break; |
| 1143 | case 6: | 1143 | case 6: |
| 1144 | /* MVFR1, VFPv3 only ? */ | 1144 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_MVFR1]; |
| 1145 | LOG_TRACE(Core_ARM11, "\tr%d <= MVFR1 unimplemented\n", inst_cream->Rt); | ||
| 1146 | break; | 1145 | break; |
| 1147 | case 7: | 1146 | case 7: |
| 1148 | /* MVFR0, VFPv3 only? */ | 1147 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_MVFR0]; |
| 1149 | LOG_TRACE(Core_ARM11, "\tr%d <= MVFR0 unimplemented\n", inst_cream->Rt); | ||
| 1150 | break; | 1148 | break; |
| 1151 | case 8: | 1149 | case 8: |
| 1152 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPEXC]; | 1150 | cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPEXC]; |