aboutsummaryrefslogtreecommitdiff
path: root/sim/d10v/d10v_sim.h
diff options
context:
space:
mode:
authorMichael Meissner <gnu@the-meissners.org>1996-09-04 15:41:43 +0000
committerMichael Meissner <gnu@the-meissners.org>1996-09-04 15:41:43 +0000
commit87178dbdf71a6b05a76c6835c84c38230af05879 (patch)
tree2430f976570282104982aee04e66e5ee314c834c /sim/d10v/d10v_sim.h
parent9811b596028324839745905983ae940ae988f8cd (diff)
downloadfsf-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.h24
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)