source: clfs-embedded/BOOK/cross-tools/arm/abi.xml @ 2e5c4b9

Last change on this file since 2e5c4b9 was 2e5c4b9, checked in by Andrew Bradford <andrew@…>, 12 years ago

cross-tools/arm/abi: Provide recommendations on ABI

ABI selection for ARM is often confusing and the -support list often
has people reporting that they have difficulty selecting the best ABI
for their board.

Add some clarification and recommendations. Move aapcs-linux and
apcs-gnu to the top of the table as those are really the only two
choices that should be used.

Signed-off-by: Andrew Bradford <andrew@…>

  • Property mode set to 100644
File size: 2.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4  <!ENTITY % general-entities SYSTEM "../../general.ent">
5  %general-entities;
6]>
7
8<sect1 id="ch-system-abi">
9  <?dbhtml filename="abi.html"?>
10
11  <title>ABI Variables</title>
12
13  <para os="a">On the ARM architecture, there are two major ABI types to choose
14  from: EABI and OABI.  There is also a Thumb ABI and an Intel IWMMX specific
15  ABI but these are generally not recommended for most uses.</para>
16
17  <para os="b">The EABI (Embedded ABI) is newer and supports additional
18  features, faster software floating point operations, and Thumb interworking,
19  but is only compatible with ARMv4t and newer cores.  The EABI has
20  sub-ABIs of: aapcs-linux and aapcs.  aapcs-linux has standard Linux 4 byte
21  enums while aapcs has variable length enums.  aapcs-linux is recommended over
22  aapcs.</para>
23
24  <para os="c">The OABI (old ABI) is called apcs-gnu and supports ARMv4 and
25  older cores.  Generally the OABI is not used by modern ARM processors.</para>
26
27  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
28  href="../common/abi.xml"
29  xpointer="xpointer(//*[@os='a'])"/>
30
31  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
32  href="../common/abi.xml"
33  xpointer="xpointer(//*[@os='b'])"/>
34
35  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
36  href="../common/abi.xml"
37  xpointer="xpointer(//*[@os='c'])"/>
38
39  <table>
40    <title>List of Build Variables</title>
41    <?dbfo table-width="3in" ?>
42
43    <tgroup cols="2">
44
45      <colspec colnum="1" colwidth="1.5in" colname="ABI to Select"/>
46      <colspec colnum="2" colwidth="1.5in" colname="Variable Value"/>
47      <colspec colnum="3" colwidth="2in" colname="Note"/>
48
49      <thead>
50        <row>
51          <entry>ABI</entry>
52          <entry>CLFS_ABI=Value</entry>
53          <entry>Note</entry>
54        </row>
55      </thead>
56
57      <tbody>
58        <row>
59          <entry>aapcs-linux</entry>
60          <entry>aapcs-linux</entry>
61          <entry>Recommended for EABI. Standard Linux 32 bit (int) enums</entry>
62        </row>
63        <row>
64          <entry>apcs-gnu</entry>
65          <entry>apcs-gnu</entry>
66          <entry>Recommended for OABI</entry>
67        </row>
68        <row>
69          <entry>atpcs</entry>
70          <entry>atpcs</entry>
71          <entry>Thumb ABI</entry>
72        </row>
73        <row>
74          <entry>aapcs</entry>
75          <entry>aapcs</entry>
76          <entry>EABI w/ variable size enums</entry>
77        </row>
78        <row>
79          <entry>iwmmxt</entry>
80          <entry>iwmmxt</entry>
81          <entry>Supports Intel XScale MMX extensions</entry>
82        </row>
83      </tbody>
84
85    </tgroup>
86
87  </table>
88
89</sect1>
90
Note: See TracBrowser for help on using the repository browser.