18 lines
556 B
Rust
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") _);
|
|
}
|
|
}
|