X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2Frl78-decode.opc;h=89d89fe72e66a77c946a79695563869931d89594;hb=a0f7013add6b1737e9a5e5d63cdf41ab2ebca0bf;hp=fc0dea5c3c1c6e3a60510e6f9dfb76e1183b2e60;hpb=fd63f640f645878605e4b4bc33ca31fb51583ecd;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/rl78-decode.opc b/opcodes/rl78-decode.opc index fc0dea5c3c..89d89fe72e 100644 --- a/opcodes/rl78-decode.opc +++ b/opcodes/rl78-decode.opc @@ -164,7 +164,8 @@ int rl78_decode_opcode (unsigned long pc AU, RL78_Opcode_Decoded * rl78, int (* getbyte)(void *), - void * ptr) + void * ptr, + RL78_Dis_Isa isa) { LocalData lds, * ld = &lds; unsigned char op_buf[20] = {0}; @@ -207,7 +208,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 0000 1110 add %0, %ea1 */ ID(add); DR(A); SM(HL, IMMU(1)); Fzac; - + /** 0110 0001 1000 0010 add %0, %e1 */ ID(add); DR(A); SM2(HL, C, 0); Fzac; @@ -613,10 +614,10 @@ rl78_decode_opcode (unsigned long pc AU, /** 1001 1001 mov %e0, %1 */ ID(mov); DM(DE, 0); SR(A); -/** 1100 1010 mov %e0, #%1 */ +/** 1100 1010 mov %ea0, #%1 */ ID(mov); DM(DE, IMMU(1)); SC(IMMU(1)); -/** 1001 1010 mov %e0, %1 */ +/** 1001 1010 mov %ea0, %1 */ ID(mov); DM(DE, IMMU(1)); SR(A); /** 1001 1011 mov %e0, %1 */ @@ -634,10 +635,10 @@ rl78_decode_opcode (unsigned long pc AU, /** 0110 0001 1111 1001 mov %e0, %1 */ ID(mov); DM2(HL, C, 0); SR(A); -/** 1100 1000 mov %0, #%1 */ +/** 1100 1000 mov %a0, #%1 */ ID(mov); DM(SP, IMMU(1)); SC(IMMU(1)); -/** 1001 1000 mov %0, %1 */ +/** 1001 1000 mov %a0, %1 */ ID(mov); DM(SP, IMMU(1)); SR(A); /** 1000 1111 mov %0, %e!1 */ @@ -646,7 +647,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 1000 1001 mov %0, %e1 */ ID(mov); DR(A); SM(DE, 0); -/** 1000 1010 mov %0, %e1 */ +/** 1000 1010 mov %0, %ea1 */ ID(mov); DR(A); SM(DE, IMMU(1)); /** 1000 1011 mov %0, %e1 */ @@ -661,7 +662,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 0110 0001 1110 1001 mov %0, %e1 */ ID(mov); DR(A); SM2(HL, C, 0); -/** 1000 1000 mov %0, %e1 */ +/** 1000 1000 mov %0, %ea1 */ ID(mov); DR(A); SM(SP, IMMU(1)); /** 0101 0reg mov %0, #%1 */ @@ -713,28 +714,28 @@ rl78_decode_opcode (unsigned long pc AU, ID(mov); DR(CS); SR(A); /** 0100 0001 mov %0, #%1 */ - ID(mov); DR(ES); SC(IMMU(1)); + ID(mov); DR(ES); SC(IMMU(1)); /** 1001 1110 1111 1101 mov %0, %1 */ - ID(mov); DR(ES); SR(A); + ID(mov); DR(ES); SR(A); /** 0110 0001 1011 1000 mov %0, %1 */ - ID(mov); DR(ES); SM(None, SADDR); + ID(mov); DR(ES); SM(None, SADDR); /** 0001 1001 mov %e0, #%1 */ - ID(mov); DM(B, IMMU(2)); SC(IMMU(1)); + ID(mov); DM(B, IMMU(2)); SC(IMMU(1)); /** 0001 1000 mov %e0, %1 */ - ID(mov); DM(B, IMMU(2)); SR(A); + ID(mov); DM(B, IMMU(2)); SR(A); /** 0011 1001 mov %e0, #%1 */ - ID(mov); DM(BC, IMMU(2)); SC(IMMU(1)); + ID(mov); DM(BC, IMMU(2)); SC(IMMU(1)); /** 0100 1000 mov %e0, %1 */ - ID(mov); DM(BC, IMMU(2)); SR(A); + ID(mov); DM(BC, IMMU(2)); SR(A); /** 0011 1000 mov %e0, #%1 */ - ID(mov); DM(C, IMMU(2)); SC(IMMU(1)); + ID(mov); DM(C, IMMU(2)); SC(IMMU(1)); /** 0010 1000 mov %e0, %1 */ ID(mov); DM(C, IMMU(2)); SR(A); @@ -749,7 +750,7 @@ rl78_decode_opcode (unsigned long pc AU, op0 = SFR; op1 = IMMU(1); ID(mov); DM(None, op0); SC(op1); - if (op0 == 0xffffb) + if (op0 == 0xffffb && isa == RL78_ISA_G14) switch (op1) { case 0x01: @@ -775,7 +776,7 @@ rl78_decode_opcode (unsigned long pc AU, break; } -/** 1001 1110 mov %0, %1 */ +/** 1001 1110 mov %s0, %1 */ ID(mov); DM(None, SFR); SR(A); /*----------------------------------------------------------------------*/ @@ -817,7 +818,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 1011 1001 movw %e0, %1 */ ID(mov); W(); DM(DE, 0); SR(AX); -/** 1011 1010 movw %e0, %1 */ +/** 1011 1010 movw %ea0, %1 */ ID(mov); W(); DM(DE, IMMU(1)); SR(AX); /** 1011 1011 movw %e0, %1 */ @@ -826,7 +827,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 1011 1100 movw %ea0, %1 */ ID(mov); W(); DM(HL, IMMU(1)); SR(AX); -/** 1011 1000 movw %0, %1 */ +/** 1011 1000 movw %a0, %1 */ ID(mov); W(); DM(SP, IMMU(1)); SR(AX); /** 1010 1111 movw %0, %e!1 */ @@ -836,7 +837,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 1010 1001 movw %0, %e1 */ ID(mov); W(); DR(AX); SM(DE, 0); -/** 1010 1010 movw %0, %e1 */ +/** 1010 1010 movw %0, %ea1 */ ID(mov); W(); DR(AX); SM(DE, IMMU(1)); /** 1010 1011 movw %0, %e1 */ @@ -845,7 +846,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 1010 1100 movw %0, %ea1 */ ID(mov); W(); DR(AX); SM(HL, IMMU(1)); -/** 1010 1000 movw %0, %1 */ +/** 1010 1000 movw %0, %a1 */ ID(mov); W(); DR(AX); SM(SP, IMMU(1)); /** 0011 0rg0 movw %0, #%1 */ @@ -893,10 +894,10 @@ rl78_decode_opcode (unsigned long pc AU, /** 1011 1101 movw %0, %1 */ ID(mov); W(); DM(None, SADDR); SR(AX); -/** 1100 1011 movw %0, #%1 */ +/** 1100 1011 movw %s0, #%1 */ ID(mov); W(); DM(None, SFR); SC(IMMU(2)); -/** 1011 1110 movw %0, %1 */ +/** 1011 1110 movw %s0, %1 */ ID(mov); W(); DM(None, SFR); SR(AX); /*----------------------------------------------------------------------*/ @@ -1204,7 +1205,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 0110 0001 1010 1110 xch %0, %e1 */ ID(xch); DR(A); SM(DE, 0); -/** 0110 0001 1010 1111 xch %0, %e1 */ +/** 0110 0001 1010 1111 xch %0, %ea1 */ ID(xch); DR(A); SM(DE, IMMU(1)); /** 0110 0001 1010 1100 xch %0, %e1 */ @@ -1226,7 +1227,7 @@ rl78_decode_opcode (unsigned long pc AU, /** 0110 0001 1010 1000 xch %0, %1 */ ID(xch); DR(A); SM(None, SADDR); -/** 0110 0001 1010 1011 xch %0, %1 */ +/** 0110 0001 1010 1011 xch %0, %s1 */ ID(xch); DR(A); SM(None, SFR); /** 0000 1000 xch a, x */