forked from Imagelibrary/binutils-gdb
sim/m32r: return register sizes after fetch and store
The m32r simulator currently always returns -1 for the register size after both a fetch and a store. In the fetch case GDB is forgiving of this, but in the store case GDB treats a return value of -1 as an error. This commit updates the m32r simulator to return a valid register size when fetching or storing a register. This fixes any GDB test that writes to a register, which will include any GDB test that makes an inferior call, for example gdb.base/break.exp. sim/m32r/ChangeLog: * m32r.c (m32rbf_register_size): New function. (m32rbf_fetch_register): Use new function. (m32rbf_store_register): Likewise.
This commit is contained in:
@@ -24,6 +24,14 @@
|
||||
#include "cgen-mem.h"
|
||||
#include "cgen-ops.h"
|
||||
|
||||
/* Return the size of REGNO in bytes. */
|
||||
|
||||
static int
|
||||
m32rbf_register_size (int regno)
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
/* Decode gdb ctrl register number. */
|
||||
|
||||
int
|
||||
@@ -48,6 +56,10 @@ m32r_decode_gdb_ctrl_regnum (int gdb_regnum)
|
||||
int
|
||||
m32rbf_fetch_register (SIM_CPU *current_cpu, int rn, unsigned char *buf, int len)
|
||||
{
|
||||
int size = m32rbf_register_size (rn);
|
||||
if (len != size)
|
||||
return -1;
|
||||
|
||||
if (rn < 16)
|
||||
SETTWI (buf, m32rbf_h_gr_get (current_cpu, rn));
|
||||
else
|
||||
@@ -76,7 +88,7 @@ m32rbf_fetch_register (SIM_CPU *current_cpu, int rn, unsigned char *buf, int len
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1; /*FIXME*/
|
||||
return size;
|
||||
}
|
||||
|
||||
/* The contents of BUF are in target byte order. */
|
||||
@@ -84,6 +96,10 @@ m32rbf_fetch_register (SIM_CPU *current_cpu, int rn, unsigned char *buf, int len
|
||||
int
|
||||
m32rbf_store_register (SIM_CPU *current_cpu, int rn, unsigned char *buf, int len)
|
||||
{
|
||||
int size = m32rbf_register_size (rn);
|
||||
if (len != size)
|
||||
return -1;
|
||||
|
||||
if (rn < 16)
|
||||
m32rbf_h_gr_set (current_cpu, rn, GETTWI (buf));
|
||||
else
|
||||
@@ -121,7 +137,7 @@ m32rbf_store_register (SIM_CPU *current_cpu, int rn, unsigned char *buf, int len
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1; /*FIXME*/
|
||||
return size;
|
||||
}
|
||||
|
||||
USI
|
||||
|
||||
Reference in New Issue
Block a user