| Previous | 199869 Revisions | Next |
| r21474 Wednesday 27th February, 2013 at 23:42:45 UTC by Angelo Salese |
|---|
| Fixed SLEEP opcode in non-DRC SH-2 [Angelo Salese] |
| [src/emu/cpu/sh2] | sh2.c sh2comn.c sh2comn.h |
| r21473 | r21474 | |
|---|---|---|
| 1573 | 1573 | /* SLEEP */ |
| 1574 | 1574 | INLINE void SLEEP(sh2_state *sh2) |
| 1575 | 1575 | { |
| 1576 | sh2->pc -= 2; | |
| 1576 | if(sh2->sleep_mode != 2) | |
| 1577 | sh2->pc -= 2; | |
| 1577 | 1578 | sh2->icount -= 2; |
| 1578 | 1579 | /* Wait_for_exception; */ |
| 1580 | if(sh2->sleep_mode == 0) | |
| 1581 | sh2->sleep_mode = 1; | |
| 1582 | else if(sh2->sleep_mode == 2) | |
| 1583 | sh2->sleep_mode = 0; | |
| 1579 | 1584 | } |
| 1580 | 1585 | |
| 1581 | 1586 | /* STC SR,Rn */ |
| r21473 | r21474 | |
| 2214 | 2219 | sh2->pc = RL(sh2, 0); |
| 2215 | 2220 | sh2->r[15] = RL(sh2, 4); |
| 2216 | 2221 | sh2->sr = I; |
| 2222 | sh2->sleep_mode = 0; | |
| 2217 | 2223 | |
| 2218 | 2224 | sh2->internal_irq_level = -1; |
| 2219 | 2225 | } |
| r21473 | r21474 | |
|---|---|---|
| 149 | 149 | UINT16 wtcnt; |
| 150 | 150 | UINT8 wtcsr; |
| 151 | 151 | |
| 152 | UINT8 sleep_mode; | |
| 153 | ||
| 152 | 154 | int is_slave, cpu_type; |
| 153 | 155 | int (*dma_callback_kludge)(device_t *device, UINT32 src, UINT32 dst, UINT32 data, int size); |
| 154 | 156 | int (*dma_callback_fifo_data_available)(device_t *device, UINT32 src, UINT32 dst, UINT32 data, int size); |
| r21473 | r21474 | |
|---|---|---|
| 982 | 982 | |
| 983 | 983 | /* fetch PC */ |
| 984 | 984 | sh2->pc = RL( sh2, sh2->vbr + vector * 4 ); |
| 985 | if(sh2->sleep_mode == 1) { sh2->sleep_mode = 2; } | |
| 985 | 986 | #endif |
| 986 | 987 | } |
| 987 | 988 | |
| r21473 | r21474 | |
| 1066 | 1067 | device->save_item(NAME(sh2->dma_irq)); |
| 1067 | 1068 | device->save_item(NAME(sh2->wtcnt)); |
| 1068 | 1069 | device->save_item(NAME(sh2->wtcsr)); |
| 1070 | device->save_item(NAME(sh2->sleep_mode)); | |
| 1069 | 1071 | } |
| Previous | 199869 Revisions | Next |