Cleanup and improve handle_halt_command:
[fw/openocd] / src / target / mips_ejtag.c
index f9a6862e8cede4ce7e53636c78e52442c4cab01b..4c8010b5388e7dce7ce4eae6e515d5fbc6ac92b6 100644 (file)
@@ -60,7 +60,7 @@ int mips_ejtag_get_idcode(mips_ejtag_t *ejtag_info, u32 *idcode)
 {
        scan_field_t field;
 
-       jtag_add_end_state(TAP_IDLE);
+       jtag_set_end_state(TAP_IDLE);
 
        mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IDCODE, NULL);
 
@@ -87,7 +87,7 @@ int mips_ejtag_get_impcode(mips_ejtag_t *ejtag_info, u32 *impcode)
 {
        scan_field_t field;
 
-       jtag_add_end_state(TAP_IDLE);
+       jtag_set_end_state(TAP_IDLE);
 
        mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IMPCODE, NULL);
 
@@ -118,7 +118,7 @@ int mips_ejtag_drscan_32(mips_ejtag_t *ejtag_info, u32 *data)
        if (tap==NULL)
                return ERROR_FAIL;
        scan_field_t field;
-       u8 t[4];
+       u8 t[4], r[4];
        int retval;
 
        field.tap = tap;
@@ -126,7 +126,7 @@ int mips_ejtag_drscan_32(mips_ejtag_t *ejtag_info, u32 *data)
        field.out_value = t;
        buf_set_u32(field.out_value, 0, field.num_bits, *data);
 
-       field.in_value = (u8*)data;
+       field.in_value = r;
        
        
        
@@ -139,6 +139,8 @@ int mips_ejtag_drscan_32(mips_ejtag_t *ejtag_info, u32 *data)
                return retval;
        }
 
+       *data = buf_get_u32(field.in_value, 0, 32);
+
        keep_alive();
 
        return ERROR_OK;
@@ -199,7 +201,7 @@ int mips_ejtag_config_step(mips_ejtag_t *ejtag_info, int enable_step)
 int mips_ejtag_enter_debug(mips_ejtag_t *ejtag_info)
 {
        u32 ejtag_ctrl;
-       jtag_add_end_state(TAP_IDLE);
+       jtag_set_end_state(TAP_IDLE);
        mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL);
 
        /* set debug break bit */