2002-11-06 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Fri, 8 Nov 2002 16:52:37 +0000 (16:52 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 8 Nov 2002 16:52:37 +0000 (16:52 +0000)
* i386-tdep.c (i386_mmx_regnum_p): Rename mmx_regnum_p.  Update
all callers.
(i386_fp_regnum_p): New function.  Use instead of FP_REGNUM_P.
(i386_fpc_regnum_p): New function.  Use instead of FPC_REGNUM_P.
(i386_sse_regnum_p): New function.  Use instead of SSE_REGNUM_P.
(i386_mxcsr_regnum_p): new function.  Use instead of
MXCSR_REGNUM_P.
* i386-tdep.h (SSE_REGNUM_P): Delete macro.
(i386_sse_regnum_p): Declare.
(i386_mxcsr_regnum_p): Declare.
(FP_REGNUM_P, FPC_REGNUM_P): Delete macros.
(i386_fp_regnum_p, i386_fpc_regnum_p): Declare.
(IS_FP_REGNUM): Update definition.
(IS_FPU_CTRL_REGNUM): Update definition..
(IS_SSE_REGNUM): Update definition..
* i386v-nat.c (register_u_addr): Update.
* go32-nat.c (fetch_register): Update.
(store_register): Update.

gdb/ChangeLog
gdb/go32-nat.c
gdb/i386-tdep.c
gdb/i386-tdep.h
gdb/i386v-nat.c

index 56ab93773d15393e3956f7e7b3a2c30dca40e7c2..d6f94e4711032fcc49a66cbce71179b2185c4c66 100644 (file)
@@ -1,3 +1,24 @@
+2002-11-06  Andrew Cagney  <cagney@redhat.com>
+
+       * i386-tdep.c (i386_mmx_regnum_p): Rename mmx_regnum_p.  Update
+       all callers.
+       (i386_fp_regnum_p): New function.  Use instead of FP_REGNUM_P.
+       (i386_fpc_regnum_p): New function.  Use instead of FPC_REGNUM_P.
+       (i386_sse_regnum_p): New function.  Use instead of SSE_REGNUM_P.
+       (i386_mxcsr_regnum_p): new function.  Use instead of
+       MXCSR_REGNUM_P.
+       * i386-tdep.h (SSE_REGNUM_P): Delete macro.
+       (i386_sse_regnum_p): Declare.
+       (i386_mxcsr_regnum_p): Declare.
+       (FP_REGNUM_P, FPC_REGNUM_P): Delete macros.
+       (i386_fp_regnum_p, i386_fpc_regnum_p): Declare.
+       (IS_FP_REGNUM): Update definition.
+       (IS_FPU_CTRL_REGNUM): Update definition..
+       (IS_SSE_REGNUM): Update definition..
+       * i386v-nat.c (register_u_addr): Update.
+       * go32-nat.c (fetch_register): Update.
+       (store_register): Update.
+
 2002-11-07  Joel Brobecker  <brobecker@gnat.com>
 
        Preparation work to convert the hppa targets to multiarch partial.
index a16b1b3729525c7a5e840d94a28a941a62902bb9..6ff2710c22d3faf68d46285431936edcd0334940 100644 (file)
@@ -467,7 +467,7 @@ fetch_register (int regno)
 {
   if (regno < FP0_REGNUM)
     supply_register (regno, (char *) &a_tss + regno_mapping[regno].tss_ofs);
-  else if (FP_REGNUM_P (regno) || FPC_REGNUM_P (regno))
+  else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno))
     i387_supply_register (regno, (char *) &npx);
   else
     internal_error (__FILE__, __LINE__,
@@ -492,7 +492,7 @@ store_register (int regno)
 {
   if (regno < FP0_REGNUM)
     regcache_collect (regno, (char *) &a_tss + regno_mapping[regno].tss_ofs);
-  else if (FP_REGNUM_P (regno) || FPC_REGNUM_P (regno))
+  else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno))
     i387_fill_fsave ((char *) &npx, regno);
   else
     internal_error (__FILE__, __LINE__,
index 91e57142e42ffcf83760963bc33ddb64f27e5317..9066a1c6bd3ef24ec555718d666ccdfbc4036d3f 100644 (file)
@@ -70,11 +70,43 @@ static const int mmx_num_regs = (sizeof (i386_mmx_names)
 #define MM0_REGNUM (NUM_REGS)
 
 static int
-mmx_regnum_p (int reg)
+i386_mmx_regnum_p (int reg)
 {
   return (reg >= MM0_REGNUM && reg < MM0_REGNUM + mmx_num_regs);
 }
 
+/* FP register?  */
+
+int
+i386_fp_regnum_p (int regnum)
+{
+  return (regnum < NUM_REGS
+         && (FP0_REGNUM && FP0_REGNUM <= (regnum) && (regnum) < FPC_REGNUM));
+}
+
+int
+i386_fpc_regnum_p (int regnum)
+{
+  return (regnum < NUM_REGS
+         && (FPC_REGNUM <= (regnum) && (regnum) < XMM0_REGNUM));
+}
+
+/* SSE register?  */
+
+int
+i386_sse_regnum_p (int regnum)
+{
+  return (regnum < NUM_REGS
+         && (XMM0_REGNUM <= (regnum) && (regnum) < MXCSR_REGNUM));
+}
+
+int
+i386_mxcsr_regnum_p (int regnum)
+{
+  return (regnum < NUM_REGS
+         && (regnum == MXCSR_REGNUM));
+}
+
 /* Return the name of register REG.  */
 
 const char *
@@ -82,7 +114,7 @@ i386_register_name (int reg)
 {
   if (reg < 0)
     return NULL;
-  if (mmx_regnum_p (reg))
+  if (i386_mmx_regnum_p (reg))
     return i386_mmx_names[reg - MM0_REGNUM];
   if (reg >= sizeof (i386_register_names) / sizeof (*i386_register_names))
     return NULL;
@@ -1098,13 +1130,13 @@ i386_register_virtual_type (int regnum)
   if (regnum == PC_REGNUM || regnum == FP_REGNUM || regnum == SP_REGNUM)
     return lookup_pointer_type (builtin_type_void);
 
-  if (FP_REGNUM_P (regnum))
+  if (i386_fp_regnum_p (regnum))
     return builtin_type_i387_ext;
 
-  if (SSE_REGNUM_P (regnum))
+  if (i386_sse_regnum_p (regnum))
     return builtin_type_vec128i;
 
-  if (mmx_regnum_p (regnum))
+  if (i386_mmx_regnum_p (regnum))
     return builtin_type_vec64i;
 
   return builtin_type_int;
@@ -1131,7 +1163,7 @@ static void
 i386_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
                           int regnum, void *buf)
 {
-  if (mmx_regnum_p (regnum))
+  if (i386_mmx_regnum_p (regnum))
     {
       char *mmx_buf = alloca (MAX_REGISTER_RAW_SIZE);
       int fpnum = mmx_regnum_to_fp_regnum (regcache, regnum);
@@ -1147,7 +1179,7 @@ static void
 i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
                            int regnum, const void *buf)
 {
-  if (mmx_regnum_p (regnum))
+  if (i386_mmx_regnum_p (regnum))
     {
       char *mmx_buf = alloca (MAX_REGISTER_RAW_SIZE);
       int fpnum = mmx_regnum_to_fp_regnum (regcache, regnum);
@@ -1171,7 +1203,7 @@ i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
 static int
 i386_register_convertible (int regnum)
 {
-  return FP_REGNUM_P (regnum);
+  return i386_fp_regnum_p (regnum);
 }
 
 /* Convert data from raw format for register REGNUM in buffer FROM to
@@ -1181,7 +1213,7 @@ static void
 i386_register_convert_to_virtual (int regnum, struct type *type,
                                  char *from, char *to)
 {
-  gdb_assert (FP_REGNUM_P (regnum));
+  gdb_assert (i386_fp_regnum_p (regnum));
 
   /* We only support floating-point values.  */
   if (TYPE_CODE (type) != TYPE_CODE_FLT)
@@ -1204,7 +1236,7 @@ static void
 i386_register_convert_to_raw (struct type *type, int regnum,
                              char *from, char *to)
 {
-  gdb_assert (FP_REGNUM_P (regnum));
+  gdb_assert (i386_fp_regnum_p (regnum));
 
   /* We only support floating-point values.  */
   if (TYPE_CODE (type) != TYPE_CODE_FLT)
index 646001baa34bf7e0c7702db8f9b33064e00094cf..e30d7e3c5ad90e11d38b84334333564a4fc62e04 100644 (file)
@@ -113,11 +113,10 @@ struct gdbarch_tdep
 /* FPU opcode, bottom eleven bits.  */
 #define FOP_REGNUM     (FPC_REGNUM + 7)
 
-/* Return non-zero if N corresponds to a FPU data registers.  */
-#define FP_REGNUM_P(n) (FP0_REGNUM && FP0_REGNUM <= (n) && (n) < FPC_REGNUM)
-
-/* Return non-zero if N corresponds to a FPU control register.  */
-#define FPC_REGNUM_P(n)        (FPC_REGNUM <= (n) && (n) < XMM0_REGNUM)
+/* Return non-zero if REGNUM matches the FP register and the FP
+   register set is active.  */
+extern int i386_fp_regnum_p (int regnum);
+extern int i386_fpc_regnum_p (int regnum);
 
 /* SSE registers.  */
 
@@ -128,17 +127,23 @@ struct gdbarch_tdep
 #define MXCSR_REGNUM \
   (XMM0_REGNUM + gdbarch_tdep (current_gdbarch)->num_xmm_regs)
 
-/* Return non-zero if N corresponds to a SSE data register.  */
-#define SSE_REGNUM_P(n) (XMM0_REGNUM <= (n) && (n) < MXCSR_REGNUM)
+/* Return non-zero if REGNUM matches the SSE register and the SSE
+   register set is active.  */
+extern int i386_sse_regnum_p (int regnum);
+extern int i386_mxcsr_regnum_p (int regnum);
+
+/* Return non-zero if REGNUM matches the ORIG_EAX register and the
+   register hack is active.  */
+extern int i386_linux_orig_eax_regnum_p (int regnum);
 
 /* FIXME: kettenis/2001-11-24: Obsolete macro's.  */
 #define FCS_REGNUM FISEG_REGNUM
 #define FCOFF_REGNUM FIOFF_REGNUM
 #define FDS_REGNUM FOSEG_REGNUM
 #define FDOFF_REGNUM FOOFF_REGNUM
-#define IS_FP_REGNUM(n) FP_REGNUM_P (n)
-#define IS_FPU_CTRL_REGNUM(n) FPC_REGNUM_P (n)
-#define IS_SSE_REGNUM(n) SSE_REGNUM_P (n)
+#define IS_FP_REGNUM(n) i386_fp_regnum_p (n)
+#define IS_FPU_CTRL_REGNUM(n) i386_fpc_regnum_p (n)
+#define IS_SSE_REGNUM(n) i386_sse_regnum_p (n)
 
 #define I386_NUM_GREGS 16
 #define I386_NUM_FREGS 16
index 78152e410e12b4a04d54d6ce4a514e1b523f81fd..a6dc505a9e12dbc3cc96a0528d8031d4f0e415ea 100644 (file)
@@ -85,7 +85,7 @@ register_u_addr (CORE_ADDR blockend, int regnum)
   struct user u;
   CORE_ADDR fpstate;
 
-  if (FP_REGNUM_P (regnum))
+  if (i386_fp_regnum_p (regnum))
     {
 #ifdef KSTKSZ                  /* SCO, and others?  */
       blockend += 4 * (SS + 1) - KSTKSZ;