Line 106... |
Line 106... |
gdbserver_expedite_regs = expedite_regs_or32;
|
gdbserver_expedite_regs = expedite_regs_or32;
|
gdbserver_xmltarget = NULL;
|
gdbserver_xmltarget = NULL;
|
}
|
}
|
|
|
|
|
|
/*! Some useful GDB register numbers. */
|
|
#define GDB_REGNUM_R0 0
|
|
#define GDB_REGNUM_R31 31
|
|
#define GDB_REGNUM_PPC 32
|
|
#define GDB_REGNUM_NPC 33
|
|
#define GDB_REGNUM_SR 34
|
|
|
/*! This is the number of *GDB* registers. I.e. r0-r31, PPC, NPC and SR. */
|
/*! This is the number of *GDB* registers. I.e. r0-r31, PPC, NPC and SR. */
|
#define or32_num_regs 35
|
#define or32_num_regs (GDB_REGNUM_SR + 1)
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
/*!Provide the ptrace "address" of a register.
|
/*!Provide the ptrace "address" of a register.
|
|
|
Line 128... |
Line 135... |
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
/*!Predicate to indicate if a register can be read.
|
/*!Predicate to indicate if a register can be read.
|
|
|
For now, we believe all OR32 registers are readable.
|
We mark r0 as not readable.
|
|
|
@param[in] regno Register to read.
|
@param[in] regno Register to read.
|
|
|
@return Non-zero (TRUE) if the register can be read, zero (FALSE)
|
@return Non-zero (TRUE) if the register can be read, zero (FALSE)
|
otherwise. */
|
otherwise. */
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
static int
|
static int
|
or32_cannot_fetch_register (int regno)
|
or32_cannot_fetch_register (int regno)
|
{
|
{
|
return (regno >= or32_num_regs);
|
return (GDB_REGNUM_R0 == regno) || (regno >= or32_num_regs);
|
|
|
} /* or32_cannot_fetch_register () */
|
} /* or32_cannot_fetch_register () */
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
/*!Predicate to indicate if a register can be written.
|
/*!Predicate to indicate if a register can be written.
|
|
|
For now, we believe all OR32 registers are writable.
|
We mark r0 and the SR as not writeable.
|
|
|
@param[in] regno Register to write.
|
@param[in] regno Register to write.
|
|
|
@return Non-zero (TRUE) if the register can be written, zero (FALSE)
|
@return Non-zero (TRUE) if the register can be written, zero (FALSE)
|
otherwise. */
|
otherwise. */
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
static int
|
static int
|
or32_cannot_store_register (int regno)
|
or32_cannot_store_register (int regno)
|
{
|
{
|
return (regno >= or32_num_regs);
|
return (GDB_REGNUM_R0 == regno) || (GDB_REGNUM_SR == regno) ||
|
|
(regno >= or32_num_regs);
|
|
|
} /* or32_cannot_store_register () */
|
} /* or32_cannot_store_register () */
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|