diff --git a/src/fiber/context/aarch64-generic.cr b/src/fiber/context/aarch64-generic.cr index 2839ee030ef5..110a8b77aa88 100644 --- a/src/fiber/context/aarch64-generic.cr +++ b/src/fiber/context/aarch64-generic.cr @@ -54,6 +54,9 @@ class Fiber mov x19, sp // current_context.stack_top = sp str x19, [x0, #0] + {% if flag?(:execution_context) %} + dmb ish // barrier: ensure registers are stored + {% end %} mov x19, #1 // current_context.resumable = 1 str x19, [x0, #8] @@ -97,6 +100,9 @@ class Fiber mov x19, sp // current_context.stack_top = sp str x19, [$0, #0] + {% if flag?(:execution_context) %} + dmb ish // barrier: ensure registers are stored + {% end %} mov x19, #1 // current_context.resumable = 1 str x19, [$0, #8] diff --git a/src/fiber/context/aarch64-microsoft.cr b/src/fiber/context/aarch64-microsoft.cr index b9e86dfbc6cf..2d94a64dd36c 100644 --- a/src/fiber/context/aarch64-microsoft.cr +++ b/src/fiber/context/aarch64-microsoft.cr @@ -55,6 +55,9 @@ class Fiber mov x19, sp // current_context.stack_top = sp str x19, [x0, #0] + {% if flag?(:execution_context) %} + dmb ish // barrier: ensure registers are stored + {% end %} mov x19, #1 // current_context.resumable = 1 str x19, [x0, #8] @@ -112,6 +115,9 @@ class Fiber mov x19, sp // current_context.stack_top = sp str x19, [$0, #0] + {% if flag?(:execution_context) %} + dmb ish // barrier: ensure registers are stored + {% end %} mov x19, #1 // current_context.resumable = 1 str x19, [$0, #8]