mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 18:41:27 +00:00
* monitor.c (monitor_supply_register): Add REGCACHE parameter, use
it instead of current_regcache. (parse_register_dump): Add REGCACHE parameter, pass it to supply_register callback. (monitor_dump_reg_block): Add REGCACHE parameter, pass it to parse_register_dump. (monitor_dump_regs): Add REGCACHE parameter, pass it to parse_register_dump and dumpregs callback. (monitor_wait): Pass current_regcache to parse_register_dump and monitor_dump_regs. (monitor_fetch_register): Pass current_regcache to monitor_supply_register. (monitor_fetch_registers): Pass current_regcache to monitor_dump_regs. * monitor.h (struct monitor_ops): Add REGCACHE parameter to supply_register and dumpregs callbacks. (monitor_supply_register, monitor_dump_reg_block): Update prototypes. * dbug-rom.c (dbug_supply_register): Add REGCACHE parameter. Pass it to monitor_supply_register. * dink32-rom.c (dink32_supply_register): Likewise. * ppcbug-rom.c (ppcbug_supply_register): Likewise. * m32r-rom.c (m32r_supply_register): Likewise. Also, use REGCACHE instead of current_regcache.
This commit is contained in:
@@ -210,7 +210,8 @@ static char *m32r_regnames[] =
|
||||
};
|
||||
|
||||
static void
|
||||
m32r_supply_register (char *regname, int regnamelen, char *val, int vallen)
|
||||
m32r_supply_register (struct regcache *regcache, char *regname,
|
||||
int regnamelen, char *val, int vallen)
|
||||
{
|
||||
int regno;
|
||||
int num_regs = sizeof (m32r_regnames) / sizeof (m32r_regnames[0]);
|
||||
@@ -224,14 +225,14 @@ m32r_supply_register (char *regname, int regnamelen, char *val, int vallen)
|
||||
|
||||
if (regno == ACCL_REGNUM)
|
||||
{ /* special handling for 64-bit acc reg */
|
||||
monitor_supply_register (ACCH_REGNUM, val);
|
||||
monitor_supply_register (regcache, ACCH_REGNUM, val);
|
||||
val = strchr (val, ':'); /* skip past ':' to get 2nd word */
|
||||
if (val != NULL)
|
||||
monitor_supply_register (ACCL_REGNUM, val + 1);
|
||||
monitor_supply_register (regcache, ACCL_REGNUM, val + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
monitor_supply_register (regno, val);
|
||||
monitor_supply_register (regcache, regno, val);
|
||||
if (regno == PSW_REGNUM)
|
||||
{
|
||||
unsigned long psw = strtoul (val, NULL, 16);
|
||||
@@ -239,45 +240,45 @@ m32r_supply_register (char *regname, int regnamelen, char *val, int vallen)
|
||||
|
||||
#ifdef SM_REGNUM
|
||||
/* Stack mode bit */
|
||||
monitor_supply_register (SM_REGNUM, (psw & 0x80) ? one : zero);
|
||||
monitor_supply_register (regcache, SM_REGNUM, (psw & 0x80) ? one : zero);
|
||||
#endif
|
||||
#ifdef BSM_REGNUM
|
||||
/* Backup stack mode bit */
|
||||
monitor_supply_register (BSM_REGNUM, (psw & 0x8000) ? one : zero);
|
||||
monitor_supply_register (regcache, BSM_REGNUM, (psw & 0x8000) ? one : zero);
|
||||
#endif
|
||||
#ifdef IE_REGNUM
|
||||
/* Interrupt enable bit */
|
||||
monitor_supply_register (IE_REGNUM, (psw & 0x40) ? one : zero);
|
||||
monitor_supply_register (regcache, IE_REGNUM, (psw & 0x40) ? one : zero);
|
||||
#endif
|
||||
#ifdef BIE_REGNUM
|
||||
/* Backup interrupt enable bit */
|
||||
monitor_supply_register (BIE_REGNUM, (psw & 0x4000) ? one : zero);
|
||||
monitor_supply_register (regcache, BIE_REGNUM, (psw & 0x4000) ? one : zero);
|
||||
#endif
|
||||
#ifdef COND_REGNUM
|
||||
/* Condition bit (carry etc.) */
|
||||
monitor_supply_register (COND_REGNUM, (psw & 0x1) ? one : zero);
|
||||
monitor_supply_register (regcache, COND_REGNUM, (psw & 0x1) ? one : zero);
|
||||
#endif
|
||||
#ifdef CBR_REGNUM
|
||||
monitor_supply_register (CBR_REGNUM, (psw & 0x1) ? one : zero);
|
||||
monitor_supply_register (regcache, CBR_REGNUM, (psw & 0x1) ? one : zero);
|
||||
#endif
|
||||
#ifdef BPC_REGNUM
|
||||
monitor_supply_register (BPC_REGNUM, zero); /* KLUDGE: (???????) */
|
||||
monitor_supply_register (regcache, BPC_REGNUM, zero); /* KLUDGE: (???????) */
|
||||
#endif
|
||||
#ifdef BCARRY_REGNUM
|
||||
monitor_supply_register (BCARRY_REGNUM, zero); /* KLUDGE: (??????) */
|
||||
monitor_supply_register (regcache, BCARRY_REGNUM, zero); /* KLUDGE: (??????) */
|
||||
#endif
|
||||
}
|
||||
|
||||
if (regno == SPI_REGNUM || regno == SPU_REGNUM)
|
||||
{ /* special handling for stack pointer (spu or spi) */
|
||||
ULONGEST stackmode, psw;
|
||||
regcache_cooked_read_unsigned (current_regcache, PSW_REGNUM, &psw);
|
||||
regcache_cooked_read_unsigned (regcache, PSW_REGNUM, &psw);
|
||||
stackmode = psw & 0x80;
|
||||
|
||||
if (regno == SPI_REGNUM && !stackmode) /* SP == SPI */
|
||||
monitor_supply_register (SP_REGNUM, val);
|
||||
monitor_supply_register (regcache, SP_REGNUM, val);
|
||||
else if (regno == SPU_REGNUM && stackmode) /* SP == SPU */
|
||||
monitor_supply_register (SP_REGNUM, val);
|
||||
monitor_supply_register (regcache, SP_REGNUM, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user