From 7d7616214b90a26207e79a2e2fa3305e8a483db7 Mon Sep 17 00:00:00 2001 From: Wilfried Chauveau Date: Wed, 24 Apr 2024 15:57:51 +0000 Subject: [PATCH] arch: arm: cortex_m: restore comment lost in translation The comment about ISB in swap.S was lost when translation to C. Signed-off-by: Wilfried Chauveau --- arch/arm/core/cortex_m/swap.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arch/arm/core/cortex_m/swap.c b/arch/arm/core/cortex_m/swap.c index b60f6acd675..027fb47a01f 100644 --- a/arch/arm/core/cortex_m/swap.c +++ b/arch/arm/core/cortex_m/swap.c @@ -96,11 +96,15 @@ uintptr_t z_arm_pendsv_c(uintptr_t exc_ret) /* restore mode */ IF_ENABLED(CONFIG_USERSPACE, ({ - CONTROL_Type ctrl = {.w = __get_CONTROL()}; - /* exit privileged state when returing to thread mode. */ - ctrl.b.nPRIV = 0; - __set_CONTROL(ctrl.w | current->arch.mode); - })); + CONTROL_Type ctrl = {.w = __get_CONTROL()}; + /* exit privileged state when returning to thread mode. */ + ctrl.b.nPRIV = 0; + /* __set_CONTROL inserts an ISB which is may not be necessary here + * (stack pointer may not be touched), but it's recommended to avoid + * executing pre-fetched instructions with the previous privilege. + */ + __set_CONTROL(ctrl.w | current->arch.mode); + })); return exc_ret; }