Fia x comment typo.
[deliverable/binutils-gdb.git] / gdb / go32-nat.c
index b2828ebaf440227acb49be6557165d1a891310c4..fc4df5d65f4528b1e826717959e23798962ee17a 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"
 #include <unistd.h>
 #include <sys/utsname.h>
 #include <io.h>
-/* breakpoint.h defines `disable' which is an enum member.  */
-#define disable interrup_disable
 #include <dos.h>
-#undef disable
 #include <dpmi.h>
 #include <go32.h>
 #include <sys/farptr.h>
@@ -93,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 */
@@ -112,9 +110,6 @@ save_npx (void)
 /* *INDENT-ON* */
 
 
-
-
-
 /* ------------------------------------------------------------------------- */
 /* Reload the contents of the NPX from the global variable `npx'.  */
 
@@ -472,8 +467,8 @@ 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);
+  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);
@@ -488,21 +483,17 @@ 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_collect (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);
@@ -652,7 +643,7 @@ go32_create_inferior (char *exec_file, char *args, char **env)
       exit (1);
     }
   environ = env_save;
-  free (cmdline);
+  xfree (cmdline);
 
   edi_init (start_state);
 #if __DJGPP_MINOR__ < 3
@@ -813,7 +804,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 */
@@ -847,7 +838,7 @@ go32_terminal_ours (void)
     {
       redir_to_child (&child_cmd);
       error ("Cannot redirect standard handles for debugger: %s.",
-            strerror (errno));
+            safe_strerror (errno));
     }
   }
 }
@@ -1703,6 +1694,7 @@ get_cr3 (void)
   cr3 = _farnspeekl (taskbase + 0x1c) & ~0xfff;
   if (cr3 > 0xfffff)
     {
+#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
@@ -1723,6 +1715,7 @@ get_cr3 (void)
              break;
            }
        }
+#endif
 
       if (cr3 > 0xfffff)
        cr3 = 0;
@@ -1912,7 +1905,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.02525 seconds and 4 git commands to generate.