forked from ShuriZma/suyu
1
0
Fork 0

vfp: Handle accesses to the VFP media feature registers

These are able to be accessed in any privilege mode.
This commit is contained in:
Lioncash 2015-06-12 19:39:43 -04:00
parent 2a435aa0cc
commit 71858fc7cc
3 changed files with 8 additions and 4 deletions

View File

@ -59,6 +59,8 @@ enum {
VFP_FPSID, VFP_FPSID,
VFP_FPSCR, VFP_FPSCR,
VFP_FPEXC, VFP_FPEXC,
VFP_MVFR0,
VFP_MVFR1,
// Not an actual register. // Not an actual register.
// All VFP system registers should be defined above this. // All VFP system registers should be defined above this.

View File

@ -33,6 +33,10 @@ unsigned VFPInit(ARMul_State* state)
state->VFP[VFP_FPEXC] = 0; state->VFP[VFP_FPEXC] = 0;
state->VFP[VFP_FPSCR] = 0; state->VFP[VFP_FPSCR] = 0;
// ARM11 MPCore feature register values.
state->VFP[VFP_MVFR0] = 0x11111111;
state->VFP[VFP_MVFR1] = 0;
return 0; return 0;
} }

View File

@ -1141,12 +1141,10 @@ VMRS_INST:
cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPSID]; cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPSID];
break; break;
case 6: case 6:
/* MVFR1, VFPv3 only ? */ cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_MVFR1];
LOG_TRACE(Core_ARM11, "\tr%d <= MVFR1 unimplemented\n", inst_cream->Rt);
break; break;
case 7: case 7:
/* MVFR0, VFPv3 only? */ cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_MVFR0];
LOG_TRACE(Core_ARM11, "\tr%d <= MVFR0 unimplemented\n", inst_cream->Rt);
break; break;
case 8: case 8:
cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPEXC]; cpu->Reg[inst_cream->Rt] = cpu->VFP[VFP_FPEXC];