Cortex-M4 Peripherals
ARM DUI 0553A Copyright © 2010 ARM. All rights reserved. 4-48
ID121610 Non-Confidential
4.6 Floating Point Unit (FPU)
This section describes the optional Floating Point Unit (FPU) in a Cortex-M4F device. The FPU
implements the FPv4-SP floating-point extension.
The FPU fully supports single-precision add, subtract, multiply, divide, multiply and
accumulate, and square root operations. It also provides conversions between fixed-point and
floating-point data formats, and floating-point constant instructions.
The FPU provides floating-point computation functionality that is compliant with the
ANSI/IEEE Std 754-2008, IEEE Standard for Binary Floating-Point Arithmetic, referred to as
the IEEE 754 standard.
The FPU contains 32 single-precision extension registers, which you can also access as 16
doubleword registers for load, store, and move operations.
Table 4-49 shows the floating-point system registers in the Cortex-M4F FPU.
The following sections describe the floating-point system registers whose implementation is
specific to this processor.
4.6.1 Coprocessor Access Control Register
The CPACR register specifies the access privileges for coprocessors. See the register summary
in Cortex-M4F floating-point system registers for its attributes. The bit assignments are:
Table 4-49 Cortex-M4F floating-point system registers
Address Name Type Reset Description
0xE000ED88
CPACR RW
0x00000000
Coprocessor Access Control Register
0xE000EF34
FPCCR RW
0xC0000000
Floating-point Context Control Register on page 4-49
0xE000EF38
FPCAR RW - Floating-point Context Address Register on page 4-50
- FPSCR RW - Floating-point Status Control Register on page 4-50
0xE000EF3C
FPDSCR RW
0x00000000
Floating-point Default Status Control Register on page 4-52
Table 4-50 CPACR register bit assignments
Bits Name Function
[31:24] - Reserved. Read as Zero, Write Ignore.
[2n+1:2n] for
n values10
and 11
CPn Access privileges for coprocessor n. The possible values of each field are:
0b00
= Access denied. Any attempted access generates a NOCP
UsageFault.
0b01
= Privileged access only. An unprivileged access generates a NOCP
fault.
0b10
= Reserved. The result of any access is
Unpredictable
.
0b11
= Full access.
[19:0] - Reserved. Read as Zero, Write Ignore.
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CP11 CP10 Reserved