12.32 --cpu=name

Enables code generation for the selected ARM® processor or architecture.

If you do not include the --cpu option, armlink derives an architecture from the combination of the input objects.

If you include --cpu=name, armlink:

  • Faults any input object that is not compatible with the cpu.
  • For library selection, acts as if at least one input object is compiled with --cpu=name.

Syntax

--cpu=name

Where name is the name of a processor or architecture:

  • If name is the name of a processor, enter it as shown on ARM data sheets, for example, ARM7TDMI, ARM1176JZ-S, MPCore.

  • If name is the name of an architecture, it must belong to the list of architectures shown in the following table.

Processor and architecture names are not case-sensitive.

Wildcard characters are not accepted.

The following table shows the supported architectures. For a complete list of the supported architecture and processor names, specify the --cpu=list option.

Table 12-1 Supported ARM architectures

Architecture Description
4 ARMv4 without Thumb
4T ARMv4 with Thumb
5T ARMv5 with Thumb and interworking
5TE ARMv5 with Thumb, interworking, DSP multiply, and double-word instructions
5TEJ

ARMv5 with Thumb, interworking, DSP multiply, double-word instructions, and Jazelle® extensions

Note:

armlink cannot generate Java bytecodes.

6 ARMv6 with Thumb, interworking, DSP multiply, double-word instructions, unaligned and mixed-endian support, Jazelle, and media extensions.
6-M

ARMv6 microcontroller profile with Thumb only, plus processor state instructions.

6S-M

ARMv6 microcontroller profile with Thumb only, plus processor state instructions and OS extensions.

6K ARMv6 with SMP extensions.
6T2 ARMv6 with Thumb (Thumb-2 technology).
6Z ARMv6 with Security Extensions.
7 ARMv7 with Thumb (Thumb-2 technology) only, and without hardware divide.
7-A ARMv7 application profile.
7-A.security ARMv7-A architecture profile with the SMC instruction (formerly SMI).

7-R

ARMv7 real-time profile.

7-M ARMv7 microcontroller profile.
7E-M ARMv7-M architecture profile with DSP extension.

Note:

  • ARMv7 is not an actual ARM architecture. --cpu=7 denotes the features that are common to the ARMv7-A, ARMv7-R, and ARMv7-M architectures. By definition, any given feature used with --cpu=7 exists on the ARMv7-A, ARMv7-R, and ARMv7-M architectures.

  • 7-A.security is not an actual ARM architecture, but rather refers to 7-A plus Security Extensions.

  • The full list of supported architectures and processors depends on your license.

Usage

The following general points apply to processor and architecture options:

Processors
  • Selecting the processor selects the appropriate architecture, Floating-Point Unit (FPU), and memory organization.

  • The supported --cpu values include all current ARM product names or architecture versions.

    Other ARM architecture-based processors, such as the Marvell Feroceon and the Marvell XScale, are also supported.

  • If you specify a processor for the --cpu option, the generated code is optimized for that processor.

Architectures
  • If you specify an architecture name for the --cpu option, the generated code can run on any processor supporting that architecture. For example, --cpu=5TE produces code that can be used by the ARM926EJ-S processor.

FPU
  • Some specifications of --cpu imply an --fpu selection.

    Note:

    Any explicit FPU, set with --fpu on the command line, overrides an implicit FPU.
  • If no --fpu option is specified and no --cpu option is specified, --fpu=softvfp is used.

Default

armlink assumes --cpu=ARM7TDMI if you do not specify a --cpu option.

Restrictions

You cannot specify both a processor and an architecture on the same command-line.

Non-ConfidentialPDF file icon PDF versionARM DUI0474M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.