diff --git a/redox-rt/src/arch/x86_64.rs b/redox-rt/src/arch/x86_64.rs
index cc1fa646556bdcfca589ea53cb2921276b12fb48..cade85a186f1ca0ae78ccd08e1ce0a59779a1afa 100644
--- a/redox-rt/src/arch/x86_64.rs
+++ b/redox-rt/src/arch/x86_64.rs
@@ -3,6 +3,7 @@ use core::sync::atomic::AtomicU8;
 
 use syscall::data::Sigcontrol;
 use syscall::error::*;
+use syscall::flag::*;
 
 use crate::proc::{fork_inner, FdGuard};
 use crate::signal::{inner_c, RtSigarea};
@@ -136,6 +137,7 @@ asmfunction!(__relibc_internal_sigentry: ["
     mov rcx, rdx
     shr rcx, 32
     and edx, ecx
+    and edx, {SIGW0_PENDING_MASK}
     bsf edx, edx
     jnz 2f
 
@@ -144,6 +146,7 @@ asmfunction!(__relibc_internal_sigentry: ["
     mov rcx, rdx
     shr rcx, 32
     and edx, ecx
+    and edx, {SIGW1_PENDING_MASK}
     bsf edx, edx
     jnz 4f
     add edx, 32
@@ -265,6 +268,10 @@ asmfunction!(__relibc_internal_sigentry: ["
     tcb_sa_off = const offset_of!(crate::Tcb, os_specific) + offset_of!(RtSigarea, arch),
     tcb_sc_off = const offset_of!(crate::Tcb, os_specific) + offset_of!(RtSigarea, control),
     supports_xsave = sym SUPPORTS_XSAVE,
+    SIGW0_PENDING_MASK = const !(
+        SIGW0_TSTP_IS_STOP_BIT | SIGW0_TTIN_IS_STOP_BIT | SIGW0_TTOU_IS_STOP_BIT | SIGW0_NOCLDSTOP_BIT | SIGW0_UNUSED1 | SIGW0_UNUSED2
+    ),
+    SIGW1_PENDING_MASK = const !0,
 ]);
 
 static SUPPORTS_XSAVE: AtomicU8 = AtomicU8::new(0); // FIXME