X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Frx%2Frx.c;h=f6f93966b97278fc3103a33d7822be1622477440;hb=17fc27167f678285d2f64040837b8cc41b6a664a;hp=31c14436eb8ce81587512724c50375c644b05f06;hpb=32d0add0a654c1204ab71dc8a55d9374538c4b33;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/rx/rx.c b/sim/rx/rx.c index 31c14436eb..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-2015 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 (); @@ -1504,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;