summaryrefslogtreecommitdiff
path: root/src/core/arm/interpreter/armemu.cpp
diff options
context:
space:
mode:
authorGravatar archshift2014-05-16 23:21:03 -0700
committerGravatar archshift2014-05-16 23:21:03 -0700
commitb8c8d0903ec9be4c7d580464480a0136277be803 (patch)
tree9280a9f01e1312d0d8aed493282ae65d2384963c /src/core/arm/interpreter/armemu.cpp
parentAdded FindGLEW to cmake-modules (diff)
parentMerge pull request #17 from bunnei/arm-vfp (diff)
downloadyuzu-b8c8d0903ec9be4c7d580464480a0136277be803.tar.gz
yuzu-b8c8d0903ec9be4c7d580464480a0136277be803.tar.xz
yuzu-b8c8d0903ec9be4c7d580464480a0136277be803.zip
Merge remote-tracking branch 'upstream/master' into issue-7-fix
Diffstat (limited to 'src/core/arm/interpreter/armemu.cpp')
-rw-r--r--src/core/arm/interpreter/armemu.cpp50
1 files changed, 22 insertions, 28 deletions
diff --git a/src/core/arm/interpreter/armemu.cpp b/src/core/arm/interpreter/armemu.cpp
index a35c5c8dc..87141653f 100644
--- a/src/core/arm/interpreter/armemu.cpp
+++ b/src/core/arm/interpreter/armemu.cpp
@@ -23,17 +23,6 @@
23#include "armemu.h" 23#include "armemu.h"
24#include "armos.h" 24#include "armos.h"
25 25
26void
27XScale_set_fsr_far(ARMul_State * state, ARMword fsr, ARMword _far)
28{
29 _dbg_assert_msg_(ARM11, false, "ImplementMe: XScale_set_fsr_far!");
30 //if (!state->is_XScale || (read_cp14_reg(10) & (1UL << 31)) == 0)
31 // return;
32 //
33 //write_cp15_reg(state, 5, 0, 0, fsr);
34 //write_cp15_reg(state, 6, 0, 0, _far);
35}
36
37#define ARMul_Debug(x,y,z) 0 // Disabling this /bunnei 26#define ARMul_Debug(x,y,z) 0 // Disabling this /bunnei
38 27
39//#include "skyeye_callback.h" 28//#include "skyeye_callback.h"
@@ -5536,14 +5525,15 @@ Handle_Load_Double (ARMul_State * state, ARMword instr)
5536 addr = base; 5525 addr = base;
5537 5526
5538 /* The address must be aligned on a 8 byte boundary. */ 5527 /* The address must be aligned on a 8 byte boundary. */
5539 if (addr & 0x7) { 5528 // FIX(Normatt): Disable strict alignment on LDRD/STRD
5540#ifdef ABORTS 5529// if (addr & 0x7) {
5541 ARMul_DATAABORT (addr); 5530//#ifdef ABORTS
5542#else 5531// ARMul_DATAABORT (addr);
5543 ARMul_UndefInstr (state, instr); 5532//#else
5544#endif 5533// ARMul_UndefInstr (state, instr);
5545 return; 5534//#endif
5546 } 5535// return;
5536// }
5547 5537
5548 /* For pre indexed or post indexed addressing modes, 5538 /* For pre indexed or post indexed addressing modes,
5549 check that the destination registers do not overlap 5539 check that the destination registers do not overlap
@@ -5640,14 +5630,15 @@ Handle_Store_Double (ARMul_State * state, ARMword instr)
5640 addr = base; 5630 addr = base;
5641 5631
5642 /* The address must be aligned on a 8 byte boundary. */ 5632 /* The address must be aligned on a 8 byte boundary. */
5643 if (addr & 0x7) { 5633 // FIX(Normatt): Disable strict alignment on LDRD/STRD
5644#ifdef ABORTS 5634// if (addr & 0x7) {
5645 ARMul_DATAABORT (addr); 5635//#ifdef ABORTS
5646#else 5636// ARMul_DATAABORT (addr);
5647 ARMul_UndefInstr (state, instr); 5637//#else
5648#endif 5638// ARMul_UndefInstr (state, instr);
5649 return; 5639//#endif
5650 } 5640// return;
5641// }
5651 5642
5652 /* For pre indexed or post indexed addressing modes, 5643 /* For pre indexed or post indexed addressing modes,
5653 check that the destination registers do not overlap 5644 check that the destination registers do not overlap
@@ -6405,6 +6396,8 @@ handle_v6_insn (ARMul_State * state, ARMword instr)
6405 if (state->Aborted) { 6396 if (state->Aborted) {
6406 TAKEABORT; 6397 TAKEABORT;
6407 } 6398 }
6399 // FIX(Normmatt): Handle RD in STREX/STREXB
6400 state->Reg[DESTReg] = 0; //Always succeed
6408 6401
6409 return 1; 6402 return 1;
6410 } 6403 }
@@ -6432,7 +6425,8 @@ handle_v6_insn (ARMul_State * state, ARMword instr)
6432 if (state->Aborted) { 6425 if (state->Aborted) {
6433 TAKEABORT; 6426 TAKEABORT;
6434 } 6427 }
6435 6428 // FIX(Normmatt): Handle RD in STREX/STREXB
6429 state->Reg[DESTReg] = 0; //Always succeed
6436 //printf("In %s, strexb not implemented\n", __FUNCTION__); 6430 //printf("In %s, strexb not implemented\n", __FUNCTION__);
6437 UNDEF_LSRBPC; 6431 UNDEF_LSRBPC;
6438 /* WRITESDEST (dest); */ 6432 /* WRITESDEST (dest); */