diff options
author | Steve Chamberlain <sac@cygnus> | 1992-01-24 02:37:13 +0000 |
---|---|---|
committer | Steve Chamberlain <sac@cygnus> | 1992-01-24 02:37:13 +0000 |
commit | 400943fbac9324c093fb83c44c4d08d1fc770945 (patch) | |
tree | 16da467afdc7ddb9716d52c3e52f83a9f6e31cb3 | |
parent | 8174b2afcf1392e7abe31a3760ca61251b3e4681 (diff) | |
download | gdb-400943fbac9324c093fb83c44c4d08d1fc770945.zip gdb-400943fbac9324c093fb83c44c4d08d1fc770945.tar.gz gdb-400943fbac9324c093fb83c44c4d08d1fc770945.tar.bz2 |
One step closer.
-rw-r--r-- | gdb/.Sanitize | 2 | ||||
-rw-r--r-- | gdb/h8300-tdep.c | 63 | ||||
-rw-r--r-- | gdb/tm-h8300.h | 5 |
3 files changed, 50 insertions, 20 deletions
diff --git a/gdb/.Sanitize b/gdb/.Sanitize index bd5e157..6402283 100644 --- a/gdb/.Sanitize +++ b/gdb/.Sanitize @@ -89,7 +89,6 @@ gmalloc.h gould-pinsn.c gould-xdep.c h8300-tdep.c -hds-tdep.c hp300ux-xdep.c i386-pinsn.c i386-stub.c @@ -150,6 +149,7 @@ regex.h rem-multi.shar remote-adapt.c remote-eb.c +remote-hds.c remote-mm.c remote-nindy.c remote-vx.c diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c index 21dde42..50a0092 100644 --- a/gdb/h8300-tdep.c +++ b/gdb/h8300-tdep.c @@ -1,10 +1,30 @@ +#include <stdio.h> +#include "defs.h" + +/* an easy to debug H8 stack frame looks like: +0x6df2 push r2 +0x6df3 push r3 +0x6df6 push r6 +0x mov.w r7,r6 + subs stuff,sp mov.w #x,r5 + subs r5,sp + + */ +#define IS_PUSH(x) ((x & 0xff00)==0x6d00) +CORE_ADDR h8300_skip_prologue(start_pc) +CORE_ADDR start_pc; -h8300_skip_prologue() { + /* Skip past all push insns */ + short int w; - printf("skip prologue\n"); - - abort(); + w = read_memory_integer(start_pc, 2); + while (IS_PUSH(w)) + { + start_pc+=2; + w = read_memory_integer(start_pc, 2); + } +return start_pc; } @@ -14,19 +34,26 @@ h8300_pop_frame() } -print_insn() +int +print_insn(memaddr, stream) +CORE_ADDR memaddr; +FILE *stream; { - printf("print insn\n"); - + /* Nothing is bigger than 8 bytes */ + char data[8]; + read_memory (memaddr, data, sizeof(data)); + return print_insn_h8300(memaddr, data , stream); + + } - - - -FRAME_CHAIN() -{ - - printf("Frame chain\n"); - -} - - + + + + FRAME_CHAIN() + { + + printf("Frame chain\n"); + + } + + diff --git a/gdb/tm-h8300.h b/gdb/tm-h8300.h index 8185e40..fdba3ea 100644 --- a/gdb/tm-h8300.h +++ b/gdb/tm-h8300.h @@ -90,7 +90,7 @@ read_memory_integer (read_register (SP_REGNUM), 2) /* Say how long registers are. */ -#define REGISTER_TYPE short +#define REGISTER_TYPE unsigned short # define NUM_REGS 10 # define REGISTER_BYTES (10*2) @@ -262,3 +262,6 @@ read_memory_integer (read_register (SP_REGNUM), 2) #define POP_FRAME { h8300_pop_frame (); } + +#define BEFORE_MAIN_LOOP_HOOK \ + hms_before_main_loop(); |