For sim_fetch_register / sim_store_register: Add LENGTH parameter,

return actual size of register, 0 if not applicable, -1 of legacy
implementation.
This commit is contained in:
Andrew Cagney
1998-02-17 04:06:38 +00:00
parent c5efcf3c85
commit fbb8b6b9ab
10 changed files with 256 additions and 146 deletions

View File

@@ -1,3 +1,8 @@
Tue Feb 17 12:50:27 1998 Andrew Cagney <cagney@b1.cygnus.com>
* sim-calls.c (sim_store_register, sim_fetch_register): Pass in
length parameter. Return -1.
Fri Feb 13 17:11:22 1998 Michael Meissner <meissner@cygnus.com>
* insns ({get,set}_fp_reg): Tic80 floating point is little endian,

View File

@@ -132,8 +132,8 @@ sim_close (SIM_DESC sd, int quitting)
#define Rn_REGNUM 31 /* Last General Purpose Register - for sim */
#define An_REGNUM A3_REGNUM /* Last Accumulator register - for sim */
void
sim_fetch_register (SIM_DESC sd, int regnr, unsigned char *buf)
int
sim_fetch_register (SIM_DESC sd, int regnr, unsigned char *buf, int length)
{
if (regnr == R0_REGNUM)
memset (buf, 0, sizeof (unsigned32));
@@ -147,12 +147,12 @@ sim_fetch_register (SIM_DESC sd, int regnr, unsigned char *buf)
*(unsigned64*)buf = H2T_8 (STATE_CPU (sd, 0)->acc[regnr - A0_REGNUM]);
else
sim_io_error (sd, "sim_fetch_register - unknown register nr %d", regnr);
return;
return -1;
}
void
sim_store_register (SIM_DESC sd, int regnr, unsigned char *buf)
int
sim_store_register (SIM_DESC sd, int regnr, unsigned char *buf, int length)
{
if (regnr >= R0_REGNUM && regnr <= Rn_REGNUM)
STATE_CPU (sd, 0)->reg[regnr - R0_REGNUM] = T2H_4 (*(unsigned32*)buf);
@@ -164,7 +164,7 @@ sim_store_register (SIM_DESC sd, int regnr, unsigned char *buf)
STATE_CPU (sd, 0)->acc[regnr - A0_REGNUM] = T2H_8 (*(unsigned64*)buf);
else
sim_io_error (sd, "sim_store_register - unknown register nr %d", regnr);
return;
return -1;
}