mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
32x, drc, fix saving SH2 SR in dma
This commit is contained in:
parent
78c2237ab8
commit
ca1b77e601
3 changed files with 9 additions and 4 deletions
|
@ -70,12 +70,13 @@ extern void REGPARM(1) (*sh2_drc_restore_sr)(SH2 *sh2);
|
|||
#else
|
||||
#define DRC_DECLARE_SR register long _sh2_sr asm(DRC_SR_REG)
|
||||
#endif
|
||||
// NB: save/load SR register only when DRC is executing and not in DMA access
|
||||
#define DRC_SAVE_SR(sh2) \
|
||||
if (likely(sh2->state & SH2_IN_DRC)) \
|
||||
if (likely((sh2->state & (SH2_IN_DRC|SH2_STATE_SLEEP)) == SH2_IN_DRC)) \
|
||||
sh2->sr = (s32)_sh2_sr
|
||||
// sh2_drc_save_sr(sh2)
|
||||
#define DRC_RESTORE_SR(sh2) \
|
||||
if (likely(sh2->state & SH2_IN_DRC)) \
|
||||
if (likely((sh2->state & (SH2_IN_DRC|SH2_STATE_SLEEP)) == SH2_IN_DRC)) \
|
||||
_sh2_sr = (s32)sh2->sr
|
||||
// sh2_drc_restore_sr(sh2)
|
||||
#else
|
||||
|
|
|
@ -50,8 +50,8 @@ typedef struct SH2_
|
|||
#define SH2_STATE_CPOLL (1 << 2) // polling comm regs
|
||||
#define SH2_STATE_VPOLL (1 << 3) // polling VDP
|
||||
#define SH2_STATE_RPOLL (1 << 4) // polling address in SDRAM
|
||||
#define SH2_TIMER_RUN (1 << 7) // SOC WDT timer is running
|
||||
#define SH2_IN_DRC (1 << 8) // DRC in use
|
||||
#define SH2_TIMER_RUN (1 << 6) // SOC WDT timer is running
|
||||
#define SH2_IN_DRC (1 << 7) // DRC in use
|
||||
unsigned int state;
|
||||
uint32_t poll_addr;
|
||||
int poll_cycles;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue