diff --git a/src/jtag/core.c b/src/jtag/core.c
index 54ee757ce1d487f655e0db0398e6b200a2102ff3..4d4d278347ffc0963b40633d362545f3d3ad9176 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -87,6 +87,13 @@ static int jtag_verify = 1;
 static int jtag_nsrst_delay = 0; /* default to no nSRST delay */
 static int jtag_ntrst_delay = 0; /* default to no nTRST delay */
 
+typedef struct jtag_event_callback_s
+{
+	jtag_event_handler_t          callback;
+	void*                         priv;
+	struct jtag_event_callback_s* next;
+} jtag_event_callback_t;
+
 /* callbacks to inform high-level handlers about JTAG state changes */
 static jtag_event_callback_t *jtag_event_callbacks;
 
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index f7b215b321c1ccd4523d233bf5ac78e58541a7ca..ce8daccc926cd63ae4bdfcc9c4d2b9a4d212f642 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -261,12 +261,11 @@ int jtag_get_srst(void);
  */
 typedef int (*jtag_event_handler_t)(enum jtag_event event, void* priv);
 
-typedef struct jtag_event_callback_s
-{
-	jtag_event_handler_t          callback;
-	void*                         priv;
-	struct jtag_event_callback_s* next;
-} jtag_event_callback_t;
+extern int jtag_register_event_callback(jtag_event_handler_t f, void *x);
+extern int jtag_unregister_event_callback(jtag_event_handler_t f);
+
+extern int jtag_call_event_callbacks(enum jtag_event event);
+
 
 /// @returns The current JTAG speed setting.
 int jtag_get_speed(void);
@@ -621,9 +620,6 @@ extern int jtag_srst_asserted(int* srst_asserted);
 extern void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask);
 
 extern void jtag_sleep(u32 us);
-extern int jtag_call_event_callbacks(enum jtag_event event);
-extern int jtag_register_event_callback(jtag_event_handler_t f, void *x);
-extern int jtag_unregister_event_callback(jtag_event_handler_t f);
 
 /*
  * The JTAG subsystem defines a number of error codes,