comparison 68kinst.c @ 412:00d5a2b532f4

Fix movem with pc displacement or pc indexed source
author Mike Pavone <pavone@retrodev.com>
date Wed, 19 Jun 2013 00:40:13 -0700
parents 8db584faac4b
children 140af5509ce7
comparison
equal deleted inserted replaced
411:baf4688901f2 412:00d5a2b532f4
498 decoded->dst.params.immed = *(++istream); 498 decoded->dst.params.immed = *(++istream);
499 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); 499 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src));
500 if (!istream) { 500 if (!istream) {
501 decoded->op = M68K_INVALID; 501 decoded->op = M68K_INVALID;
502 return start+1; 502 return start+1;
503 }
504 if (decoded->src.addr_mode == MODE_PC_DISPLACE || decoded->src.addr_mode == MODE_PC_INDEX_DISP8) {
505 //adjust displacement to account for extra instruction word
506 decoded->src.params.regs.displacement += 2;
503 } 507 }
504 } else { 508 } else {
505 decoded->src.addr_mode = MODE_REG; 509 decoded->src.addr_mode = MODE_REG;
506 decoded->src.params.immed = *(++istream); 510 decoded->src.params.immed = *(++istream);
507 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->dst)); 511 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->dst));