2016-08-14 22:59:18 +02:00
|
|
|
//! Interrupt instructions
|
|
|
|
|
|
|
|
static mut INTERRUPTS_ENABLED: bool = false;
|
|
|
|
|
|
|
|
/// Clear interrupts
|
|
|
|
#[inline(always)]
|
2016-08-15 02:16:56 +02:00
|
|
|
pub unsafe fn disable_interrupts() {
|
2016-08-14 22:59:18 +02:00
|
|
|
println!("CLEAR INTERRUPTS");
|
|
|
|
INTERRUPTS_ENABLED = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Set interrupts
|
|
|
|
#[inline(always)]
|
2016-08-15 02:16:56 +02:00
|
|
|
pub unsafe fn enable_interrupts() {
|
2016-08-14 22:59:18 +02:00
|
|
|
println!("SET INTERRUPTS");
|
|
|
|
INTERRUPTS_ENABLED = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Halt instruction
|
|
|
|
#[inline(always)]
|
|
|
|
pub unsafe fn halt() {
|
|
|
|
assert!(INTERRUPTS_ENABLED);
|
|
|
|
::std::thread::yield_now();
|
|
|
|
}
|