diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c
index efead81b8329b38aa6f6f046fc84fe72b27c7539..8a609b0762504e4711fa190d95a186b966ac25ed 100644
--- a/src/target/arm926ejs.c
+++ b/src/target/arm926ejs.c
@@ -97,19 +97,19 @@ target_type_t arm926ejs_target =
 
 int arm926ejs_catch_broken_irscan(u8 *captured, void *priv, scan_field_t *field)
 {
-	u8 *in_value=field->in_check_value;
-	
 	/* The ARM926EJ-S' instruction register is 4 bits wide */
-	u8 t=*in_value & 0xf;
-	if ((t == 0x0f) || (t == 0x00))
+	u8 t = *captured & 0xf;
+	u8 t2 = *field->in_check_value & 0xf;
+	if (t == t2)
 	{
-		DEBUG("caught ARM926EJ-S invalid Capture-IR result after CP15 access");
 		return ERROR_OK;
 	}
-	else
+	else if ((t == 0x0f) || (t == 0x00))
 	{
-		return ERROR_JTAG_QUEUE_FAILED;
+		DEBUG("caught ARM926EJ-S invalid Capture-IR result after CP15 access");
+		return ERROR_OK;
 	}
+	return ERROR_JTAG_QUEUE_FAILED;;
 }
 
 int arm926ejs_read_cp15(target_t *target, u32 address, u32 *value)