diff --git a/libphobos/libdruntime/config/aarch64/switchcontext.S b/libphobos/libdruntime/config/aarch64/switchcontext.S
index 5cfa2f698e867a6be399f8c0acc0d25c9b574b56..d3bd646bc568e9d1949ac5275bafa227e72b95af 100644
--- a/libphobos/libdruntime/config/aarch64/switchcontext.S
+++ b/libphobos/libdruntime/config/aarch64/switchcontext.S
@@ -44,7 +44,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  */
     .text
     .global CSYM(fiber_switchContext)
+#ifndef __APPLE__
     .type CSYM(fiber_switchContext), %function
+#endif
     .align 4
 CSYM(fiber_switchContext):
     .cfi_startproc
@@ -77,8 +79,9 @@ CSYM(fiber_switchContext):
     ldp     d15, d14, [sp], #20*8
     ret
     .cfi_endproc
+#ifndef __APPLE__
     .size CSYM(fiber_switchContext),.-CSYM(fiber_switchContext)
-
+#endif
 /**
  * When generating any kind of backtrace (gdb, exception handling) for
  * a function called in a Fiber, we need to tell the unwinder to stop
@@ -93,11 +96,15 @@ CSYM(fiber_switchContext):
     .text
     .global CSYM(fiber_trampoline)
     .p2align  2
+#ifndef __APPLE__
     .type CSYM(fiber_trampoline), %function
+#endif
 CSYM(fiber_trampoline):
     .cfi_startproc
     .cfi_undefined x30
     // fiber_entryPoint never returns
     bl CSYM(fiber_entryPoint)
     .cfi_endproc
+#ifndef __APPLE__
     .size CSYM(fiber_trampoline),.-CSYM(fiber_trampoline)
+#endif
diff --git a/libphobos/libdruntime/config/arm/switchcontext.S b/libphobos/libdruntime/config/arm/switchcontext.S
index 3f9b35e7334d3c6fb7395abc1d8d10b8358f49e9..f1f2060fd979e912f38c9fdbdf7dec5e5b193fdd 100644
--- a/libphobos/libdruntime/config/arm/switchcontext.S
+++ b/libphobos/libdruntime/config/arm/switchcontext.S
@@ -60,11 +60,15 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  */
 
     .text
+#ifndef __APPLE__
 #if defined(__ARM_PCS_VFP) || (defined(__ARM_PCS) && !defined(__SOFTFP__))
     .fpu vfp
 #endif
     .global CSYM(fiber_switchContext)
     .type CSYM(fiber_switchContext), %function
+#else
+    .global CSYM(fiber_switchContext)
+#endif
     .align 4
 CSYM(fiber_switchContext):
     .cfi_sections .debug_frame
@@ -111,8 +115,12 @@ CSYM(fiber_switchContext):
     mov lr, #0
     // return by writing lr into pc
     mov pc, r1
+#ifndef __APPLE__
     .fnend
     .cfi_endproc
     .size CSYM(fiber_switchContext),.-CSYM(fiber_switchContext)
+#else
+    .cfi_endproc
+#endif
 
 #endif
diff --git a/libphobos/libdruntime/core/thread/fiber.d b/libphobos/libdruntime/core/thread/fiber.d
index 4590ff1c0525811c2b52ec4406217dca6510629f..66fb9dad89d924b1866f90321934aadb313de29b 100644
--- a/libphobos/libdruntime/core/thread/fiber.d
+++ b/libphobos/libdruntime/core/thread/fiber.d
@@ -1785,6 +1785,7 @@ version (OSX)
 {
     version (X86)    version = UnsafeFiberMigration;
     version (X86_64) version = UnsafeFiberMigration;
+    version (AArch64) version = UnsafeFiberMigration;
 }
 
 version (UnsafeFiberMigration)