mirror of
https://github.com/n64dev/cen64.git
synced 2024-06-20 21:17:58 -04:00
Implement Reserved Instruction exception
This commit is contained in:
parent
b9c36a4e7f
commit
55a46f45da
|
@ -497,6 +497,18 @@ void VR4300_TRAP(struct vr4300* vr4300) {
|
|||
status, epc, 0x180);
|
||||
}
|
||||
|
||||
// RI: Reserved Instruction exception
|
||||
void VR4300_RI(struct vr4300* vr4300) {
|
||||
struct vr4300_latch *common = &vr4300->pipeline.exdc_latch.common;
|
||||
uint32_t cause, status;
|
||||
uint64_t epc;
|
||||
|
||||
vr4300_ex_fault(vr4300, VR4300_FAULT_RI);
|
||||
vr4300_exception_prolog(vr4300, common, &cause, &status, &epc);
|
||||
vr4300_exception_epilogue(vr4300, (cause & ~0xFF) | (10 << 2),
|
||||
status, epc, 0x180);
|
||||
}
|
||||
|
||||
// WAT: Watch exception.
|
||||
void VR4300_WAT(struct vr4300 *vr4300) {
|
||||
struct vr4300_pipeline *pipeline = &vr4300->pipeline;
|
||||
|
|
|
@ -36,6 +36,7 @@ cen64_cold void VR4300_ICB(struct vr4300 *vr4300);
|
|||
cen64_cold void VR4300_INTR(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_INV(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_LDI(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_RI(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_RST(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_SYSC(struct vr4300 *vr4300);
|
||||
cen64_cold void VR4300_WAT(struct vr4300 *vr4300);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
X(NONE) X(CP0I) X(RST) X(NMI) X(OVFL) X(TRAP) X(FPE) X(DADE) \
|
||||
X(DTLB) X(WAT) X(INTR) X(DCM) X(DCB) X(COP) X(DBE) X(SYSC) X(BRPT) \
|
||||
X(CPU) X(RSVD) X(LDI) X(MCI) X(IADE) X(ITM) X(ICB) X(UNC) X(ITLB) \
|
||||
X(IBE)
|
||||
X(IBE) X(RI)
|
||||
#endif
|
||||
|
||||
VR4300_FAULT_LIST
|
||||
|
|
|
@ -1060,6 +1060,9 @@ int VR4300_DSRLV(struct vr4300 *vr4300,
|
|||
//
|
||||
int VR4300_INVALID(struct vr4300 *vr4300,
|
||||
uint32_t iw, uint64_t unused(rs), uint64_t unused(rt)) {
|
||||
|
||||
VR4300_RI(vr4300);
|
||||
|
||||
#ifndef NDEBUG
|
||||
struct vr4300_rfex_latch *rfex_latch = &vr4300->pipeline.rfex_latch;
|
||||
|
||||
|
|
Loading…
Reference in a new issue