diff --git a/src/guest/sh4/sh4.h b/src/guest/sh4/sh4.h index 1bb23fb1..6f8904d3 100644 --- a/src/guest/sh4/sh4.h +++ b/src/guest/sh4/sh4.h @@ -48,6 +48,9 @@ struct sh4 { int tmu_stats; struct list breakpoints; + /* ccn */ + uint32_t sq[2][8]; + /* intc */ enum sh4_interrupt sorted_interrupts[SH4_NUM_INTERRUPTS]; uint64_t sort_id[SH4_NUM_INTERRUPTS]; diff --git a/src/guest/sh4/sh4_ccn.c b/src/guest/sh4/sh4_ccn.c index 3bf961a2..a2bc0ab4 100644 --- a/src/guest/sh4/sh4_ccn.c +++ b/src/guest/sh4/sh4_ccn.c @@ -63,7 +63,7 @@ void sh4_ccn_pref(struct sh4 *sh4, uint32_t addr) { dst |= addr & 0x3ffffe0; } - sh4_memcpy_to_guest(mem, dst, sh4->ctx.sq[sqi], 32); + sh4_memcpy_to_guest(mem, dst, sh4->sq[sqi], 32); } uint32_t sh4_ccn_cache_read(struct sh4 *sh4, uint32_t addr, uint32_t mask) { @@ -92,15 +92,17 @@ void sh4_ccn_cache_write(struct sh4 *sh4, uint32_t addr, uint32_t data, uint32_t sh4_ccn_sq_read(struct sh4 *sh4, uint32_t addr, uint32_t mask) { uint32_t sqi = (addr & 0x20) >> 5; - unsigned idx = (addr & 0x1c) >> 2; - return sh4->ctx.sq[sqi][idx]; + uint32_t idx = (addr & 0x1c) >> 2; + CHECK_EQ(mask, 0xffffffff); + return sh4->sq[sqi][idx]; } void sh4_ccn_sq_write(struct sh4 *sh4, uint32_t addr, uint32_t data, uint32_t mask) { uint32_t sqi = (addr & 0x20) >> 5; uint32_t idx = (addr & 0x1c) >> 2; - sh4->ctx.sq[sqi][idx] = data; + CHECK_EQ(mask, 0xffffffff); + sh4->sq[sqi][idx] = data; } uint32_t sh4_ccn_icache_read(struct sh4 *sh4, uint32_t addr, uint32_t mask) { diff --git a/src/jit/frontend/sh4/sh4_guest.h b/src/jit/frontend/sh4/sh4_guest.h index 82b368d1..ea06e4d3 100644 --- a/src/jit/frontend/sh4/sh4_guest.h +++ b/src/jit/frontend/sh4/sh4_guest.h @@ -114,7 +114,6 @@ struct sh4_context { uint32_t fpul, mach, macl; uint32_t sgr, spc, ssr; uint64_t pending_interrupts; - uint32_t sq[2][8]; /* processor sleep state */ uint32_t sleep_mode;