From: Nick Clifton Date: Thu, 22 Aug 2002 19:22:35 +0000 (+0000) Subject: opcodes: Fix definition of "in rd,imm16" opcode. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1489984027fe63be97159c6e80c0a62caac52e94;p=binutils-gdb.git opcodes: Fix definition of "in rd,imm16" opcode. gas: Adjust ptr variable also in "case 0" case. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 93f62cd3879..bd522a94b41 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-08-22 Christian Groessler + + * config/tc-z8k.c (get_operands): Adjust ptr variable also in + "case 0" case. + 2002-08-12 Graeme Peterson * configure.in: Add support for sh-**-nto* target. diff --git a/gas/config/tc-z8k.c b/gas/config/tc-z8k.c index 04723f8d834..bde058ab652 100644 --- a/gas/config/tc-z8k.c +++ b/gas/config/tc-z8k.c @@ -731,6 +731,7 @@ get_operands (opcode, op_end, operand) char *ptr = op_end; char *savptr; + ptr++; switch (opcode->noperands) { case 0: @@ -739,40 +740,35 @@ get_operands (opcode, op_end, operand) break; case 1: - ptr++; if (opcode->arg_info[0] == CLASS_CC) - { - get_cc_operand (&ptr, operand + 0, 0); - } + get_cc_operand (&ptr, operand + 0, 0); + else if (opcode->arg_info[0] == CLASS_FLAGS) - { - get_flags_operand (&ptr, operand + 0, 0); - } + get_flags_operand (&ptr, operand + 0, 0); + else if (opcode->arg_info[0] == (CLASS_IMM + (ARG_IMM2))) - { - get_interrupt_operand (&ptr, operand + 0, 0); - } + get_interrupt_operand (&ptr, operand + 0, 0); + else - { - get_operand (&ptr, operand + 0, 0); - } + get_operand (&ptr, operand + 0, 0); + operand[1].mode = 0; break; case 2: - ptr++; savptr = ptr; if (opcode->arg_info[0] == CLASS_CC) - { - get_cc_operand (&ptr, operand + 0, 0); - } + get_cc_operand (&ptr, operand + 0, 0); + else if (opcode->arg_info[0] == CLASS_CTRL) { get_ctrl_operand (&ptr, operand + 0, 0); + if (the_ctrl == 0) { ptr = savptr; get_operand (&ptr, operand + 0, 0); + if (ptr == 0) return NULL; if (*ptr == ',') @@ -782,9 +778,8 @@ get_operands (opcode, op_end, operand) } } else - { - get_operand (&ptr, operand + 0, 0); - } + get_operand (&ptr, operand + 0, 0); + if (ptr == 0) return NULL; if (*ptr == ',') @@ -793,7 +788,6 @@ get_operands (opcode, op_end, operand) break; case 3: - ptr++; get_operand (&ptr, operand + 0, 0); if (*ptr == ',') ptr++; @@ -804,7 +798,6 @@ get_operands (opcode, op_end, operand) break; case 4: - ptr++; get_operand (&ptr, operand + 0, 0); if (*ptr == ',') ptr++; @@ -1413,7 +1406,7 @@ md_section_align (seg, size) void md_apply_fix3 (fixP, valP, segment) - fixS *fixP; + fixS * fixP; valueT * valP; segT segment ATTRIBUTE_UNUSED; { @@ -1483,7 +1476,7 @@ md_estimate_size_before_relax (fragP, segment_type) register fragS *fragP ATTRIBUTE_UNUSED; register segT segment_type ATTRIBUTE_UNUSED; { - printf (_("call tomd_estimate_size_before_relax \n")); + printf (_("call tomd_estimate_size_before_relax\n")); abort (); } diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index b7c59eb1b5b..8bbcdffb45b 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,10 @@ +2002-08-16 Christian Groessler + + * z8k-dis.c (unparse_instr): case CLASS_BA: Designate hex + values as those. + * z8kgen.c (opt): Fix definition of "in rd,imm16" opcode. + * z8k-opc.h: Regenerated with new z8kgen.c. + 2002-08-19 Elena Zannoni From matthew green diff --git a/opcodes/z8k-dis.c b/opcodes/z8k-dis.c index d375e6908d2..6c1913892c8 100644 --- a/opcodes/z8k-dis.c +++ b/opcodes/z8k-dis.c @@ -515,10 +515,10 @@ unparse_instr (instr_data, is_segmented) break; case CLASS_BA: if (is_segmented) - sprintf (tmp_str, "rr%ld(#%lx)", instr_data->arg_reg[datum_value], + sprintf (tmp_str, "rr%ld(#0x%lx)", instr_data->arg_reg[datum_value], instr_data->immediate); else - sprintf (tmp_str, "r%ld(#%lx)", instr_data->arg_reg[datum_value], + sprintf (tmp_str, "r%ld(#0x%lx)", instr_data->arg_reg[datum_value], instr_data->immediate); strcat (out_str, tmp_str); break; diff --git a/opcodes/z8k-opc.h b/opcodes/z8k-opc.h index 025cfabdd65..0e478bfd0e8 100644 --- a/opcodes/z8k-opc.h +++ b/opcodes/z8k-opc.h @@ -1621,14 +1621,14 @@ opcode_entry_type z8k_table[] = { {CLASS_BIT+3,CLASS_BIT+0xd,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,135}, -/* 0011 1101 dddd 0100 imm16 *** in rd,imm16 */ +/* 0011 1011 dddd 0100 imm16 *** in rd,imm16 */ { #ifdef NICENAMES "in rd,imm16",16,12, 0x00, #endif "in",OPC_in,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IMM+(ARG_IMM16),}, - {CLASS_BIT+3,CLASS_BIT+0xd,CLASS_REG+(ARG_RD),CLASS_BIT+4,CLASS_IMM+(ARG_IMM16),0,0,0,0,},2,4,136}, + {CLASS_BIT+3,CLASS_BIT+0xb,CLASS_REG+(ARG_RD),CLASS_BIT+4,CLASS_IMM+(ARG_IMM16),0,0,0,0,},2,4,136}, /* 0011 1100 ssN0 dddd *** inb rbd,@rs */ diff --git a/opcodes/z8kgen.c b/opcodes/z8kgen.c index fa8505939a9..5bd9240c021 100644 --- a/opcodes/z8kgen.c +++ b/opcodes/z8kgen.c @@ -209,8 +209,8 @@ struct op opt[] = "------", 8, 16, "0111 1010 0000 0000", "halt", 0, "------", 10, 16, "0011 1101 ssN0 dddd", "in rd,@rs", 0, - "------", 12, 16, "0011 1101 dddd 0100 imm16", "in rd,imm16", 0, "------", 12, 8, "0011 1100 ssN0 dddd", "inb rbd,@rs", 0, + "------", 12, 16, "0011 1011 dddd 0100 imm16", "in rd,imm16", 0, "------", 10, 8, "0011 1010 dddd 0100 imm16", "inb rbd,imm16", 0, "-ZSV--", 11, 16, "0010 1001 ddN0 imm4m1", "inc @rd,imm4m1", 0, "-ZSV--", 14, 16, "0110 1001 ddN0 imm4m1 address_dst", "inc address_dst(rd),imm4m1", 0,