aboutsummaryrefslogtreecommitdiff
path: root/sim/mips
diff options
context:
space:
mode:
authorChris Demetriou <cgd@google.com>2002-06-04 01:35:23 +0000
committerChris Demetriou <cgd@google.com>2002-06-04 01:35:23 +0000
commit18d8a52d004d2dc4ee9ad3ceaa76a4d748b4f920 (patch)
treecf131cab0eb9bbf3ea5272a42cfa72076aa5f547 /sim/mips
parent9ad85d9b015ac8708c3d37dc03f0209dc6494d0c (diff)
downloadfsf-binutils-gdb-18d8a52d004d2dc4ee9ad3ceaa76a4d748b4f920.zip
fsf-binutils-gdb-18d8a52d004d2dc4ee9ad3ceaa76a4d748b4f920.tar.gz
fsf-binutils-gdb-18d8a52d004d2dc4ee9ad3ceaa76a4d748b4f920.tar.bz2
2002-06-03 Chris Demetriou <cgd@broadcom.com>
* sim-main.h (Nan, Infinity, Less, Equal, AbsoluteValue, Negate) (Add, Sub, Multiply, Divide, Recip, SquareRoot): Move lower in file, remove PARAMS from prototypes. (value_fpr, store_fpr, convert): Likewise. Use SIM_STATE to provide simulator state arguments. (ValueFPR, StoreFPR, Convert): Move lower in file. Use SIM_ARGS to pass simulator state arguments. * cp1.c (SD): Redefine as CPU_STATE(cpu). (store_fpr, convert): Remove 'sd' argument. (value_fpr): Likewise. Convert to use 'SD' instead.
Diffstat (limited to 'sim/mips')
-rw-r--r--sim/mips/ChangeLog13
-rw-r--r--sim/mips/cp1.c13
-rw-r--r--sim/mips/sim-main.h46
3 files changed, 42 insertions, 30 deletions
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 0fbed2b..399827d 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,5 +1,18 @@
2002-06-03 Chris Demetriou <cgd@broadcom.com>
+ * sim-main.h (Nan, Infinity, Less, Equal, AbsoluteValue, Negate)
+ (Add, Sub, Multiply, Divide, Recip, SquareRoot): Move lower in
+ file, remove PARAMS from prototypes.
+ (value_fpr, store_fpr, convert): Likewise. Use SIM_STATE to provide
+ simulator state arguments.
+ (ValueFPR, StoreFPR, Convert): Move lower in file. Use SIM_ARGS to
+ pass simulator state arguments.
+ * cp1.c (SD): Redefine as CPU_STATE(cpu).
+ (store_fpr, convert): Remove 'sd' argument.
+ (value_fpr): Likewise. Convert to use 'SD' instead.
+
+2002-06-03 Chris Demetriou <cgd@broadcom.com>
+
* cp1.c (Min, Max): Remove #if 0'd functions.
* sim-main.h (Min, Max): Remove.
diff --git a/sim/mips/cp1.c b/sim/mips/cp1.c
index d611d9c..7a3be11 100644
--- a/sim/mips/cp1.c
+++ b/sim/mips/cp1.c
@@ -21,7 +21,7 @@
/* Within cp1.c we refer to sim_cpu directly. */
#define CPU cpu
-#define SD sd
+#define SD CPU_STATE(cpu)
/*-- FPU support routines ---------------------------------------------------*/
@@ -63,8 +63,7 @@ static const char *fpu_rounding_mode_name (int rm);
#endif
uword64
-value_fpr (SIM_DESC sd,
- sim_cpu *cpu,
+value_fpr (sim_cpu *cpu,
address_word cia,
int fpr,
FP_formats fmt)
@@ -95,7 +94,7 @@ value_fpr (SIM_DESC sd,
}
if (fmt != FPR_STATE[fpr])
{
- sim_io_eprintf (sd, "FPR %d (format %s) being accessed with format %s - setting to unknown (PC = 0x%s)\n",
+ sim_io_eprintf (SD, "FPR %d (format %s) being accessed with format %s - setting to unknown (PC = 0x%s)\n",
fpr, fpu_format_name (FPR_STATE[fpr]),
fpu_format_name (fmt), pr_addr (cia));
FPR_STATE[fpr] = fmt_unknown;
@@ -195,8 +194,7 @@ value_fpr (SIM_DESC sd,
}
void
-store_fpr (SIM_DESC sd,
- sim_cpu *cpu,
+store_fpr (sim_cpu *cpu,
address_word cia,
int fpr,
FP_formats fmt,
@@ -894,8 +892,7 @@ SquareRoot (op, fmt)
}
uword64
-convert (SIM_DESC sd,
- sim_cpu *cpu,
+convert (sim_cpu *cpu,
address_word cia,
int rm,
uword64 op,
diff --git a/sim/mips/sim-main.h b/sim/mips/sim-main.h
index c453092..47b5feb 100644
--- a/sim/mips/sim-main.h
+++ b/sim/mips/sim-main.h
@@ -80,28 +80,6 @@ typedef enum {
fmt_uninterpreted_64 = 0x80000000U,
} FP_formats;
-unsigned64 value_fpr PARAMS ((SIM_DESC sd, sim_cpu *cpu, address_word cia, int fpr, FP_formats));
-#define ValueFPR(FPR,FMT) value_fpr (SD, CPU, cia, (FPR), (FMT))
-
-void store_fpr PARAMS ((SIM_DESC sd, sim_cpu *cpu, address_word cia, int fpr, FP_formats fmt, unsigned64 value));
-#define StoreFPR(FPR,FMT,VALUE) store_fpr (SD, CPU, cia, (FPR), (FMT), (VALUE))
-
-int NaN PARAMS ((unsigned64 op, FP_formats fmt));
-int Infinity PARAMS ((unsigned64 op, FP_formats fmt));
-int Less PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-int Equal PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-unsigned64 AbsoluteValue PARAMS ((unsigned64 op, FP_formats fmt));
-unsigned64 Negate PARAMS ((unsigned64 op, FP_formats fmt));
-unsigned64 Add PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-unsigned64 Sub PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-unsigned64 Multiply PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-unsigned64 Divide PARAMS ((unsigned64 op1, unsigned64 op2, FP_formats fmt));
-unsigned64 Recip PARAMS ((unsigned64 op, FP_formats fmt));
-unsigned64 SquareRoot PARAMS ((unsigned64 op, FP_formats fmt));
-unsigned64 convert PARAMS ((SIM_DESC sd, sim_cpu *cpu, address_word cia, int rm, unsigned64 op, FP_formats from, FP_formats to));
-#define Convert(rm,op,from,to) \
-convert (SD, CPU, cia, rm, op, from, to)
-
/* Macro to update FPSR condition-code field. This is complicated by
the fact that there is a hole in the index range of the bits within
the FCSR register. Also, the number of bits visible depends on the
@@ -729,6 +707,30 @@ decode_coproc (SD, CPU, cia, (instruction))
int sim_monitor (SIM_DESC sd, sim_cpu *cpu, address_word cia, unsigned int arg);
+/* FPR access. */
+unsigned64 value_fpr (SIM_STATE, int fpr, FP_formats);
+#define ValueFPR(FPR,FMT) value_fpr (SIM_ARGS, (FPR), (FMT))
+void store_fpr (SIM_STATE, int fpr, FP_formats fmt, unsigned64 value);
+#define StoreFPR(FPR,FMT,VALUE) store_fpr (SIM_ARGS, (FPR), (FMT), (VALUE))
+
+
+/* FPU operations. */
+int NaN (unsigned64 op, FP_formats fmt);
+int Infinity (unsigned64 op, FP_formats fmt);
+int Less (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+int Equal (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+unsigned64 AbsoluteValue (unsigned64 op, FP_formats fmt);
+unsigned64 Negate (unsigned64 op, FP_formats fmt);
+unsigned64 Add (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+unsigned64 Sub (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+unsigned64 Multiply (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+unsigned64 Divide (unsigned64 op1, unsigned64 op2, FP_formats fmt);
+unsigned64 Recip (unsigned64 op, FP_formats fmt);
+unsigned64 SquareRoot (unsigned64 op, FP_formats fmt);
+unsigned64 convert (SIM_STATE, int rm, unsigned64 op, FP_formats from, FP_formats to);
+#define Convert(rm,op,from,to) convert (SIM_ARGS, rm, op, from, to)
+
+
/* MDMX access. */
typedef unsigned int MX_fmtsel; /* MDMX format select field (5 bits). */