diff --git a/include/libopencm3/cm3/scb.h b/include/libopencm3/cm3/scb.h index a440cb13..febb863c 100644 --- a/include/libopencm3/cm3/scb.h +++ b/include/libopencm3/cm3/scb.h @@ -382,8 +382,8 @@ struct scb_exception_stack_frame { : [frameptr]"=r" (f)); \ } while (0) -void scb_reset_core(void); -void scb_reset_system(void); +void scb_reset_core(void) __attribute__((noreturn, naked)); +void scb_reset_system(void) __attribute__((noreturn, naked)); void scb_set_priority_grouping(u32 prigroup); /* TODO: */ diff --git a/lib/cm3/scb.c b/lib/cm3/scb.c index 904bd7c1..098c00a4 100644 --- a/lib/cm3/scb.c +++ b/lib/cm3/scb.c @@ -17,16 +17,22 @@ * along with this library. If not, see . */ +#include + #include void scb_reset_core(void) { SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_VECTRESET; + + exit(1); } void scb_reset_system(void) { SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ; + + exit(1); } void scb_set_priority_grouping(u32 prigroup)