+#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;
}
}
-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");
+
+ }
+
+
/* Say how long registers are. */
-#define REGISTER_TYPE short
+#define REGISTER_TYPE unsigned short
# define NUM_REGS 10
# define REGISTER_BYTES (10*2)
#define POP_FRAME { h8300_pop_frame (); }
+
+#define BEFORE_MAIN_LOOP_HOOK \
+ hms_before_main_loop();