void
supply_regblock (struct regcache *regcache, const void *buf)
{
- if (buf)
- {
- const struct target_desc *tdesc = regcache->tdesc;
+ gdb_assert (buf != nullptr);
+ const struct target_desc *tdesc = regcache->tdesc;
- memcpy (regcache->registers, buf, tdesc->registers_size);
+ memcpy (regcache->registers, buf, tdesc->registers_size);
#ifndef IN_PROCESS_AGENT
- for (int i = 0; i < tdesc->reg_defs.size (); i++)
- regcache->set_register_status (i, REG_VALID);
+ for (int i = 0; i < tdesc->reg_defs.size (); i++)
+ regcache->set_register_status (i, REG_VALID);
#endif
- }
- else
- regcache->reset (REG_UNAVAILABLE);
}
#ifndef IN_PROCESS_AGENT
if (!this->m_regcache.has_value ())
{
this->m_regcache.emplace (ipa_tdesc, this->regspace);
- supply_regblock (&this->m_regcache.value (), nullptr);
supply_fast_tracepoint_registers (&this->m_regcache.value (),
this->regs);
}
if (dataptr == NULL)
{
/* Mark registers unavailable. */
- supply_regblock (regcache, NULL);
+ regcache->reset (REG_UNAVAILABLE);
/* We can generally guess at a PC, although this will be
misleading for while-stepping frames and multi-location
return;
}
+ memset (ctx.regspace, 0, ipa_tdesc->registers_size);
+
for (ctx.tpoint = tpoint;
ctx.tpoint != NULL && ctx.tpoint->address == tpoint->address;
ctx.tpoint = ctx.tpoint->next)