From 400943fbac9324c093fb83c44c4d08d1fc770945 Mon Sep 17 00:00:00 2001 From: Steve Chamberlain Date: Fri, 24 Jan 1992 02:37:13 +0000 Subject: [PATCH] One step closer. --- gdb/.Sanitize | 2 +- gdb/h8300-tdep.c | 63 ++++++++++++++++++++++++++++++++++-------------- gdb/tm-h8300.h | 5 +++- 3 files changed, 50 insertions(+), 20 deletions(-) diff --git a/gdb/.Sanitize b/gdb/.Sanitize index bd5e1575d16..6402283f621 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 21dde42e5a1..50a00924066 100644 --- a/gdb/h8300-tdep.c +++ b/gdb/h8300-tdep.c @@ -1,10 +1,30 @@ +#include +#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 8185e409dae..fdba3ead7b4 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();