diff --git a/redox-rt/src/arch/x86_64.rs b/redox-rt/src/arch/x86_64.rs
index 541fc1bf32bde3e305104a53166aa94d9611ed38..07af525409f3384b565eb5a5f5ab022afb242e08 100644
--- a/redox-rt/src/arch/x86_64.rs
+++ b/redox-rt/src/arch/x86_64.rs
@@ -428,7 +428,7 @@ pub unsafe fn arch_pre(stack: &mut SigStack, area: &mut SigArea) {
     }
 }
 
-static SUPPORTS_AVX: AtomicU8 = AtomicU8::new(1); // FIXME
+pub(crate) static SUPPORTS_AVX: AtomicU8 = AtomicU8::new(0);
 
 // __relibc will be prepended to the name, so mangling is fine
 #[no_mangle]
diff --git a/redox-rt/src/signal.rs b/redox-rt/src/signal.rs
index 0aac7edc3ec7ddd12fad8ef56c879c59dda31af9..b07bda6b6a3f02fb94743218fffeea56090a741b 100644
--- a/redox-rt/src/signal.rs
+++ b/redox-rt/src/signal.rs
@@ -491,6 +491,7 @@ pub fn setup_sighandler(tcb: &RtTcb) {
     {
         let cpuid_eax1_ecx = unsafe { core::arch::x86_64::__cpuid(1) }.ecx;
         CPUID_EAX1_ECX.store(cpuid_eax1_ecx, core::sync::atomic::Ordering::Relaxed);
+        SUPPORTS_AVX.store(u8::from(cpuid_eax1_ecx & 1 << 28 != 0), Ordering::Relaxed);
     }
 
     let data = current_setsighandler_struct();