sh2 drc: moved host register assignment to code emitters, minor bugfixing

This commit is contained in:
kub 2019-11-09 10:24:52 +01:00
parent 7e940f142e
commit 9bd6706dca
12 changed files with 174 additions and 250 deletions

View file

@ -435,8 +435,10 @@ static int software_interrupt(unsigned int pc, unsigned int insn, char *buf, siz
return 1;
}
int disarm(uintptr_t pc, uint32_t insn, char *buf, size_t buf_len)
int disarm(uintptr_t pc, uint32_t insn, char *buf, size_t buf_len, uintptr_t *addr)
{
*addr = 0;
if ((insn & 0x0fffffd0) == 0x012fff10)
return branch_and_exchange(pc, insn, buf, buf_len);
@ -464,8 +466,10 @@ int disarm(uintptr_t pc, uint32_t insn, char *buf, size_t buf_len)
if ((insn & 0x0e000000) == 0x08000000)
return block_data_transfer(pc, insn, buf, buf_len);
if ((insn & 0x0e000000) == 0x0a000000)
if ((insn & 0x0e000000) == 0x0a000000) {
*addr = (long)pc + 8 + ((long)(insn << 8) >> 6);
return branch(pc, insn, buf, buf_len);
}
if ((insn & 0x0e000000) == 0x0c000000)
return coprocessor_data_transfer(pc, insn, buf, buf_len);