comparison 68kinst.c @ 183:2f08d9e90a4c

Fix (a7)+ src when size is byte, fix trap return address, make div with areg src decoded to invalid
author Mike Pavone <pavone@retrodev.com>
date Wed, 09 Jan 2013 22:31:07 -0800
parents 3b4ef459aa8d
children ebcbdd1c4cc8
comparison
equal deleted inserted replaced
182:924af8b2f7a0 183:2f08d9e90a4c
874 decoded->op = M68K_DIVU; 874 decoded->op = M68K_DIVU;
875 decoded->extra.size = OPSIZE_WORD; 875 decoded->extra.size = OPSIZE_WORD;
876 decoded->dst.addr_mode = MODE_REG; 876 decoded->dst.addr_mode = MODE_REG;
877 decoded->dst.params.regs.pri = (*istream >> 9) & 0x7; 877 decoded->dst.params.regs.pri = (*istream >> 9) & 0x7;
878 istream = m68k_decode_op(istream, OPSIZE_WORD, &(decoded->src)); 878 istream = m68k_decode_op(istream, OPSIZE_WORD, &(decoded->src));
879 if (!istream) { 879 if (!istream || decoded->src.addr_mode == MODE_AREG) {
880 decoded->op = M68K_INVALID; 880 decoded->op = M68K_INVALID;
881 return start+1; 881 return start+1;
882 } 882 }
883 break; 883 break;
884 case 4: 884 case 4:
899 decoded->op = M68K_DIVS; 899 decoded->op = M68K_DIVS;
900 decoded->extra.size = OPSIZE_WORD; 900 decoded->extra.size = OPSIZE_WORD;
901 decoded->dst.addr_mode = MODE_REG; 901 decoded->dst.addr_mode = MODE_REG;
902 decoded->dst.params.regs.pri = (*istream >> 9) & 0x7; 902 decoded->dst.params.regs.pri = (*istream >> 9) & 0x7;
903 istream = m68k_decode_op(istream, OPSIZE_WORD, &(decoded->src)); 903 istream = m68k_decode_op(istream, OPSIZE_WORD, &(decoded->src));
904 if (!istream) { 904 if (!istream || decoded->src.addr_mode == MODE_AREG) {
905 decoded->op = M68K_INVALID; 905 decoded->op = M68K_INVALID;
906 return start+1; 906 return start+1;
907 } 907 }
908 break; 908 break;
909 } 909 }