599
|
1 |
Intro.
|
|
2 |
|
|
3 |
A new GCC98r2 platform/build target has been added to Cedar. This
|
|
4 |
platform is called ARM4T and implements the 'mostly thumb' build
|
|
5 |
policy. Under this policy user-side code is built in THUMB (ARMv4)
|
|
6 |
mode by default and kernel side code is built in ARM (ARMv4) mode with
|
|
7 |
no interworking support. These defaults can be overridden by various
|
|
8 |
means (see below). When the default is overridden both user and
|
|
9 |
kernel-side code is built in ARM (ARMv4) mode with interworking
|
|
10 |
support.
|
|
11 |
|
|
12 |
Overriding the default.
|
|
13 |
|
|
14 |
The default can be overridden at project (MMP)and compontent (BLD.INF)
|
|
15 |
level and also interactively via a commandline argument to MAKMAKE.
|
|
16 |
|
|
17 |
i) MMP
|
|
18 |
|
|
19 |
A new keyword ALWAYS_BUILD_AS_ARM is introduced to the supported MMP
|
|
20 |
file syntax. This keyword takes no arguments. It applies only to
|
|
21 |
platforms that implement the 'mostly thumb' policy. In other words it
|
|
22 |
is ignored by other platforms (e.g. ARM4).
|
|
23 |
|
|
24 |
ii. BLD.INF
|
|
25 |
|
|
26 |
A new qualifier, BUILD_AS_ARM, is introduced for MMP file statements
|
|
27 |
in the BLD.INF syntax. The syntax for such statements thus becomes:
|
|
28 |
|
|
29 |
PRJ_MMPFILES
|
|
30 |
[<mmp path>\<mmp file>] {<qualifiers>}
|
|
31 |
{MAKEFILE|NMAKEFILE} [<path>\<makefile>] {build_as_arm}
|
|
32 |
// <qualifiers> are tidy, ignore, build_as_arm
|
|
33 |
|
|
34 |
iii. MAKMAKE
|
|
35 |
|
|
36 |
MAKMAKE has been extended to accept the option -ARM. Supplying this
|
|
37 |
option has the same effect as if ALWAYS_BUILD_AS_ARM is supplied in
|
|
38 |
the MMP file.
|
|
39 |
|
|
40 |
Build/Release Directory Structure.
|
|
41 |
|
|
42 |
Build artefacts are placed in either UREL or UDEB beneath ARM4T in
|
|
43 |
both build and release trees whatever ISA is targeted. The exception
|
|
44 |
is import libraries. Because ARM4T only supports version 4 of the ARM
|
|
45 |
architecture different import stubs implementations are required for
|
|
46 |
each of the possible modes that clients can be compiled in (e.g. ARM
|
|
47 |
without-interworking vs ARM with-interworking vs THUMB). Therefore
|
|
48 |
import libraries are placed in the UREL sub-directory of ARM4, ARMI or
|
|
49 |
THUMB respectively within the release tree.
|
|
50 |
|
|
51 |
Static Libraries.
|
|
52 |
|
|
53 |
Static libraries are always built in ARM mode with interworking. A
|
|
54 |
consequence of this is that the linker (LD) will introduce veneers
|
|
55 |
into executables built in THUMB mode. The veneers are responsible for
|
|
56 |
switching mode (as appropriate). However the introduction of a veneer
|
|
57 |
has a small impact on code size. These two factors (i.e. static libs
|
|
58 |
being ARM and veneers) mean that an ARM4T THUMB executable will always
|
|
59 |
be slightly larger than if it had been built using the old THUMB build
|
|
60 |
target.
|
|
61 |
|