From 8ac932441c616be3aa5352d1a62eecbf230bbae3 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Fri, 4 Oct 2019 09:50:14 +0200 Subject: [PATCH] fix(libcard10): Mark card10_reset() as noreturn card10_reset() won't ever return to where it was called from. Telling the compiler this can help with program-flow analysis. Signed-off-by: Rahix <rahix@rahix.de> --- lib/card10/card10.c | 5 ++++- lib/card10/card10.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/card10/card10.c b/lib/card10/card10.c index 09cc44ff..43361ef0 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 fc90fe67..192058f0 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 -- GitLab