Add INTERRUPT_ENABLE flag, fix bug with register preservation

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-03-10 12:20:59 -04:00
parent 3da72874f5
commit 85e5f7a2bf
2 changed files with 4 additions and 3 deletions

View File

@@ -4,5 +4,6 @@ bitflags! {
pub struct Flags: u64 {
const HALT = 1;
const COMPARE = 1 << 1;
const INTERRUPT_ENABLE = 1 << 2;
}
}

View File

@@ -229,7 +229,6 @@ impl State {
self.push(Source::Reg(reg))?;
}
let sp = self.sp();
self.set_reg_unchecked(FP, sp - Self::INTERRUPT_REG_SPACE);
self.set_reg_unchecked(R00, index as u64);
@@ -246,7 +245,8 @@ impl State {
self.set_reg_unchecked(SP, sp);
// pop R31 .. R0
for reg in R31 ..= R00 {
for reg in R00..=R31 {
let reg = R31 - reg + R00;
self.pop(Dest::Reg(reg))?;
}
self.pop(Dest::Reg(STATUS))?;