summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2002-08-22 19:22:35 +0000
committerNick Clifton <nickc@redhat.com>2002-08-22 19:22:35 +0000
commit1489984027fe63be97159c6e80c0a62caac52e94 (patch)
tree4b5b2f8e42d6112f89d6409406fb5aa10d66f647
parentd9a7f7ab85d9eb1760aec9575b213294b1bcd9dd (diff)
opcodes: Fix definition of "in rd,imm16" opcode.
gas: Adjust ptr variable also in "case 0" case.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-z8k.c41
-rw-r--r--opcodes/ChangeLog7
-rw-r--r--opcodes/z8k-dis.c4
-rw-r--r--opcodes/z8k-opc.h4
-rw-r--r--opcodes/z8kgen.c2
6 files changed, 34 insertions, 29 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 93f62cd387..bd522a94b4 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2002-08-22 Christian Groessler <chris@groessler.org>
+
+ * config/tc-z8k.c (get_operands): Adjust ptr variable also in
+ "case 0" case.
+
2002-08-12 Graeme Peterson <gp@qnx.com>
* configure.in: Add support for sh-**-nto* target.
diff --git a/gas/config/tc-z8k.c b/gas/config/tc-z8k.c
index 04723f8d83..bde058ab65 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 b7c59eb1b5..8bbcdffb45 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,10 @@
+2002-08-16 Christian Groessler <chris@groessler.org>
+
+ * 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 <ezannoni@redhat.com>
From matthew green <mrg@redhat.com>
diff --git a/opcodes/z8k-dis.c b/opcodes/z8k-dis.c
index d375e6908d..6c1913892c 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 025cfabdd6..0e478bfd0e 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 fa8505939a..5bd9240c02 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,