Add traps for unimplemented line 10 and 15
This commit is contained in:
parent
44f821b12e
commit
93d366bdc9
@ -22,10 +22,12 @@ enum InstructionCategory {
|
|||||||
Moveq = 7,
|
Moveq = 7,
|
||||||
OrDivSbcd = 8,
|
OrDivSbcd = 8,
|
||||||
SubSubx = 9,
|
SubSubx = 9,
|
||||||
|
Unimp10 = 10,
|
||||||
CmpEor = 11,
|
CmpEor = 11,
|
||||||
AndMulAbcdExg = 12,
|
AndMulAbcdExg = 12,
|
||||||
AddAddx = 13,
|
AddAddx = 13,
|
||||||
ShiftRotate = 14,
|
ShiftRotate = 14,
|
||||||
|
Unimp15 = 15,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(TryFromPrimitive, Debug, Copy, Clone, PartialEq, Eq)]
|
#[derive(TryFromPrimitive, Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
@ -228,6 +230,8 @@ impl<T> Disasm<'_, T> {
|
|||||||
2 => Size::Long,
|
2 => Size::Long,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
},
|
},
|
||||||
|
// Dummy size for unimplemented instructions
|
||||||
|
InstructionCategory::Unimp10 |InstructionCategory::Unimp15 => Size::Long,
|
||||||
};
|
};
|
||||||
match category {
|
match category {
|
||||||
InstructionCategory::BitMovepImmed => {
|
InstructionCategory::BitMovepImmed => {
|
||||||
@ -881,6 +885,8 @@ impl<T> Disasm<'_, T> {
|
|||||||
};
|
};
|
||||||
Ok(Instruction::Shift(op, size, dir, rotation, dst))
|
Ok(Instruction::Shift(op, size, dir, rotation, dst))
|
||||||
}
|
}
|
||||||
|
InstructionCategory::Unimp10 => Ok(Instruction::Unimp10),
|
||||||
|
InstructionCategory::Unimp15 => Ok(Instruction::Unimp15),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,6 +423,8 @@ pub enum Instruction {
|
|||||||
},
|
},
|
||||||
Adda(u8, Size, EffectiveAddress),
|
Adda(u8, Size, EffectiveAddress),
|
||||||
Shift(ShiftType, Size, ShiftDirection, Rotation, EffectiveAddress),
|
Shift(ShiftType, Size, ShiftDirection, Rotation, EffectiveAddress),
|
||||||
|
Unimp10,
|
||||||
|
Unimp15,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for Instruction {
|
impl Display for Instruction {
|
||||||
@ -546,6 +548,8 @@ impl Display for Instruction {
|
|||||||
_ => write!(f, "{dst}"),
|
_ => write!(f, "{dst}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Self::Unimp10 => write!(f, "UNIMP10"),
|
||||||
|
Self::Unimp15 => write!(f, "UNIMP15"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1120,6 +1120,14 @@ impl M68K {
|
|||||||
| u8::from(carry);
|
| u8::from(carry);
|
||||||
self.sr = self.sr & 0xFFE0 | u16::from(flags);
|
self.sr = self.sr & 0xFFE0 | u16::from(flags);
|
||||||
}
|
}
|
||||||
|
Instruction::Unimp10 => {
|
||||||
|
self.trap(10)?;
|
||||||
|
return Err(InsExecError::AbnormalTrap);
|
||||||
|
}
|
||||||
|
Instruction::Unimp15 => {
|
||||||
|
self.trap(11)?;
|
||||||
|
return Err(InsExecError::AbnormalTrap);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user