vfp: Handle accesses to the VFP media feature registers
These are able to be accessed in any privilege mode.
This commit is contained in:
parent
2a435aa0cc
commit
71858fc7cc
|
@ -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.
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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];
|
||||||
|
|
Reference in New Issue