return mips32_pracc_exec(ejtag_info, 1, &inst, 0, NULL, 0, NULL, 0);
}
-int mips_ejtag_read_debug(struct mips_ejtag *ejtag_info, uint32_t* debug_reg)
-{
- /* read ejtag ECR */
- static const uint32_t code[] = {
- MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */
- MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */
- MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)),
- MIPS32_SW(1, 0, 15), /* sw $1,($15) */
- MIPS32_SW(2, 0, 15), /* sw $2,($15) */
- MIPS32_LUI(1, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $1 = MIPS32_PRACC_PARAM_OUT */
- MIPS32_ORI(1, 1, LOWER16(MIPS32_PRACC_PARAM_OUT)),
- MIPS32_MFC0(2, 23, 0), /* move COP0 Debug to $2 */
- MIPS32_SW(2, 0, 1),
- MIPS32_LW(2, 0, 15),
- MIPS32_LW(1, 0, 15),
- MIPS32_B(NEG16(12)),
- MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */
- };
-
- return mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
- 0, NULL, 1, debug_reg, 1);
-}
-
int mips_ejtag_init(struct mips_ejtag *ejtag_info)
{
uint32_t ejtag_version;
{
struct mips32_common *mips32 = target_to_mips32(target);
struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
- uint32_t debug_reg;
- /* read debug register */
- mips_ejtag_read_debug(ejtag_info, &debug_reg);
+ /* make sure stepping disabled, SSt bit in CP0 debug register cleared */
+ mips_ejtag_config_step(ejtag_info, 0);
/* make sure break unit configured */
mips32_configure_break_unit(target);
/* attempt to find halt reason */
mips_m4k_examine_debug_reason(target);
- /* clear single step if active */
- if (debug_reg & EJTAG_DEBUG_DSS) {
- /* stopped due to single step - clear step bit */
- mips_ejtag_config_step(ejtag_info, 0);
- }
-
mips32_save_context(target);
/* default to mips32 isa, it will be changed below if required */