2000-08-28 Dave Brolley <brolley@redhat.com>

* cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is
	in insn_value if it will fit.
This commit is contained in:
Dave Brolley 2000-08-28 18:18:49 +00:00
parent 6bb95a0ff8
commit 0e266e5cc5
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2000-08-28 Dave Brolley <brolley@redhat.com>
* cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is
in insn_value if it will fit.
2000-08-21 Frank Ch. Eigler <fche@redhat.com>
* Make-common.in, cgen.sh: Contribute CGEN-related build targets/rules.

View File

@ -354,6 +354,7 @@ sim_cgen_disassemble_insn (SIM_CPU *cpu, const CGEN_INSN *insn,
const ARGBUF *abuf, IADDR pc, char *buf)
{
unsigned int length;
unsigned int base_length;
unsigned long insn_value;
struct disassemble_info disasm_info;
SFILE sfile;
@ -380,7 +381,13 @@ sim_cgen_disassemble_insn (SIM_CPU *cpu, const CGEN_INSN *insn,
length = sim_core_read_buffer (sd, cpu, read_map, &insn_buf, pc,
insn_length);
switch (min (cd->base_insn_bitsize, insn_bit_length))
/* If the entire insn will fit into an integer, then do it. Otherwise, just
use the bits of the base_insn. */
if (insn_bit_length <= 32)
base_length = insn_bit_length;
else
base_length = min (cd->base_insn_bitsize, insn_bit_length);
switch (base_length)
{
case 0 : return; /* fake insn, typically "compile" (aka "invalid") */
case 8 : insn_value = insn_buf.bytes[0]; break;