#[macro_export]
#[cfg_attr(docsrs, doc(cfg(feature = "custom")))]
macro_rules! register_interrupt {
($get:path, $set:path) => {
#[no_mangle]
extern "C" fn rust_interrupt_get() -> u32 {
unsafe { $get() }
}
#[no_mangle]
extern "C" fn rust_interrupt_set(mask: u32) {
let _ = unsafe { $set(mask) };
}
};
}
extern "C" {
fn rust_interrupt_get() -> u32;
fn rust_interrupt_set(mask: u32);
}
#[inline]
pub fn get_mask() -> u32 {
unsafe { rust_interrupt_get() }
}
#[inline]
pub unsafe fn set_mask(mask: u32) {
rust_interrupt_set(mask)
}