From Fedora Project Wiki

< Architectures‎ | ARM

Revision as of 09:14, 10 June 2011 by Jcm (talk | contribs)


NOTE: This is a draft page in progress. I put it up so we have something, but it's not finalized yet.

We are currently engaged in early bootstrap of support for an ARMv7 "hardfp" (hardware floating point) version of Fedora 15. In addition to adding support for hardware floating point, this port makes a transition to newer variant of the ARM ABI (sometimes referred to as a new variant of the "EABI" informally, though the name "EABI" does not exist any more in official terms for ARM systems), and in particular to a newer variant of the Procedure Calling Standard for ARM Architecture AAPCS. The newer ABI (as defined in section 6 of the AAPCS) uses floating point registers as part of the procedure calling interface. We will treat "armv7hl" (hardfp, little endian) as a new target architecture.

Important Links

Target flags

We will be supporting the vfpv3-d16 architecture level as required of the optional AAPCS section 6 hardware floating point calling convention ABI. We will not be requiring vfpv3-d32 since not all ARMv7 parts implement all 32 double floating point registers and they are not required for base hardfp ABI compatibility. We will build for a Cortex-A8 optimized target, not requiring NEON, and with Thumb2 instructions disabled. Due to the way in which AAELF (ELF bindings for ARM Architecture) and AAPCS, as well as Thumb interworking are implemented, we can safely assume that Thumb2 can be enabled at the individual package level later without breaking any compatibility, or requiring other packages to be rebuilt.

Hardware floating point

Hardware floating point in ARMv7 processors takes the form of the VFPv3 (Vector Floating Point version 3) co-processor, which is a modern vector processing unit unrelated to the original ARM FPU present or emulated in earlier ARM systems.

Work in progress

DJ Delorie has produced an excellent set of bootstrap scripts that can be checked out using git, and used to generate a root filesystem image usable as a chroot for on-target package builds. You can obtain partially bootstrapped rootfs archives produced by this script (and then archived). Once you have unpacked the rootfs, you can chroot into it from an ARMv7-compatible target running the existing F13 userspace with an ARMv7 compatible kernel (images are available for various boards). Inside the rootfs, take a look at /stage2/stage2, a script that can be run to build various target modules. This script (which is a copy of the stage2 script inside the bootstrap git repository) should be extended until it can support bootstrapping up to rpm-build.

For further information about using the bootstrap script, see the first ARM Fedora 15 HardFP Bootstrapping Activity Day.