* avr-tdep.c (avr_breakpoint_from_pc): New function.
authorTheodore A. Roth <troth@openavr.org>
Thu, 15 May 2003 18:10:04 +0000 (18:10 +0000)
committerTheodore A. Roth <troth@openavr.org>
Thu, 15 May 2003 18:10:04 +0000 (18:10 +0000)
(avr_gdbarch_init): Set breakpoint_from_pc method.

gdb/ChangeLog
gdb/avr-tdep.c

index cbcc0be9d7879d369d4a61ea8e3b3b4f070c7010..739d22d45cec7b114bd1bda275cd4caed4abf071 100644 (file)
@@ -1,3 +1,8 @@
+2003-05-15  Theodore A. Roth  <troth@openavr.org>
+
+       * avr-tdep.c (avr_breakpoint_from_pc): New function.
+       (avr_gdbarch_init): Set breakpoint_from_pc method.
+
 2003-05-15  Andrew Cagney  <cagney@redhat.com>
 
        * regcache.c (build_regcache): Set deprecated_register_valid
index b84e90c45522f88f57b73e1c0548cd59d71215ed..59e2c58f88164b05f81c821c707922348cd6cd2f 100644 (file)
@@ -1091,6 +1091,18 @@ avr_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
   return sp;
 }
 
+/* Not all avr devices support the BREAK insn. Those that don't should treat
+   it as a NOP. Thus, it should be ok. Since the avr is currently a remote
+   only target, this shouldn't be a problem (I hope). TRoth/2003-05-14  */
+
+const unsigned char *
+avr_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
+{
+    static unsigned char avr_break_insn [] = { 0x98, 0x95 };
+    *lenptr = sizeof (avr_break_insn);
+    return avr_break_insn;
+}
+
 /* Initialize the gdbarch structure for the AVR's. */
 
 static struct gdbarch *
@@ -1189,6 +1201,7 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
 
   set_gdbarch_decr_pc_after_break (gdbarch, 0);
+  set_gdbarch_breakpoint_from_pc (gdbarch, avr_breakpoint_from_pc);
 
   set_gdbarch_function_start_offset (gdbarch, 0);
   set_gdbarch_remote_translate_xfer_address (gdbarch,