diff --git a/src/unix/linux_like/linux/musl/b64/aarch64/align.rs b/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
index 8e949963a637fb4b171c1a3649cf6c2ef8d30a1d..e114eaecd54730ddaf1949954448faa3cbd6b128 100644
--- a/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
+++ b/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
@@ -5,3 +5,21 @@ s_no_extra_traits! {
         priv_: [f32; 8]
     }
 }
+
+s!{
+    pub struct ucontext_t {
+        pub uc_flags: ::c_ulong,
+        pub uc_link: *mut ucontext_t,
+        pub uc_stack: ::stack_t,
+        pub uc_sigmask: ::sigset_t,
+        pub uc_mcontext: mcontext_t,
+    }
+
+    #[repr(align(16))]
+    pub struct mcontext_t {
+        // What we want here is a single [u64; 36 + 512], but splitting things
+        // up allows Debug to be auto-derived.
+        __regs1: [[u64; 18]; 2], // 36
+        __regs2: [[u64; 32]; 16], // 512
+    }
+}