| Line 29: | Line 29: | ||
* There are two build configurations in the toolchain - Baseline and Optimized configurations. Baseline configuration maximize the compatibility and does not allow the use of NEON instructions nor Thumb2 instruction set. Optimized configuration allows the use of NEON instructions and Thumb2 instruction set. | * There are two build configurations in the toolchain - Baseline and Optimized configurations. Baseline configuration maximize the compatibility and does not allow the use of NEON instructions nor Thumb2 instruction set. Optimized configuration allows the use of NEON instructions and Thumb2 instruction set. | ||
* Third configuration is meant for N900 reference hardware. Since there is silicon bug in Cortex-A8 [2]. | * Third configuration is meant for N900 reference hardware. Since there is silicon bug in Cortex-A8 [2]. | ||
| - | * Baseline configuration: | + | * Baseline configuration (NEON and Thumb2 is not allowed): |
* RPM architecture name: "armv7hl" | * RPM architecture name: "armv7hl" | ||
* ARMv7 architecture (-march=armv7-a) | * ARMv7 architecture (-march=armv7-a) | ||
* VFPv3-D16 is in use (-mfpu=vfpv3-d16) | * VFPv3-D16 is in use (-mfpu=vfpv3-d16) | ||
* Thumb2 instruction set not used (-mno-thumb) | * Thumb2 instruction set not used (-mno-thumb) | ||
| - | * Optimized configuration (NEON | + | * Optimized configuration 1 (NEON is allowed) |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
* RPM architecture name: "armv7nhl" | * RPM architecture name: "armv7nhl" | ||
* ARMv7 architecture (-march=armv7-a) | * ARMv7 architecture (-march=armv7-a) | ||
| Line 46: | Line 41: | ||
* ARM RunFast is enabled in glibc by default | * ARM RunFast is enabled in glibc by default | ||
| + | * Scheduler name in build.meego.com is "armv8el" | ||
=== Impact of the Change === | === Impact of the Change === | ||
Contents |
ARM Toolchain will be changed in MeeGo release 1.2. This page describes the change and the effects of the change.
This change effects to ARM cross compiler part of MeeGo toolchain.
The toolchain in current MeeGo 1.1 supports ARM architecture only partially what comes to Floating Point Unit (FPU) support.
gcc compiler provides three options to support floating points in option -mfloat-abi [1]:
Full utilization of the FPU gives performance improvement to applications using plenty of floating point operations - like games, location based services and graphics.
In order to take -mfloat-abi=hard option into use in MeeGo 1.2 the toolchain is needed to be updated to gcc-4.5.1 based.
The change proposal (SDK/Toolchains/ToolchainChangeProposal) was approved in MeeGo TSG on December 1, 2010.
In MeeGo Release 1.2 and onwards the following is about to change:
* RPM architecture name: "armv7hl" * ARMv7 architecture (-march=armv7-a) * VFPv3-D16 is in use (-mfpu=vfpv3-d16) * Thumb2 instruction set not used (-mno-thumb)
* RPM architecture name: "armv7nhl" * ARMv7 architecture (-march=armv7-a) * NEON allowed (-mfpu=neon) * Thumb2 instruction set not used (-mno-thumb)
ARM Packages compiled in MeeGo Release 1.2 are not binary compatible with those packages that are compiled using gcc-option -mfloat-abi=softfp in MeeGo Release 1.0 or 1.1. So all the packages from Release 1.0 or 1.1 must be re-compiled using the toolchain of MeeGo 1.2.
All hardfp related issues are tracked in the metabug #11429 [3].
[1] http://wiki.debian.org/ArmHardFloatPort/VfpComparison#DetailsonGCCfloating-pointoptions
[2] http://lists.meego.com/pipermail/meego-dev/2011-January/481145.html
[3] http://bugs.meego.com/showdependencytree.cgi?id=11429&hide_resolved=0