diff --git a/libcortex_a9/src/asm.rs b/libcortex_a9/src/asm.rs index e513275..2243c9e 100644 --- a/libcortex_a9/src/asm.rs +++ b/libcortex_a9/src/asm.rs @@ -34,6 +34,12 @@ pub fn isb() { unsafe { llvm_asm!("isb" :::: "volatile") } } +/// Enable FIQ +#[inline] +pub unsafe fn enable_fiq() { + llvm_asm!("cpsie f":::: "volatile"); +} + /// Enable IRQ #[inline] pub unsafe fn enable_irq() { diff --git a/libsupport_zynq/src/boot.rs b/libsupport_zynq/src/boot.rs index 1389d3d..f542c89 100644 --- a/libsupport_zynq/src/boot.rs +++ b/libsupport_zynq/src/boot.rs @@ -54,6 +54,7 @@ unsafe extern "C" fn boot_core0() -> ! { asm::dmb(); asm::dsb(); + asm::enable_fiq(); asm::enable_irq(); main_core0(); panic!("return from main"); @@ -75,6 +76,7 @@ unsafe extern "C" fn boot_core1() -> ! { asm::dmb(); asm::dsb(); + asm::enable_fiq(); asm::enable_irq(); main_core1(); panic!("return from main_core1");