diff options
author | Michael Meissner <gnu@the-meissners.org> | 1996-09-04 15:41:43 +0000 |
---|---|---|
committer | Michael Meissner <gnu@the-meissners.org> | 1996-09-04 15:41:43 +0000 |
commit | 87178dbdf71a6b05a76c6835c84c38230af05879 (patch) | |
tree | 2430f976570282104982aee04e66e5ee314c834c /sim/d10v/d10v_sim.h | |
parent | 9811b596028324839745905983ae940ae988f8cd (diff) | |
download | fsf-binutils-gdb-87178dbdf71a6b05a76c6835c84c38230af05879.zip fsf-binutils-gdb-87178dbdf71a6b05a76c6835c84c38230af05879.tar.gz fsf-binutils-gdb-87178dbdf71a6b05a76c6835c84c38230af05879.tar.bz2 |
Enhance debug support
Diffstat (limited to 'sim/d10v/d10v_sim.h')
-rw-r--r-- | sim/d10v/d10v_sim.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sim/d10v/d10v_sim.h b/sim/d10v/d10v_sim.h index 83c7aeb..64fa4a9 100644 --- a/sim/d10v/d10v_sim.h +++ b/sim/d10v/d10v_sim.h @@ -1,8 +1,17 @@ #include <stdio.h> #include <ctype.h> #include "ansidecl.h" +#include "callback.h" #include "opcode/d10v.h" +#define DEBUG_TRACE 0x00000001 +#define DEBUG_VALUES 0x00000002 +#define DEBUG_MEMSIZE 0x00000004 + +#ifndef DEBUG +#define DEBUG 0 +#endif + /* FIXME: host defines */ typedef unsigned char uint8; typedef unsigned short uint16; @@ -28,6 +37,16 @@ struct simops int operands[9]; }; +enum _ins_type +{ + INS_UNKNOWN, + INS_LEFT, + INS_RIGHT, + INS_LEFT_PARALLEL, + INS_RIGHT_PARALLEL, + INS_LONG +}; + struct _state { reg_t regs[16]; /* general-purpose registers */ @@ -48,8 +67,10 @@ struct _state uint8 *imem; uint8 *dmem; int exception; + enum _ins_type ins_type; } State; +extern host_callback *d10v_callback; extern uint16 OP[4]; extern struct simops Simops[]; @@ -102,6 +123,7 @@ extern struct simops Simops[]; #define RW(x) (*((uint16 *)((x)+State.imem))) #define RLW(x) (*((uint32 *)((x)+State.imem))) #define SW(addr,data) RW(addr)=data +#define SLW(addr,data) RLW(addr)=data #define READ_16(x) (*((int16 *)(x))) #define WRITE_16(addr,data) (*(int16 *)(addr)=data) #define READ_64(x) (*((int64 *)(x))) @@ -113,10 +135,12 @@ uint32 get_longword PARAMS ((uint8 *)); uint16 get_word PARAMS ((uint8 *)); int64 get_longlong PARAMS ((uint8 *)); void write_word PARAMS ((uint8 *addr, uint16 data)); +void write_longword PARAMS ((uint8 *addr, uint32 data)); void write_longlong PARAMS ((uint8 *addr, int64 data)); #define SW(addr,data) write_word((long)(addr)+State.imem,data) #define RW(x) get_word((long)(x)+State.imem) +#define SLW(addr,data) write_longword((long)(addr)+State.imem,data) #define RLW(x) get_longword((long)(x)+State.imem) #define READ_16(x) get_word(x) #define WRITE_16(addr,data) write_word(addr,data) |