X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Frx%2Frx.c;h=f6f93966b97278fc3103a33d7822be1622477440;hb=17fc27167f678285d2f64040837b8cc41b6a664a;hp=e12aa85d2b672114301222bce6cdd13d81d61d3a;hpb=04e65a62c6136e9907d4db6d9cf0216832bdafa3;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/rx/rx.c b/sim/rx/rx.c index e12aa85d2b..f6f93966b9 100644 --- a/sim/rx/rx.c +++ b/sim/rx/rx.c @@ -1,6 +1,6 @@ /* rx.c --- opcode semantics for stand-alone RX simulator. -Copyright (C) 2008-2013 Free Software Foundation, Inc. +Copyright (C) 2008-2020 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of the GNU simulators. @@ -23,6 +23,7 @@ along with this program. If not, see . */ #include #include #include +#include "libiberty.h" #include "opcode/rx.h" #include "cpu.h" @@ -80,6 +81,10 @@ static const char * id_names[] = { "RXO_nop", "RXO_nop2", "RXO_nop3", + "RXO_nop4", + "RXO_nop5", + "RXO_nop6", + "RXO_nop7", "RXO_scmpu", "RXO_smovu", @@ -147,9 +152,9 @@ static const char * optype_names[] = { "RbRi" /* [Rb + scale * Ri] */ }; -#define N_RXO (sizeof(id_names)/sizeof(id_names[0])) -#define N_RXT (sizeof(optype_names)/sizeof(optype_names[0])) -#define N_MAP 30 +#define N_RXO ARRAY_SIZE (id_names) +#define N_RXT ARRAY_SIZE (optype_names) +#define N_MAP 90 static unsigned long long benchmark_start_cycle; static unsigned long long benchmark_end_cycle; @@ -406,6 +411,7 @@ get_op (const RX_Opcode_Decoded *rd, int i) put_reg (o->reg, get_reg (o->reg) - size2bytes[o->size]); /* fall through */ case RX_Operand_Postinc: /* [Rn+] */ + case RX_Operand_Zero_Indirect: /* [Rn + 0] */ case RX_Operand_Indirect: /* [Rn + addend] */ case RX_Operand_TwoReg: /* [Rn + scale * R2] */ #ifdef CYCLE_ACCURATE @@ -433,6 +439,7 @@ get_op (const RX_Opcode_Decoded *rd, int i) switch (o->size) { + default: case RX_AnySize: rx_abort (); @@ -473,6 +480,7 @@ get_op (const RX_Opcode_Decoded *rd, int i) to the size. */ switch (o->size) { + default: case RX_AnySize: rx_abort (); @@ -518,6 +526,7 @@ put_op (const RX_Opcode_Decoded *rd, int i, int v) switch (o->size) { + default: case RX_AnySize: if (o->type != RX_Operand_Register) rx_abort (); @@ -574,6 +583,7 @@ put_op (const RX_Opcode_Decoded *rd, int i, int v) put_reg (o->reg, get_reg (o->reg) - size2bytes[o->size]); /* fall through */ case RX_Operand_Postinc: /* [Rn+] */ + case RX_Operand_Zero_Indirect: /* [Rn + 0] */ case RX_Operand_Indirect: /* [Rn + addend] */ case RX_Operand_TwoReg: /* [Rn + scale * R2] */ @@ -597,6 +607,7 @@ put_op (const RX_Opcode_Decoded *rd, int i, int v) switch (o->size) { + default: case RX_AnySize: rx_abort (); @@ -732,8 +743,7 @@ poppc() c = val & carry_mask; \ val OP 1; \ } \ - if (count) \ - set_oszc (val, 4, c); \ + set_oszc (val, 4, c); \ PD (val); \ } @@ -1505,6 +1515,10 @@ decode_opcode () case RXO_nop: case RXO_nop2: case RXO_nop3: + case RXO_nop4: + case RXO_nop5: + case RXO_nop6: + case RXO_nop7: E1; break;