Mercurial > repos > blastem
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 } |