diff options
author | DJ Delorie <dj@redhat.com> | 2010-07-28 21:58:22 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2010-07-28 21:58:22 +0000 |
commit | 933786524e8179ddeb0a27740d9b206352f33436 (patch) | |
tree | 458cf4052f5038fecce2cac33c903ccb536b495f /sim/rx/mem.h | |
parent | d61e002c1485f3c27a2d31971480954811caa0f0 (diff) | |
download | fsf-binutils-gdb-933786524e8179ddeb0a27740d9b206352f33436.zip fsf-binutils-gdb-933786524e8179ddeb0a27740d9b206352f33436.tar.gz fsf-binutils-gdb-933786524e8179ddeb0a27740d9b206352f33436.tar.bz2 |
[sim/rx]
* README.txt: New.
* config.h (CYCLE_ACCURATE, CYCLE_STATS): New.
* configure.in (--enable-cycle-accurate, --enable-cycle-stats):
New. Default to enabled.
* configure: Regenerate.
* cpu.h (regs_type): Add cycle tracking info.
(reset_pipeline_stats): Declare.
(halt_pipeline_stats): Declare.
(pipeline_stats): Declare.
* main.c (done): Call pipeline_stats().
* mem.h (rx_mem_ptr): Moved to here ...
* mem.c (mem_ptr): ... from here. Rename throughout.
(mem_put_byte): Move LEDs to Port A. Add Port B to control cycle
statistics. Move UART to SCI4.
(mem_put_hi): Add TPU 1-2. TPU 1 and 2 count CPU cycles.
* reg.c (init_regs): Set Rt reg to -1 (no reg).
* rx.c: Add cycle counting and statistics throughout.
(rx_get_byte): Optimize for speed.
(decode_opcode): Likewise.
(reset_pipeline_stats): New.
(halt_pipeline_stats): New.
(pipeline_stats): New.
* trace.c (sim_disasm_one): Print cycle count.
[include/opcode]
* rx.h (RX_Opcode_ID): Add nop2 and nop3 for statistics.
Diffstat (limited to 'sim/rx/mem.h')
-rw-r--r-- | sim/rx/mem.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sim/rx/mem.h b/sim/rx/mem.h index 1b8320a..37740d5 100644 --- a/sim/rx/mem.h +++ b/sim/rx/mem.h @@ -25,10 +25,25 @@ enum mem_content_type { MC_NUM_TYPES }; +enum mem_ptr_action +{ + MPA_WRITING, + MPA_READING, + MPA_CONTENT_TYPE +}; + void init_mem (void); void mem_usage_stats (void); unsigned long mem_usage_cycles (void); +/* rx_mem_ptr returns a pointer which is valid as long as the address + requested remains within the same page. */ +#define PAGE_BITS 12 +#define PAGE_SIZE (1 << PAGE_BITS) +#define NONPAGE_MASK (~(PAGE_SIZE-1)) + +unsigned char *rx_mem_ptr (unsigned long address, enum mem_ptr_action action); + void mem_put_qi (int address, unsigned char value); void mem_put_hi (int address, unsigned short value); void mem_put_psi (int address, unsigned long value); |