zynq-rs/libcortex_a9/src/fpu.rs

18 lines
556 B
Rust

use core::arch::asm;
/// Enable FPU in the current core.
/// You must execute an ISB immediately after an update of the CPACR.
/// https://developer.arm.com/documentation/ddi0388/i/system-control/register-descriptions/coprocessor-access-control-register
pub fn enable_fpu() {
unsafe {
asm!("
mrc p15, 0, r1, c1, c0, 2
orr r1, r1, (0b1111<<20)
mcr p15, 0, r1, c1, c0, 2
isb
vmrs r1, fpexc
orr r1, r1, (1<<30)
vmsr fpexc, r1
", out("r1") _);
}
}