mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
sh2 drc, fixes for cache handling on arm and mips cpus
This commit is contained in:
parent
e7faa8e4e1
commit
69c22514b0
3 changed files with 7 additions and 8 deletions
|
@ -1247,7 +1247,7 @@ static inline void emith_pool_adjust(int tcache_offs, int move_offs)
|
|||
} while (0)
|
||||
|
||||
#define host_instructions_updated(base, end, force) \
|
||||
do { if (force) __builtin___clear_cache(base, end); } while (0)
|
||||
do { if (force) emith_update_add(base, end); } while (0)
|
||||
|
||||
#define host_arg2reg(rd, arg) \
|
||||
rd = arg
|
||||
|
|
|
@ -1573,11 +1573,10 @@ static NOINLINE void host_instructions_updated(void *base, void *end, int force)
|
|||
{
|
||||
int step, tmp;
|
||||
asm volatile(
|
||||
" bal 0f;" // needed to allow for jr.hb
|
||||
" b 3f;"
|
||||
|
||||
"0: rdhwr %2, $1;"
|
||||
" beqz %2, 2f;"
|
||||
" rdhwr %2, $1;"
|
||||
" bal 0f;" // needed to allow for jr.hb:
|
||||
"0: addiu $ra, $ra, 3f-0b;" // set ra to insn after jr.hb
|
||||
" beqz %2, 3f;"
|
||||
|
||||
"1: synci 0(%0);"
|
||||
" sltu %3, %0, %1;"
|
||||
|
|
|
@ -816,13 +816,13 @@ static void dr_block_link(struct block_entry *be, struct block_link *bl, int emi
|
|||
emith_jump_patch(jump, bl->blx, &jump);
|
||||
emith_jump_at(bl->blx, be->tcache_ptr);
|
||||
host_instructions_updated(bl->blx, bl->blx + emith_jump_at_size(),
|
||||
((uintptr_t)bl->blx & 0x0f) + emith_jump_at_size()-1 > 0x0f);
|
||||
((uintptr_t)bl->blx & 0x1f) + emith_jump_at_size()-1 > 0x1f);
|
||||
}
|
||||
} else {
|
||||
printf("unknown BL type %d\n", bl->type);
|
||||
exit(1);
|
||||
}
|
||||
host_instructions_updated(jump, jump + jsz, ((uintptr_t)jump & 0x0f) + jsz-1 > 0x0f);
|
||||
host_instructions_updated(jump, jump + jsz, ((uintptr_t)jump & 0x1f) + jsz-1 > 0x1f);
|
||||
}
|
||||
|
||||
// move bl to block_entry
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue