diff --git a/framework/src/fwk_thread.c b/framework/src/fwk_thread.c index d7ff129f91c94fff3cdd0a899e771fd09292e11e..9a765122a74120e5245d3b3b33aabfc907e7d13f 100644 --- a/framework/src/fwk_thread.c +++ b/framework/src/fwk_thread.c @@ -199,6 +199,9 @@ static void process_isr(void) struct fwk_event, slist_node); fwk_interrupt_global_enable(); + if (isr_event == NULL) + return; + FWK_LOG_TRACE( "[FWK] Get ISR event (%s: %s -> %s)\n", FWK_ID_STR(isr_event->id), @@ -238,14 +241,8 @@ noreturn void __fwk_thread_run(void) for (;;) { while (!fwk_list_is_empty(&ctx.event_queue)) process_next_event(); - - while (fwk_list_is_empty(&ctx.isr_event_queue)) { - fwk_log_unbuffer(); - - continue; - } - process_isr(); + fwk_log_unbuffer(); } } @@ -385,9 +382,7 @@ int fwk_thread_put_event_and_wait(struct fwk_event *event, for (;;) { if (fwk_list_is_empty(&ctx.event_queue)) { - if (!fwk_list_is_empty(&ctx.isr_event_queue)) process_isr(); - continue; } ctx.current_event = next_event = FWK_LIST_GET(fwk_list_head( @@ -399,8 +394,6 @@ int fwk_thread_put_event_and_wait(struct fwk_event *event, * we get to the event from the waiting call. */ process_next_event(); - if (!fwk_list_is_empty(&ctx.isr_event_queue)) - process_isr(); continue; } @@ -455,8 +448,7 @@ int fwk_thread_put_event_and_wait(struct fwk_event *event, * Check for any interrupt events that might have been * queued while the event was being executed. */ - while (!fwk_list_is_empty(&ctx.isr_event_queue)) - process_isr(); + process_isr(); continue; } diff --git a/product/juno/scp_ramfw/firmware.mk b/product/juno/scp_ramfw/firmware.mk index 9101d9f5294379f5f89b458aa6e7a1f91da8cb9e..82f2c597b66ade71376ceda577e18a58b57f7aad 100644 --- a/product/juno/scp_ramfw/firmware.mk +++ b/product/juno/scp_ramfw/firmware.mk @@ -9,7 +9,7 @@ # BS_FIRMWARE_CPU := cortex-m3 -BS_FIRMWARE_HAS_MULTITHREADING := yes +BS_FIRMWARE_HAS_MULTITHREADING := no BS_FIRMWARE_HAS_NOTIFICATION := yes BS_FIRMWARE_HAS_SCMI_NOTIFICATIONS := no BS_FIRMWARE_HAS_FAST_CHANNELS := no