diff --git a/Cargo.lock b/Cargo.lock
index 2f6e0149c2..400bd056c7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -616,6 +616,7 @@ dependencies = [
"hermit-entry",
"hermit-macro",
"hermit-sync",
+ "interrupts",
"llvm-tools",
"lock_api",
"log",
diff --git a/Cargo.toml b/Cargo.toml
index b9ce5d59c8..16f404e704 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -68,7 +68,7 @@ vga = []
common-os = []
nostd = []
semihosting = ["dep:semihosting"]
-shell = ["simple-shell"]
+shell = []
[dependencies]
hermit-macro = { path = "hermit-macro" }
@@ -106,6 +106,7 @@ talc = { version = "4" }
time = { version = "0.3", default-features = false }
volatile = { version = "0.5.4", features = ["unstable"] }
zerocopy = { version = "0.7", features = ["derive"] }
+interrupts = "0.1"
[dependencies.smoltcp]
version = "0.11"
diff --git a/src/arch/x86_64/kernel/mod.rs b/src/arch/x86_64/kernel/mod.rs
index aef2bc5768..e888f42381 100644
--- a/src/arch/x86_64/kernel/mod.rs
+++ b/src/arch/x86_64/kernel/mod.rs
@@ -5,13 +5,13 @@ use core::ptr;
use core::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
use hermit_entry::boot_info::{BootInfo, PlatformInfo, RawBootInfo};
-use hermit_sync::InterruptSpinMutex;
use x86::controlregs::{cr0, cr0_write, cr4, Cr0};
use self::serial::SerialPort;
use crate::arch::mm::{PhysAddr, VirtAddr};
use crate::arch::x86_64::kernel::core_local::*;
use crate::env::{self, is_uhyve};
+use crate::synch::r#async::AsyncInterruptMutex;
#[cfg(feature = "acpi")]
pub mod acpi;
@@ -52,7 +52,7 @@ pub fn raw_boot_info() -> &'static RawBootInfo {
}
/// Serial port to print kernel messages
-pub(crate) static COM1: InterruptSpinMutex