*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / go32-nat.c
index 3f56088aed3619f0ac80cb2e8b53f368b734d9ab..ec3b5aa650b616fab52fdcdd922401e9657c3cff 100644 (file)
@@ -29,7 +29,8 @@
 #include "gdbcmd.h"
 #include "floatformat.h"
 #include "buildsym.h"
-#include "i387-nat.h"
+#include "i387-tdep.h"
+#include "i386-tdep.h"
 #include "value.h"
 #include "regcache.h"
 #include "gdb_string.h"
@@ -90,16 +91,16 @@ static void load_npx (void);        /* Restore the FPU of the debugged program */
 static void
 save_npx (void)
 {
-  asm ("inb    $0xa0, %%al
-       testb $0x20, %%al
-       jz 1f
-       xorb %% al, %%al
-       outb %% al, $0xf0
-       movb $0x20, %%al
-       outb %% al, $0xa0
-       outb %% al, $0x20
-1:
-       fnsave % 0
+  asm ("inb    $0xa0, %%al  \n\
+       testb $0x20, %%al    \n\
+       jz 1f               \n\
+       xorb %%al, %%al     \n\
+       outb %%al, $0xf0     \n\
+       movb $0x20, %%al            \n\
+       outb %%al, $0xa0     \n\
+       outb %%al, $0x20     \n\
+1:                                 \n\
+       fnsave %0           \n\
        fwait "
 :     "=m" (npx)
 :                              /* No input */
@@ -109,9 +110,6 @@ save_npx (void)
 /* *INDENT-ON* */
 
 
-
-
-
 /* ------------------------------------------------------------------------- */
 /* Reload the contents of the NPX from the global variable `npx'.  */
 
@@ -185,7 +183,7 @@ static int go32_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
 static void go32_files_info (struct target_ops *target);
 static void go32_stop (void);
 static void go32_kill_inferior (void);
-static void go32_create_inferior (char *exec_file, char *args, char **env);
+static void go32_create_inferior (char *exec_file, char *args, char **env, int from_tty);
 static void go32_mourn_inferior (void);
 static int go32_can_run (void);
 
@@ -468,9 +466,10 @@ static void
 fetch_register (int regno)
 {
   if (regno < FP0_REGNUM)
-    supply_register (regno, (char *) &a_tss + regno_mapping[regno].tss_ofs);
-  else if (regno <= LAST_FPU_CTRL_REGNUM)
-    i387_supply_register (regno, (char *) &npx);
+    regcache_raw_supply (current_regcache, regno,
+                        (char *) &a_tss + regno_mapping[regno].tss_ofs);
+  else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno))
+    i387_supply_fsave (current_regcache, regno, &npx);
   else
     internal_error (__FILE__, __LINE__,
                    "Invalid register no. %d in fetch_register.", regno);
@@ -485,21 +484,18 @@ go32_fetch_registers (int regno)
     {
       for (regno = 0; regno < FP0_REGNUM; regno++)
        fetch_register (regno);
-      i387_supply_fsave ((char *) &npx);
+      i387_supply_fsave (current_regcache, -1, &npx);
     }
 }
 
 static void
 store_register (int regno)
 {
-  void *rp;
-  void *v = (void *) register_buffer (regno);
-
   if (regno < FP0_REGNUM)
-    memcpy ((char *) &a_tss + regno_mapping[regno].tss_ofs,
-           v, regno_mapping[regno].size);
-  else if (regno <= LAST_FPU_CTRL_REGNUM)
-    i387_fill_fsave ((char *)&npx, regno);
+    regcache_raw_collect (current_regcache, regno,
+                         (char *) &a_tss + regno_mapping[regno].tss_ofs);
+  else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno))
+    i387_fill_fsave ((char *) &npx, regno);
   else
     internal_error (__FILE__, __LINE__,
                    "Invalid register no. %d in store_register.", regno);
@@ -580,7 +576,7 @@ go32_kill_inferior (void)
 }
 
 static void
-go32_create_inferior (char *exec_file, char *args, char **env)
+go32_create_inferior (char *exec_file, char *args, char **env, int from_tty)
 {
   extern char **environ;
   jmp_buf start_state;
@@ -810,7 +806,7 @@ go32_terminal_inferior (void)
   {
     redir_to_debugger (&child_cmd);
     error ("Cannot redirect standard handles for program: %s.",
-          strerror (errno));
+          safe_strerror (errno));
   }
   /* set the console device of the inferior to whatever mode
      (raw or cooked) we found it last time */
@@ -844,7 +840,7 @@ go32_terminal_ours (void)
     {
       redir_to_child (&child_cmd);
       error ("Cannot redirect standard handles for debugger: %s.",
-            strerror (errno));
+            safe_strerror (errno));
     }
   }
 }
@@ -1521,7 +1517,7 @@ go32_sldt (char *arg, int from_tty)
          if (ldt_entry < 0
              || (ldt_entry & 4) == 0
              || (ldt_entry & 3) != (cpl & 3))
-           error ("Invalid LDT entry 0x%03x.", ldt_entry);
+           error ("Invalid LDT entry 0x%03lx.", (unsigned long)ldt_entry);
        }
     }
 
@@ -1559,8 +1555,8 @@ go32_sldt (char *arg, int from_tty)
       if (ldt_entry >= 0)
        {
          if (ldt_entry > limit)
-           error ("Invalid LDT entry %#x: outside valid limits [0..%#x]",
-                  ldt_entry, limit);
+           error ("Invalid LDT entry %#lx: outside valid limits [0..%#x]",
+                  (unsigned long)ldt_entry, limit);
 
          display_descriptor (ldt_descr.stype, base, ldt_entry / 8, 1);
        }
@@ -1590,8 +1586,8 @@ go32_sgdt (char *arg, int from_tty)
        {
          gdt_entry = parse_and_eval_long (arg);
          if (gdt_entry < 0 || (gdt_entry & 7) != 0)
-           error ("Invalid GDT entry 0x%03x: not an integral multiple of 8.",
-                  gdt_entry);
+           error ("Invalid GDT entry 0x%03lx: not an integral multiple of 8.",
+                  (unsigned long)gdt_entry);
        }
     }
 
@@ -1601,8 +1597,8 @@ go32_sgdt (char *arg, int from_tty)
   if (gdt_entry >= 0)
     {
       if (gdt_entry > gdtr.limit)
-       error ("Invalid GDT entry %#x: outside valid limits [0..%#x]",
-              gdt_entry, gdtr.limit);
+       error ("Invalid GDT entry %#lx: outside valid limits [0..%#x]",
+              (unsigned long)gdt_entry, gdtr.limit);
 
       display_descriptor (0, gdtr.base, gdt_entry / 8, 1);
     }
@@ -1631,7 +1627,7 @@ go32_sidt (char *arg, int from_tty)
        {
          idt_entry = parse_and_eval_long (arg);
          if (idt_entry < 0)
-           error ("Invalid (negative) IDT entry %d.", idt_entry);
+           error ("Invalid (negative) IDT entry %ld.", idt_entry);
        }
     }
 
@@ -1643,8 +1639,8 @@ go32_sidt (char *arg, int from_tty)
   if (idt_entry >= 0)
     {
       if (idt_entry > idtr.limit)
-       error ("Invalid IDT entry %#x: outside valid limits [0..%#x]",
-              idt_entry, idtr.limit);
+       error ("Invalid IDT entry %#lx: outside valid limits [0..%#x]",
+              (unsigned long)idt_entry, idtr.limit);
 
       display_descriptor (1, idtr.base, idt_entry, 1);
     }
@@ -1700,7 +1696,7 @@ get_cr3 (void)
   cr3 = _farnspeekl (taskbase + 0x1c) & ~0xfff;
   if (cr3 > 0xfffff)
     {
-#if 0  /* not fully supported yet */
+#if 0  /* not fullly supported yet */
       /* The Page Directory is in UMBs.  In that case, CWSDPMI puts
         the first Page Table right below the Page Directory.  Thus,
         the first Page Table's entry for its own address and the Page
@@ -1840,7 +1836,7 @@ display_page_table (long n, int force)
 static void
 go32_pte (char *arg, int from_tty)
 {
-  long pde_idx = -1, i;
+  long pde_idx = -1L, i;
 
   if (arg && *arg)
     {
@@ -1851,7 +1847,7 @@ go32_pte (char *arg, int from_tty)
        {
          pde_idx = parse_and_eval_long (arg);
          if (pde_idx < 0 || pde_idx >= 1024)
-           error ("Entry %d is outside valid limits [0..1023].", pde_idx);
+           error ("Entry %ld is outside valid limits [0..1023].", pde_idx);
        }
     }
 
@@ -1911,7 +1907,7 @@ _initialize_go32_nat (void)
   add_target (&go32_ops);
 
   add_prefix_cmd ("dos", class_info, go32_info_dos_command,
-                 "Print information specific to DJGPP (a.k.a. MS-DOS) debugging.",
+                 "Print information specific to DJGPP (aka MS-DOS) debugging.",
                  &info_dos_cmdlist, "info dos ", 0, &infolist);
 
   add_cmd ("sysinfo", class_info, go32_sysinfo,
This page took 0.02805 seconds and 4 git commands to generate.