mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
sh2 drc: moved host register assignment to code emitters, minor bugfixing
This commit is contained in:
parent
7e940f142e
commit
9bd6706dca
12 changed files with 174 additions and 250 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue