diff --git a/src/pld/virtex2.c b/src/pld/virtex2.c
index 8f4fee29756b165b83941171455089d6294fb47f..51991c3bb6aa95197b651690ad7e7f9b26fbc2c2 100644
--- a/src/pld/virtex2.c
+++ b/src/pld/virtex2.c
@@ -85,7 +85,7 @@ int virtex2_send_32(struct pld_device_s *pld_device, int num_words, u32 *words)
 
 	virtex2_set_instr(virtex2_info->tap, 0x5); /* CFG_IN */
 
-	jtag_add_dr_scan(1, &scan_field, TAP_DRPAUSE);
+	jtag_add_dr_scan(1, &scan_field, jtag_add_end_state(TAP_DRPAUSE));
 
 	free(values);
 
@@ -113,7 +113,7 @@ int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *word
 	{
 		scan_field.in_value = (u8 *)words;
 		
-		jtag_add_dr_scan(1, &scan_field, TAP_DRPAUSE);
+		jtag_add_dr_scan(1, &scan_field, jtag_add_end_state(TAP_DRPAUSE));
 
 		jtag_add_callback(virtexflip32, (u8 *)words);
 
@@ -179,7 +179,7 @@ int virtex2_load(struct pld_device_s *pld_device, char *filename)
 	field.num_bits = bit_file.length * 8;
 	field.out_value = bit_file.data;
 
-	jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+	jtag_add_dr_scan(1, &field, jtag_add_end_state(TAP_DRPAUSE));
 	jtag_execute_queue();
 
 	jtag_add_tlr();
diff --git a/src/target/arm11_dbgtap.c b/src/target/arm11_dbgtap.c
index 025c69e8ad4228263d7f8531e8379c595c7d1376..06b002dea902f6c1fdef7ef6b6a9509d66a40f8d 100644
--- a/src/target/arm11_dbgtap.c
+++ b/src/target/arm11_dbgtap.c
@@ -526,7 +526,7 @@ int arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, u32 opcode, u32 *
 
 		if (count)
 		{
-			jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
+			jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, jtag_add_end_state(TAP_DRPAUSE));
 			jtag_add_pathmove(asizeof(arm11_MOVE_DRPAUSE_IDLE_DRPAUSE_with_delay),
 				arm11_MOVE_DRPAUSE_IDLE_DRPAUSE_with_delay);
 		}
diff --git a/src/target/arm7tdmi.c b/src/target/arm7tdmi.c
index 1c672cc3c4d739fc1e21a7cb199034e29c7fc8b8..e3185bec866fa85c15222e8fc2d2ffb586d617d2 100644
--- a/src/target/arm7tdmi.c
+++ b/src/target/arm7tdmi.c
@@ -116,7 +116,7 @@ int arm7tdmi_examine_debug_reason(target_t *target)
 		}
 		arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL);
 
-		jtag_add_dr_scan(2, fields, TAP_DRPAUSE);
+		jtag_add_dr_scan(2, fields, jtag_add_end_state(TAP_DRPAUSE));
 		if((retval = jtag_execute_queue()) != ERROR_OK)
 		{
 			return retval;
@@ -127,7 +127,7 @@ int arm7tdmi_examine_debug_reason(target_t *target)
 		fields[1].in_value = NULL;
 		fields[1].out_value = databus;
 
-		jtag_add_dr_scan(2, fields, TAP_DRPAUSE);
+		jtag_add_dr_scan(2, fields, jtag_add_end_state(TAP_DRPAUSE));
 
 		if (breakpoint & 1)
 			target->debug_reason = DBG_REASON_WATCHPOINT;
diff --git a/src/target/arm9tdmi.c b/src/target/arm9tdmi.c
index dba679aa7dc06652a5b8cb86035aa2f41fb6466a..c4f7e08fd0a92de99e6e339e646a33e3f9ab3d5f 100644
--- a/src/target/arm9tdmi.c
+++ b/src/target/arm9tdmi.c
@@ -134,7 +134,7 @@ int arm9tdmi_examine_debug_reason(target_t *target)
 		}
 		arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL);
 
-		jtag_add_dr_scan(3, fields, TAP_DRPAUSE);
+		jtag_add_dr_scan(3, fields, jtag_add_end_state(TAP_DRPAUSE));
 		if ((retval = jtag_execute_queue()) != ERROR_OK)
 		{
 			return retval;
@@ -147,7 +147,7 @@ int arm9tdmi_examine_debug_reason(target_t *target)
 		fields[2].in_value = NULL;
 		fields[2].out_value = instructionbus;
 
-		jtag_add_dr_scan(3, fields, TAP_DRPAUSE);
+		jtag_add_dr_scan(3, fields, jtag_add_end_state(TAP_DRPAUSE));
 
 		if (debug_reason & 0x4)
 			if (debug_reason & 0x2)
diff --git a/src/xsvf/xsvf.c b/src/xsvf/xsvf.c
index 0ec9f4dca23a37a1498094f09da8abbc70e29a22..7aaab3ad5e7e84fc1ac9996605c69fe174f12b6c 100644
--- a/src/xsvf/xsvf.c
+++ b/src/xsvf/xsvf.c
@@ -405,9 +405,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
 					field.in_value = calloc(CEIL(field.num_bits, 8), 1);
 
 					if (tap == NULL)
-						jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
+						jtag_add_plain_dr_scan(1, &field, jtag_add_end_state(TAP_DRPAUSE));
 					else
-						jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+						jtag_add_dr_scan(1, &field, jtag_add_end_state(TAP_DRPAUSE));
 
 					jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);
 
@@ -853,9 +853,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
 						LOG_USER("LSDR retry %d", attempt);
 
 					if (tap == NULL)
-						jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
+						jtag_add_plain_dr_scan(1, &field, jtag_add_end_state(TAP_DRPAUSE));
 					else
-						jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+						jtag_add_dr_scan(1, &field, jtag_add_end_state(TAP_DRPAUSE));
 
 					jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);