summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
Diffstat (limited to 'sim')
-rw-r--r--sim/arm/ChangeLog29
-rw-r--r--sim/arm/README (renamed from sim/arm/README.Cygnus)0
-rw-r--r--sim/h8300/ChangeLog9
-rw-r--r--sim/h8300/compile.c122
-rw-r--r--sim/mips/ChangeLog8
-rw-r--r--sim/mips/mips.igen57
6 files changed, 91 insertions, 134 deletions
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog
index a3973301715..ca21f156d7b 100644
--- a/sim/arm/ChangeLog
+++ b/sim/arm/ChangeLog
@@ -1,3 +1,8 @@
+2003-01-10 Ben Elliston <bje@redhat.com>
+
+ * README.Cygnus: Rename from this ..
+ * README: .. to this.
+
2002-09-27 Andrew Cagney <ac131313@redhat.com>
* wrapper.c (sim_open): Add support for -m<mem-size>.
@@ -62,31 +67,9 @@
CRm is 1.
(write_cp13_reg): Allow bit 0 of reg 1 of CRm 1 to be written to.
-2002-05-20 Nick Clifton <nickc@cambridge.redhat.com>
-
- * Makefile.in (SWI_TARGET_SWITCHES): Define.
- * armos.c (swi_mask): Define. Initialise to supporting all
- SWI emulations.
- (ARMul_OSInit): For XScale targets, only support the ANGEL
- SWI interface. (This is at the request if Intel).
- (ARMul_OSHandleSWI): Examine swi_mask to see if a particular
- SWI call should be emulated.
- Do not fall through from AngelSWI_Reason_WriteC.
- Propagate exit code from RedBoot Exit SWI.
- * rdi-dgb.h (swi_mask): Prototype.
- (SWI_MASK_DEMON, SWI_MASK_ANGEL, SWI_MASK_REDBOOT): Define.
- * wrapper.c: Include run-sim.h.
- (sim_target_parse_command_line): New function. Look for and
- handle --swi-support switch.
- (sim_target_parse_arg_array): New function. Process an argv
- array for parsing by sim_target_parse_command_line.
- (sim_target_display_usage): New function. Describe syntax of
- --swi-suppoort switch.
- (sim_open): Add call to sim_target_parse_arg_array).
-
2002-05-17 Nick Clifton <nickc@cambridge.redhat.com>
- * Makefile.in (SWI_TARGET_SWITCHES): Define.
+ * Makefile.in (SIM_TARGET_SWITCHES): Define.
* armos.c (swi_mask): Define. Initialise to supporting all
SWI emulations.
(ARMul_OSInit): For XScale targets, only support the ANGEL
diff --git a/sim/arm/README.Cygnus b/sim/arm/README
index adfb766451d..adfb766451d 100644
--- a/sim/arm/README.Cygnus
+++ b/sim/arm/README
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index 2a91af984a7..62fd0735cc0 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,3 +1,12 @@
+2003-01-31 Kazu Hirata <kazu@cs.umass.edu>
+
+ * compile.c (sim_resume): Fix the handling of bxor.
+
+2003-01-16 Michael Snyder <msnyder@redhat.com>
+
+ * compile.c: Change K&R function definitions to ISO.
+ (fetch): Make static, and eliminate unused parameter 'n'.
+
2002-12-26 Kazu Hirata <kazu@cs.umass.edu>
* compile.c: Fix formatting.
diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c
index 3d9e3c8f636..e84589904a6 100644
--- a/sim/h8300/compile.c
+++ b/sim/h8300/compile.c
@@ -127,19 +127,19 @@ int h8300smode = 0;
static int memory_size;
static int
-get_now ()
+get_now (void)
{
return time (0); /* WinXX HAS UNIX like 'time', so why not using it? */
}
static int
-now_persec ()
+now_persec (void)
{
return 1;
}
static int
-bitfrom (x)
+bitfrom (int x)
{
switch (x & SIZE)
{
@@ -155,7 +155,7 @@ bitfrom (x)
}
static unsigned int
-lvalue (x, rn)
+lvalue (int x, int rn)
{
switch (x / 4)
{
@@ -175,11 +175,7 @@ lvalue (x, rn)
}
static unsigned int
-decode (addr, data, dst)
- int addr;
- unsigned char *data;
- decoded_inst *dst;
-
+decode (int addr, unsigned char *data, decoded_inst *dst)
{
int rs = 0;
int rd = 0;
@@ -481,7 +477,7 @@ decode (addr, data, dst)
}
static void
-compile (pc)
+compile (int pc)
{
int idx;
@@ -550,9 +546,8 @@ static unsigned int *lreg[18];
#define SET_MEMORY_B(x,y) \
(x < memory_size ? (cpu.memory[(x)] = y) : (cpu.eightbit[x & 0xff] = y))
-int
-fetch (arg, n)
- ea_type *arg;
+static int
+fetch (ea_type *arg)
{
int rn = arg->reg;
int abs = arg->literal;
@@ -634,9 +629,7 @@ fetch (arg, n)
static void
-store (arg, n)
- ea_type *arg;
- int n;
+store (ea_type *arg, int n)
{
int rn = arg->reg;
int abs = arg->literal;
@@ -710,7 +703,7 @@ static union
littleendian;
static void
-init_pointers ()
+init_pointers (void)
{
static int init;
@@ -785,11 +778,7 @@ init_pointers ()
}
static void
-control_c (sig, code, scp, addr)
- int sig;
- int code;
- char *scp;
- char *addr;
+control_c (int sig)
{
cpu.state = SIM_STATE_STOPPED;
cpu.exception = SIGINT;
@@ -805,10 +794,7 @@ control_c (sig, code, scp, addr)
#define I (intMaskBit != 0)
static int
-mop (code, bsize, sign)
- decoded_inst *code;
- int bsize;
- int sign;
+mop (decoded_inst *code, int bsize, int sign)
{
int multiplier;
int multiplicand;
@@ -938,8 +924,7 @@ case O (name, SB): \
}
int
-sim_stop (sd)
- SIM_DESC sd;
+sim_stop (SIM_DESC sd)
{
cpu.state = SIM_STATE_STOPPED;
cpu.exception = SIGINT;
@@ -969,8 +954,7 @@ sim_stop (sd)
#define TICK_REGNUM 13
void
-sim_resume (sd, step, siggnal)
- SIM_DESC sd;
+sim_resume (SIM_DESC sd, int step, int siggnal)
{
static int init1;
int cycles = 0;
@@ -1521,7 +1505,7 @@ sim_resume (sd, step, siggnal)
OBITOP (O_BIAND, 1, 0, c = !(ea & m) && C);
OBITOP (O_BOR, 1, 0, c = (ea & m) || C);
OBITOP (O_BIOR, 1, 0, c = !(ea & m) || C);
- OBITOP (O_BXOR, 1, 0, c = (ea & m) != C);
+ OBITOP (O_BXOR, 1, 0, c = ((ea & m) != 0) != C);
OBITOP (O_BIXOR, 1, 0, c = !(ea & m) != C);
#define MOP(bsize, signed) \
@@ -1887,19 +1871,14 @@ sim_resume (sd, step, siggnal)
}
int
-sim_trace (sd)
- SIM_DESC sd;
+sim_trace (SIM_DESC sd)
{
/* FIXME: Unfinished. */
abort ();
}
int
-sim_write (sd, addr, buffer, size)
- SIM_DESC sd;
- SIM_ADDR addr;
- unsigned char *buffer;
- int size;
+sim_write (SIM_DESC sd, SIM_ADDR addr, unsigned char *buffer, int size)
{
int i;
@@ -1920,11 +1899,7 @@ sim_write (sd, addr, buffer, size)
}
int
-sim_read (sd, addr, buffer, size)
- SIM_DESC sd;
- SIM_ADDR addr;
- unsigned char *buffer;
- int size;
+sim_read (SIM_DESC sd, SIM_ADDR addr, unsigned char *buffer, int size)
{
init_pointers ();
if (addr < 0)
@@ -1938,11 +1913,7 @@ sim_read (sd, addr, buffer, size)
int
-sim_store_register (sd, rn, value, length)
- SIM_DESC sd;
- int rn;
- unsigned char *value;
- int length;
+sim_store_register (SIM_DESC sd, int rn, unsigned char *value, int length)
{
int longval;
int shortval;
@@ -1991,11 +1962,7 @@ sim_store_register (sd, rn, value, length)
}
int
-sim_fetch_register (sd, rn, buf, length)
- SIM_DESC sd;
- int rn;
- unsigned char *buf;
- int length;
+sim_fetch_register (SIM_DESC sd, int rn, unsigned char *buf, int length)
{
int v;
int longreg = 0;
@@ -2056,10 +2023,7 @@ sim_fetch_register (sd, rn, buf, length)
}
void
-sim_stop_reason (sd, reason, sigrc)
- SIM_DESC sd;
- enum sim_stop *reason;
- int *sigrc;
+sim_stop_reason (SIM_DESC sd, enum sim_stop *reason, int *sigrc)
{
#if 0 /* FIXME: This should work but we can't use it.
grep for SLEEP above. */
@@ -2079,14 +2043,13 @@ sim_stop_reason (sd, reason, sigrc)
/* FIXME: Rename to sim_set_mem_size. */
void
-sim_size (n)
- int n;
+sim_size (int n)
{
/* Memory size is fixed. */
}
void
-sim_set_simcache_size (n)
+sim_set_simcache_size (int n)
{
if (cpu.cache)
free (cpu.cache);
@@ -2099,9 +2062,7 @@ sim_set_simcache_size (n)
void
-sim_info (sd, verbose)
- SIM_DESC sd;
- int verbose;
+sim_info (SIM_DESC sd, int verbose)
{
double timetaken = (double) cpu.ticks / (double) now_persec ();
double virttime = cpu.cycles / 10.0e6;
@@ -2149,8 +2110,7 @@ sim_info (sd, verbose)
FLAG is non-zero for the H8/300H. */
void
-set_h8300h (h_flag, s_flag)
- int h_flag, s_flag;
+set_h8300h (int h_flag, int s_flag)
{
/* FIXME: Much of the code in sim_load can be moved to sim_open.
This function being replaced by a sim_open:ARGV configuration
@@ -2160,11 +2120,10 @@ set_h8300h (h_flag, s_flag)
}
SIM_DESC
-sim_open (kind, ptr, abfd, argv)
- SIM_OPEN_KIND kind;
- struct host_callback_struct *ptr;
- struct _bfd *abfd;
- char **argv;
+sim_open (SIM_OPEN_KIND kind,
+ struct host_callback_struct *ptr,
+ struct _bfd *abfd,
+ char **argv)
{
/* FIXME: Much of the code in sim_load can be moved here. */
@@ -2176,9 +2135,7 @@ sim_open (kind, ptr, abfd, argv)
}
void
-sim_close (sd, quitting)
- SIM_DESC sd;
- int quitting;
+sim_close (SIM_DESC sd, int quitting)
{
/* Nothing to do. */
}
@@ -2186,11 +2143,7 @@ sim_close (sd, quitting)
/* Called by gdb to load a program into memory. */
SIM_RC
-sim_load (sd, prog, abfd, from_tty)
- SIM_DESC sd;
- char *prog;
- bfd *abfd;
- int from_tty;
+sim_load (SIM_DESC sd, char *prog, bfd *abfd, int from_tty)
{
bfd *prog_bfd;
@@ -2272,11 +2225,7 @@ sim_load (sd, prog, abfd, from_tty)
}
SIM_RC
-sim_create_inferior (sd, abfd, argv, env)
- SIM_DESC sd;
- struct _bfd *abfd;
- char **argv;
- char **env;
+sim_create_inferior (SIM_DESC sd, struct _bfd *abfd, char **argv, char **env)
{
if (abfd != NULL)
cpu.pc = bfd_get_start_address (abfd);
@@ -2286,17 +2235,14 @@ sim_create_inferior (sd, abfd, argv, env)
}
void
-sim_do_command (sd, cmd)
- SIM_DESC sd;
- char *cmd;
+sim_do_command (SIM_DESC sd, char *cmd)
{
(*sim_callback->printf_filtered) (sim_callback,
"This simulator does not accept any commands.\n");
}
void
-sim_set_callbacks (ptr)
- struct host_callback_struct *ptr;
+sim_set_callbacks (struct host_callback_struct *ptr)
{
sim_callback = ptr;
}
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 0f84f0b5e24..0482ab2b0a2 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,11 @@
+2003-01-14 Chris Demetriou <cgd@broadcom.com>
+
+ * mips.igen (LUXC1, SUXC1): New, for mipsV and mips64.
+
+2003-01-14 Chris Demetriou <cgd@broadcom.com>
+
+ * mips.igen (EI, DI): Remove.
+
2003-01-05 Richard Sandiford <rsandifo@redhat.com>
* Makefile.in (tmp-run-multi): Fix mips16 filter.
diff --git a/sim/mips/mips.igen b/sim/mips/mips.igen
index fece487e10d..81fb2001b27 100644
--- a/sim/mips/mips.igen
+++ b/sim/mips/mips.igen
@@ -4271,6 +4271,22 @@
}
+010011,5.BASE,5.INDEX,5.0,5.FD,000101:COP1X:64,f::LUXC1
+"luxc1 f<FD>, r<INDEX>(r<BASE>)"
+*mipsV:
+*mips64:
+{
+ address_word base = GPR[BASE];
+ address_word index = GPR[INDEX];
+ address_word vaddr = base + index;
+ check_fpu (SD_);
+ check_u64 (SD_, instruction_0);
+ /* Arrange for the bottom 3 bits of (base + index) to be 0. */
+ if ((vaddr & 0x7) != 0)
+ index -= (vaddr & 0x7);
+ COP_LD (1, FD, do_load (SD_, AccessLength_DOUBLEWORD, base, index));
+}
+
110001,5.BASE,5.FT,16.OFFSET:COP1:32,f::LWC1
"lwc1 f<FT>, <OFFSET>(r<BASE>)"
@@ -4743,6 +4759,24 @@
}
+010011,5.BASE,5.INDEX,5.FS,00000,001101:COP1X:64,f::SUXC1
+"suxc1 f<FS>, r<INDEX>(r<BASE>)"
+*mipsV:
+*mips64:
+{
+ unsigned64 v;
+ address_word base = GPR[BASE];
+ address_word index = GPR[INDEX];
+ address_word vaddr = base + index;
+ check_fpu (SD_);
+ check_u64 (SD_, instruction_0);
+ /* Arrange for the bottom 3 bits of (base + index) to be 0. */
+ if ((vaddr & 0x7) != 0)
+ index -= (vaddr & 0x7);
+ do_store (SD_, AccessLength_DOUBLEWORD, base, index, COP_SD (1, FS));
+}
+
+
010001,10,3.FMT,00000,5.FS,5.FD,000100:COP1:32,f::SQRT.fmt
"sqrt.%s<FMT> f<FD>, f<FS>"
*mipsII:
@@ -4994,17 +5028,6 @@
}
-010000,1,0000000000000000000,111001:COP0:32::DI
-"di"
-*mipsI:
-*mipsII:
-*mipsIII:
-*mipsIV:
-*mipsV:
-*vr4100:
-*vr5000:
-
-
010000,00001,5.RT,5.RD,00000000000:COP0:64::DMFC0
"dmfc0 r<RT>, r<RD>"
*mipsIII:
@@ -5029,18 +5052,6 @@
}
-010000,1,0000000000000000000,111000:COP0:32::EI
-"ei"
-*mipsI:
-*mipsII:
-*mipsIII:
-*mipsIV:
-*mipsV:
-*mips64:
-*vr4100:
-*vr5000:
-
-
010000,1,0000000000000000000,011000:COP0:32::ERET
"eret"
*mipsIII: