formatting cleanups
[deliverable/binutils-gdb.git] / gdb / z8k-tdep.c
index bd39d00c2a7a347127b4d9c7dcacd3db38bfb935..6289ac6951464f1d5f39acce7e06c3697448ca9d 100644 (file)
@@ -28,7 +28,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "symtab.h"
 #include "gdbcmd.h"
 #include "gdbtypes.h"
-
+#include "dis-asm.h"
 /* Return the saved PC from this frame.
 
    If the frame has a memory copy of SRP_REGNUM, use that.  If not,
@@ -88,50 +88,50 @@ examine_frame (pc, regs, sp)
   int regno;
 
   for (regno = 0; regno < NUM_REGS; regno++)
-   regs->regs[regno] = 0;
+    regs->regs[regno] = 0;
 
   while (IS_PUSHW (w) || IS_PUSHL (w))
-  {
-    /* work out which register is being pushed to where */
-    if (IS_PUSHL (w))
-    {
-      regs->regs[w & 0xf] = offset;
-      regs->regs[(w & 0xf) + 1] = offset + 2;
-      offset += 4;
-    }
-    else
     {
-      regs->regs[w & 0xf] = offset;
-      offset += 2;
+      /* work out which register is being pushed to where */
+      if (IS_PUSHL (w))
+       {
+         regs->regs[w & 0xf] = offset;
+         regs->regs[(w & 0xf) + 1] = offset + 2;
+         offset += 4;
+       }
+      else
+       {
+         regs->regs[w & 0xf] = offset;
+         offset += 2;
+       }
+      pc += 2;
+      w = read_memory_short (pc);
     }
-    pc += 2;
-    w = read_memory_short (pc);
-  }
 
   if (IS_MOVE_FP (w))
-  {
-    /* We know the fp */
+    {
+      /* We know the fp */
 
-  }
+    }
   else if (IS_SUB_SP (w))
-  {
-    /* Subtracting a value from the sp, so were in a function
+    {
+      /* Subtracting a value from the sp, so were in a function
        which needs stack space for locals, but has no fp.  We fake up
        the values as if we had an fp */
-    regs->regs[FP_REGNUM] = sp;
-  }
+      regs->regs[FP_REGNUM] = sp;
+    }
   else
-  {
-    /* This one didn't have an fp, we'll fake it up */
-    regs->regs[SP_REGNUM] = sp;
-  }
+    {
+      /* This one didn't have an fp, we'll fake it up */
+      regs->regs[SP_REGNUM] = sp;
+    }
   /* stack pointer contains address of next frame */
   /*  regs->regs[fp_regnum()] = fp;*/
   regs->regs[SP_REGNUM] = sp;
   return pc;
 }
 
-CORE_ADDR 
+CORE_ADDR
 z8k_skip_prologue (start_pc)
      CORE_ADDR start_pc;
 {
@@ -140,7 +140,7 @@ z8k_skip_prologue (start_pc)
   return examine_frame (start_pc, &dummy, 0);
 }
 
-CORE_ADDR 
+CORE_ADDR
 addr_bits_remove (x)
      CORE_ADDR x;
 {
@@ -180,7 +180,7 @@ init_frame_pc ()
    ways in the stack frame.  sp is even more special:
    the address we return for it IS the sp for the next frame.  */
 
-void 
+void
 get_frame_saved_regs (frame_info, frame_saved_regs)
      struct frame_info *frame_info;
      struct frame_saved_regs *frame_saved_regs;
@@ -197,27 +197,28 @@ get_frame_saved_regs (frame_info, frame_saved_regs)
 
 }
 
-void 
+void
 z8k_push_dummy_frame ()
 {
   abort ();
 }
 
-int 
+int
 print_insn (memaddr, stream)
      CORE_ADDR memaddr;
      FILE *stream;
 {
-  char temp[20];
+  disassemble_info info;
+
+  GDB_INIT_DISASSEMBLE_INFO(info, stream);
 
-  read_memory (memaddr, temp, 20);
   if (BIG)
     {
-      return print_insn_z8001 (memaddr, temp, stream);
+      return print_insn_z8001 ((bfd_vma) memaddr, &info);
     }
   else
     {
-      return print_insn_z8002 (memaddr, temp, stream);
+      return print_insn_z8002 ((bfd_vma) memaddr, &info);
     }
 }
 
@@ -232,16 +233,15 @@ NEXT_PROLOGUE_INSN (addr, lim, pword1)
      CORE_ADDR lim;
      short *pword1;
 {
+  char buf[2];
   if (addr < lim + 8)
     {
-      read_memory (addr, pword1, sizeof (*pword1));
-      SWAP_TARGET_AND_HOST (pword1, sizeof (short));
+      read_memory (addr, buf, 2);
+      *pword1 = extract_signed_integer (buf, 2);
 
       return addr + 2;
     }
-
   return 0;
-
 }
 
 /* Put here the code to store, into a struct frame_saved_regs,
@@ -305,14 +305,53 @@ addr_bits_set ()
 int
 saved_pc_after_call ()
 {
-  return addr_bits_remove (read_memory_integer (read_register (SP_REGNUM), PTR_SIZE));
+  return addr_bits_remove 
+    (read_memory_integer (read_register (SP_REGNUM), PTR_SIZE));
+}
+
+
+extract_return_value(type, regbuf, valbuf)
+struct type *type;
+char *regbuf;
+char *valbuf;
+{
+  int b;
+  int len = TYPE_LENGTH(type);
+
+  for (b = 0; b < len; b += 2) {
+    int todo = len - b;
+    if (todo > 2)
+      todo = 2;
+    memcpy(valbuf + b, regbuf + b, todo);
+  }
+}
+
+void
+write_return_value(type, valbuf)
+struct type *type;
+char *valbuf;
+{
+  int reg;
+  int len;
+  for (len = 0; len <  TYPE_LENGTH(type); len += 2)
+    {
+      write_register_bytes(REGISTER_BYTE(len /2  + 2), valbuf + len, 2);
+    }
 }
 
+void
+store_struct_return(addr, sp)
+CORE_ADDR addr;
+CORE_ADDR sp;
+{
+  write_register(2, addr);
+}
+
+
 void
 print_register_hook (regno)
      int regno;
 {
-
   if ((regno & 1) == 0 && regno < 16)
     {
       unsigned short l[2];
@@ -327,10 +366,10 @@ print_register_hook (regno)
     {
       unsigned short l[4];
 
-      read_relative_register_raw_bytes (regno, l + 0);
-      read_relative_register_raw_bytes (regno + 1, l + 1);
-      read_relative_register_raw_bytes (regno + 2, l + 2);
-      read_relative_register_raw_bytes (regno + 3, l + 3);
+      read_relative_register_raw_bytes (regno, (char *) (l + 0));
+      read_relative_register_raw_bytes (regno + 1, (char *) (l + 1));
+      read_relative_register_raw_bytes (regno + 2, (char *) (l + 2));
+      read_relative_register_raw_bytes (regno + 3, (char *) (l + 3));
 
       printf ("\t");
       printf ("%04x%04x%04x%04x", l[0], l[1], l[2], l[3]);
@@ -373,14 +412,14 @@ register_convert_to_raw (regnum, to, from)
   to[3] = from[3];
 }
 
-void 
+void
 z8k_pop_frame ()
 {
 }
 
 struct cmd_list_element *setmemorylist;
 
-void 
+void
 z8k_set_pointer_size (newsize)
      int newsize;
 {
@@ -407,7 +446,7 @@ segmented_command (args, from_tty)
      char *args;
      int from_tty;
 {
-  z8k_set_pointer_size (16);
+  z8k_set_pointer_size (32);
 }
 
 static void
This page took 0.026109 seconds and 4 git commands to generate.