don't manually send interrupts on keypresses

let the target machine take its own interrupts on nonzero fromhost values
This commit is contained in:
Andrew Waterman 2013-03-25 16:29:31 -07:00
parent 1cc741fd1d
commit 42fde4d484
1 changed files with 1 additions and 11 deletions

View File

@ -268,8 +268,7 @@ void htif_t::poll_tohost(int coreid, core_status* s)
return; return;
#define DEVICE(reg) (((reg) >> 56) & 0xFF) #define DEVICE(reg) (((reg) >> 56) & 0xFF)
#define INTERRUPT(reg) (((reg) >> 48) & 0x80) #define COMMAND(reg) (((reg) >> 48) & 0xFF)
#define COMMAND(reg) (((reg) >> 48) & 0x7F)
#define PAYLOAD(reg) ((reg) & 0xFFFFFFFFFFFF) #define PAYLOAD(reg) ((reg) & 0xFFFFFFFFFFFF)
switch (DEVICE(tohost)) switch (DEVICE(tohost))
@ -321,11 +320,6 @@ void htif_t::poll_keyboard(int coreid, core_status* s)
s->fromhost.push(s->poll_keyboard | ch); s->fromhost.push(s->poll_keyboard | ch);
s->poll_keyboard = 0; s->poll_keyboard = 0;
} }
else if (!INTERRUPT(s->poll_keyboard))
{
s->fromhost.push(s->poll_keyboard | 0x100);
s->poll_keyboard = 0;
}
} }
} }
@ -335,11 +329,7 @@ void htif_t::drain_fromhost_writes(int coreid, core_status* s, bool sync)
{ {
reg_t value = s->fromhost.front(); reg_t value = s->fromhost.front();
if (write_cr(coreid, 31, value) == 0) if (write_cr(coreid, 31, value) == 0)
{
if (INTERRUPT(value))
write_cr(coreid, 9, 1);
s->fromhost.pop(); s->fromhost.pop();
}
if (!sync) break; if (!sync) break;
} }
} }