diff --git a/lib/card10/card10.c b/lib/card10/card10.c
index 09cc44ff293b8001d7121be3b22b8939bc9fd0e8..43361ef06fbf76323516b68e5fdead7f7b9febd9 100644
--- a/lib/card10/card10.c
+++ b/lib/card10/card10.c
@@ -224,7 +224,7 @@ void card10_poll(void)
 	portexpander_poll();
 }
 
-void card10_reset(void)
+void __attribute__((noreturn)) card10_reset(void)
 {
 	printf("Resetting ...\n");
 	/*
@@ -235,6 +235,9 @@ void card10_reset(void)
 		__asm volatile("nop");
 	}
 	MXC_GCR->rstr0 = MXC_F_GCR_RSTR0_SYSTEM;
+
+	while (1)
+		__WFI();
 }
 
 void GPIO0_IRQHandler(void)
diff --git a/lib/card10/card10.h b/lib/card10/card10.h
index fc90fe67f47527cbdbcf2a0b30a9c9d53d70d3df..192058f02a76361323e10c50d2e20f6a5a26f427 100644
--- a/lib/card10/card10.h
+++ b/lib/card10/card10.h
@@ -15,5 +15,5 @@ void core1_start(void *isr);
 void core1_stop(void);
 
 void card10_poll(void);
-void card10_reset(void);
+void card10_reset(void) __attribute__((noreturn));
 #endif