X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farm926ejs.c;h=f05087e471db5a33942a6e7e9204bcfe0f9c4be9;hb=57bc9f37c9029f1b481cd50e15676a0f74aa9e92;hp=a6ef5e10cce1758b7a74cd7ab9b4aea6646089e7;hpb=1de959ca1c9e67ef57f77ec2d7a1132b73153abb;p=openocd.git diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c index a6ef5e10cc..f05087e471 100644 --- a/src/target/arm926ejs.c +++ b/src/target/arm926ejs.c @@ -96,6 +96,10 @@ target_type_t arm926ejs_target = int arm926ejs_catch_broken_irscan(u8 *captured, void *priv, scan_field_t *field) { + /* FIX!!!! this code should be reenabled. For now it does not check + * the queue...*/ + return 0; +#if 0 /* The ARM926EJ-S' instruction register is 4 bits wide */ u8 t = *captured & 0xf; u8 t2 = *field->in_check_value & 0xf; @@ -109,6 +113,7 @@ int arm926ejs_catch_broken_irscan(u8 *captured, void *priv, scan_field_t *field) return ERROR_OK; } return ERROR_JTAG_QUEUE_FAILED;; +#endif } #define ARM926EJS_CP15_ADDR(opcode_1, opcode_2, CRn, CRm) ((opcode_1 << 11) | (opcode_2 << 8) | (CRn << 4) | (CRm << 0)) @@ -137,47 +142,30 @@ int arm926ejs_cp15_read(target_t *target, u32 op1, u32 op2, u32 CRn, u32 CRm, u3 fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - fields[0].out_mask = NULL; - fields[0].in_value = NULL; - fields[0].in_check_value = NULL; - fields[0].in_check_mask = NULL; - fields[0].in_handler = NULL; - fields[0].in_handler_priv = NULL; + u8 tmp[4]; + fields[0].in_value = tmp; + fields[1].tap = jtag_info->tap; fields[1].num_bits = 1; fields[1].out_value = &access; - fields[1].out_mask = NULL; fields[1].in_value = &access; - fields[1].in_check_value = NULL; - fields[1].in_check_mask = NULL; - fields[1].in_handler = NULL; - fields[1].in_handler_priv = NULL; + fields[2].tap = jtag_info->tap; fields[2].num_bits = 14; fields[2].out_value = address_buf; - fields[2].out_mask = NULL; fields[2].in_value = NULL; - fields[2].in_check_value = NULL; - fields[2].in_check_mask = NULL; - fields[2].in_handler = NULL; - fields[2].in_handler_priv = NULL; + + fields[3].tap = jtag_info->tap; fields[3].num_bits = 1; fields[3].out_value = &nr_w_buf; - fields[3].out_mask = NULL; fields[3].in_value = NULL; - fields[3].in_check_value = NULL; - fields[3].in_check_mask = NULL; - fields[3].in_handler = NULL; - fields[3].in_handler_priv = NULL; - jtag_add_dr_scan(4, fields, TAP_INVALID); - fields[0].in_handler_priv = value; - fields[0].in_handler = arm_jtag_buf_to_u32; + jtag_add_dr_scan(4, fields, TAP_INVALID); /*TODO: add timeout*/ do @@ -185,7 +173,10 @@ int arm926ejs_cp15_read(target_t *target, u32 op1, u32 op2, u32 CRn, u32 CRm, u3 /* rescan with NOP, to wait for the access to complete */ access = 0; nr_w_buf = 0; - jtag_add_dr_scan(4, fields, TAP_INVALID); + jtag_add_dr_scan_now(4, fields, TAP_INVALID); + + *value=le_to_h_u32(tmp); + if((retval = jtag_execute_queue()) != ERROR_OK) { return retval; @@ -227,42 +218,42 @@ int arm926ejs_cp15_write(target_t *target, u32 op1, u32 op2, u32 CRn, u32 CRm, u fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = value_buf; - fields[0].out_mask = NULL; + fields[0].in_value = NULL; - fields[0].in_check_value = NULL; - fields[0].in_check_mask = NULL; - fields[0].in_handler = NULL; - fields[0].in_handler_priv = NULL; + + + + fields[1].tap = jtag_info->tap; fields[1].num_bits = 1; fields[1].out_value = &access; - fields[1].out_mask = NULL; + fields[1].in_value = &access; - fields[1].in_check_value = NULL; - fields[1].in_check_mask = NULL; - fields[1].in_handler = NULL; - fields[1].in_handler_priv = NULL; + + + + fields[2].tap = jtag_info->tap; fields[2].num_bits = 14; fields[2].out_value = address_buf; - fields[2].out_mask = NULL; + fields[2].in_value = NULL; - fields[2].in_check_value = NULL; - fields[2].in_check_mask = NULL; - fields[2].in_handler = NULL; - fields[2].in_handler_priv = NULL; + + + + fields[3].tap = jtag_info->tap; fields[3].num_bits = 1; fields[3].out_value = &nr_w_buf; - fields[3].out_mask = NULL; + fields[3].in_value = NULL; - fields[3].in_check_value = NULL; - fields[3].in_check_mask = NULL; - fields[3].in_handler = NULL; - fields[3].in_handler_priv = NULL; + + + + jtag_add_dr_scan(4, fields, TAP_INVALID); /*TODO: add timeout*/