diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index d3ddb30c06179fa137370668bf882e5661c66542..acc4d318a584ef47e936e82783df926c24b7bcd0 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -152,3 +152,8 @@ proc script {filename} {
 add_help_text script "<filename> - filename of OpenOCD script (tcl) to run"
 
 
+
+# Handle GDB 'R' packet. Can be overriden by configuration script
+proc gdb_restart {} {
+	reset halt
+}
\ No newline at end of file
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 665e3507af179a0d832504aaf71cd7516d5a8156..e964a1d5186de65268e95632f3618283026e9c5d 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1950,8 +1950,7 @@ int gdb_input_inner(connection_t *connection)
 					break;
 				case 'R':
 					/* handle extended restart packet */
-					/* fix?? make this configurable? */
-					target_process_reset(connection->cmd_ctx, RESET_HALT);
+					command_run_linef(connection->cmd_ctx, "gdb_restart");
 					break;
 				default:
 					/* ignore unkown packets */