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.
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
0xE000EF38
FPCAR
RW
-
Floating-point Context Address Register
-
FPSCR
RW
-
Floating-point Status Control Register
0xE000EF3C
FPDSCR
RW
0x00000000
Floating-point Default Status Control Register
Table 4-50 CPACR register bit assignments
Bits
Name
Function
[31:24]
-
Reserved. Read as Zero, Write Ignore.
[2
n
+1:2
n
] for
n
values10
and 11
CP
n
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