[include/opcode]
authorDJ Delorie <dj@redhat.com>
Thu, 29 Jul 2010 18:41:28 +0000 (18:41 +0000)
committerDJ Delorie <dj@redhat.com>
Thu, 29 Jul 2010 18:41:28 +0000 (18:41 +0000)
commitf9c7014e9c1c8ac8b39b1819a6510d0a2ba90e13
treea760f9b77fd6470565431634077188b206488346
parentd0d995612d39d0be3e1629f07e524f219e90b92e
[include/opcode]

* rx.h (RX_Operand_Type): Add TwoReg.
(RX_Opcode_ID): Remove ediv and ediv2.

[opcodes]

* rx-decode.opc (SRR): New.
(rx_decode_opcode): Use it for movbi and movbir.  Decode NOP2 (mov
r0,r0) and NOP3 (max r0,r0) special cases.
* rx-decode.c: Regenerate.

[sim/rx]

* rx.c (decode_cache_base): New.
(id_names): Remove ediv and edivu.
(optype_names): Add TwoReg.
(maybe_get_mem_page): New.
(rx_get_byte): Call it.
(get_op): Add TwoReg support.
(put_op): Likewise.
(PD, PS, PS2, GD, GS, GS2, DSZ, SSZ, S2SZ, US1, US2, OM): "opcode"
is a pointer now.
(DO_RETURN): New.  We use longjmp to return an exception result.
(decode_opcode): Make opcode a pointer to the decode cache.  Save
decoded opcode information and re-use.  Call DO_RETURN instead of
return throughout.  Remove ediv and edivu.
* mem.c (ptdc): New.  Adds decode cache.
(rx_mem_ptr): Support it.
(rx_mem_decode_cache): New.
* mem.h (enum mem_ptr_action): add MPA_DECODE_CACHE.
(rx_mem_decode_cache): Declare.
* gdb-if.c (sim_resume): Add decode_opcode's setjmp logic here...
* main.c (main): ...and here.  Use a fast loop if neither trace
nor disassemble is given.
* cpu.h (RX_MAKE_STEPPED, RX_MAKE_HIT_BREAK, RX_MAKE_EXITED,
RX_MAKE_STOPPED, RX_EXITED, RX_STOPPED): Adjust so that 0 is not a
valid code for anything.
12 files changed:
include/opcode/ChangeLog
include/opcode/rx.h
opcodes/ChangeLog
opcodes/rx-decode.c
opcodes/rx-decode.opc
sim/rx/ChangeLog
sim/rx/cpu.h
sim/rx/gdb-if.c
sim/rx/main.c
sim/rx/mem.c
sim/rx/mem.h
sim/rx/rx.c