Update copyright date.
[deliverable/binutils-gdb.git] / gdb / m68hc11-tdep.c
index 64f781084547c56af1ee6cbf7c0f899916078d6e..863dc907e020871a1cf8a5ebef5579a43271b248 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for Motorola 68HC11 & 68HC12
-   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
    Contributed by Stephane Carrez, stcarrez@worldnet.fr
 
 This file is part of GDB.
@@ -33,6 +33,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "symfile.h"
 #include "objfiles.h"
 #include "arch-utils.h"
+#include "regcache.h"
 
 #include "target.h"
 #include "opcode/m68hc11.h"
@@ -333,7 +334,7 @@ m68hc11_pop_frame (void)
                           read_memory_integer (frame->saved_regs[regnum], 2));
 
       write_register (HARD_PC_REGNUM, frame->extra_info->return_pc);
-      sp = fp + frame->extra_info->size;
+      sp = (fp + frame->extra_info->size + 2) & 0x0ffff;
       write_register (HARD_SP_REGNUM, sp);
     }
   flush_cached_frames ();
@@ -488,10 +489,12 @@ m68hc11_analyze_instruction (struct insn_sequence *seq, CORE_ADDR *pc,
                   v = read_memory_unsigned_integer (*pc + j + 1, 1);
                   if (buffer[j] & 1)
                     v |= 0xff00;
+                  *pc = *pc + 1;
                 }
               else if (buffer[j] == 0xf2)
                 {
                   v = read_memory_unsigned_integer (*pc + j + 1, 2);
+                  *pc = *pc + 2;
                 }
               cur_val = v;
               break;
@@ -586,7 +589,7 @@ m68hc11_guess_from_prologue (CORE_ADDR pc, CORE_ADDR fp,
   func_end = pc + 128;
   found_frame_point = 0;
   *frame_offset = 0;
-  save_addr = fp;
+  save_addr = fp + STACK_CORRECTION;
   while (!done && pc + 2 < func_end)
     {
       struct insn_sequence *seq;
This page took 0.023582 seconds and 4 git commands to generate.