diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 4a6bc035daae01d72bed1609e989da8b86f60119..23748e7c654c502190cffa246349a7979ccdff7c 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1366,7 +1366,8 @@ int gdb_step_continue_packet(connection_t *connection, target_t *target, char *p
 	else if (packet[0] == 's')
 	{
 		LOG_DEBUG("step");
-		retval=target->type->step(target, current, address, 0); /* step at current or address, don't handle breakpoints */
+		/* step at current or address, don't handle breakpoints */
+		retval = target_step(target, current, address, 0);
 	}
 	return retval;
 }
diff --git a/src/target/target.c b/src/target/target.c
index 7a4548cccf48fcf4f6c306a39596346f27bae61f..993b8c61353c542b050ee89ac701cf2ea814f6b8 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -548,6 +548,12 @@ int target_get_gdb_reg_list(struct target_s *target,
 {
 	return target->type->get_gdb_reg_list(target, reg_list, reg_list_size);
 }
+int target_step(struct target_s *target,
+		int current, u32 address, int handle_breakpoints)
+{
+	return target->type->step(target, current, address, handle_breakpoints);
+}
+
 
 int target_run_algorithm(struct target_s *target,
 		int num_mem_params, mem_param_t *mem_params,
diff --git a/src/target/target.h b/src/target/target.h
index 1b28893889eaafeb8dccc71bc9a501739d5602f1..3d9d8e9f90c348afcd0efde88b4788026be0c0b3 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -410,6 +410,13 @@ extern void target_reset_examined(struct target_s *target);
 extern int target_get_gdb_reg_list(struct target_s *target,
 		struct reg_s **reg_list[], int *reg_list_size);
 
+/**
+ * Step the target.
+ *
+ * This routine is a wrapper for target->type->step.
+ */
+int target_step(struct target_s *target,
+		int current, u32 address, int handle_breakpoints);
 /**
  * Run an algorithm on the @a target given.
  *