diff --git a/src/shared/drivers/interrupt/external_interrupts.cpp b/src/shared/drivers/interrupt/external_interrupts.cpp index 985a7b00668bbd0da8aaaebd7011eaa5d34cba9e..350ea9a85f4b62a83ef35b62a26bf4c14a15daf9 100644 --- a/src/shared/drivers/interrupt/external_interrupts.cpp +++ b/src/shared/drivers/interrupt/external_interrupts.cpp @@ -159,11 +159,14 @@ void __attribute__((weak)) EXTI15_IRQHandlerImpl() * Implementation of the IRQHandler that is triggered when * external interrupt 0 is raised. */ +void __attribute__((used)) EXTI0_IRQHandlerImplBase(){ + EXTI->PR = EXTI_PR_PR0; + EXTI0_IRQHandlerImpl(); +} void __attribute__((naked)) EXTI0_IRQHandler() { saveContext(); - EXTI->PR = EXTI_PR_PR0; - asm volatile("bl _Z20EXTI0_IRQHandlerImplv"); + asm volatile("bl _Z24EXTI0_IRQHandlerImplBasev"); restoreContext(); } @@ -171,11 +174,14 @@ void __attribute__((naked)) EXTI0_IRQHandler() * Implementation of the IRQHandler that is triggered when * external interrupt 1 is raised. */ +void __attribute__((used)) EXTI1_IRQHandlerImplBase(){ + EXTI->PR = EXTI_PR_PR1; + EXTI1_IRQHandlerImpl(); +} void __attribute__((naked)) EXTI1_IRQHandler() { saveContext(); - EXTI->PR = EXTI_PR_PR1; - asm volatile("bl _Z20EXTI1_IRQHandlerImplv"); + asm volatile("bl _Z24EXTI1_IRQHandlerImplBasev"); restoreContext(); } @@ -183,11 +189,14 @@ void __attribute__((naked)) EXTI1_IRQHandler() * Implementation of the IRQHandler that is triggered when * external interrupt 2 is raised. */ +void __attribute__((used)) EXTI2_IRQHandlerImplBase(){ + EXTI->PR = EXTI_PR_PR2; + EXTI2_IRQHandlerImpl(); +} void __attribute__((naked)) EXTI2_IRQHandler() { saveContext(); - EXTI->PR = EXTI_PR_PR2; - asm volatile("bl _Z20EXTI2_IRQHandlerImplv"); + asm volatile("bl _Z24EXTI2_IRQHandlerImplBasev"); restoreContext(); } @@ -195,11 +204,14 @@ void __attribute__((naked)) EXTI2_IRQHandler() * Implementation of the IRQHandler that is triggered when * external interrupt 3 is raised. */ +void __attribute__((used)) EXTI3_IRQHandlerImplBase(){ + EXTI->PR = EXTI_PR_PR3; + EXTI3_IRQHandlerImpl(); +} void __attribute__((naked)) EXTI3_IRQHandler() { saveContext(); - EXTI->PR = EXTI_PR_PR3; - asm volatile("bl _Z20EXTI3_IRQHandlerImplv"); + asm volatile("bl _Z24EXTI3_IRQHandlerImplBasev"); restoreContext(); } @@ -207,11 +219,14 @@ void __attribute__((naked)) EXTI3_IRQHandler() * Implementation of the IRQHandler that is triggered when * external interrupt 4 is raised. */ +void __attribute__((used)) EXTI4_IRQHandlerImplBase(){ + EXTI->PR = EXTI_PR_PR4; + EXTI4_IRQHandlerImpl(); +} void __attribute__((naked)) EXTI4_IRQHandler() { saveContext(); - EXTI->PR = EXTI_PR_PR4; - asm volatile("bl _Z20EXTI4_IRQHandlerImplv"); + asm volatile("bl _Z24EXTI4_IRQHandlerImplBasev"); restoreContext(); }