File tree Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -146,13 +146,19 @@ void dsp563xx_device::execute_run()
146146 while (m_icount > 0 ) {
147147 debugger_instruction_hook (m_pc);
148148 u32 opcode = m_p.read_dword (m_pc);
149+ bool loop = (m_mr & MR_LF) && m_pc == m_la;
149150 u16 kmove = t_move[opcode >> 8 ];
150151 u16 knpar = kmove || opcode >= 0x100000 ? 0 : t_npar[opcode];
151152 u16 kipar = knpar ? 0 : t_ipar[opcode & 0xff ];
152153 bool ex = BIT (t_move_ex[kmove >> 6 ], kmove & 0x3f ) || BIT (t_npar_ex[knpar >> 6 ], knpar & 0x3f );
153- u32 exv = ex ? m_p.read_dword (m_pc+1 ) : 0 ;
154+ u32 exv;
155+ if (ex) {
156+ exv = m_p.read_dword (m_pc+1 );
157+ loop = loop || ((m_mr & MR_LF) && m_pc+1 == m_la);
158+ } else
159+ exv = 0 ;
154160 m_npc = (m_pc + (ex ? 2 : 1 )) & 0xffffff ;
155- if ((m_mr & MR_LF) && m_npc == m_la ) {
161+ if (loop ) {
156162 if (m_lc != 1 || (m_emr & EMR_FV)) {
157163 m_lc = m_lc ? m_lc-1 : 0xffff ;
158164 m_npc = get_ssh ();
You can’t perform that action at this time.
0 commit comments