1# Architecture Support
2
3## Overview
4
5Architectural configuration comes under the `arch` directory. This area provides
6not only instructions for building the architecture library, but for configuring
7any architecture-dependent behaviour required by the framework.
8
9## Structure
10
11The structure of this directory is like so:
12
13    .
14    |-- <vendor>
15    |   |-- <architecture>
16    |   |   |-- arch.mk
17    |   |   |-- include
18    |   |   |   `-- arch_*.h
19    |   |   `-- src
20    |   |       |-- arch.ld.S
21    |   |       |-- arch.scatter.S
22    |   |       |-- arch_*.S
23    |   |       |-- arch_*.c
24    |   |-- include
25    |   |   `-- arch_*.h
26    |   |-- src
27    |   |   `-- arch_*.c
28    |   `-- vendor.mk
29
30### Vendors and architectures
31
32The _vendor_ refers to the umbrella architecture group. For Arm-based
33architectures this is "arm".
34
35The _architecture_ refers to the instruction set architecture of the target
36platform.
37
38### Build system integration
39
40`vendor.mk` is included by the build system when building the architecture
41library, and also when building the firmware. This allows you to configure
42sources to compile in the architecture library, and library dependencies
43(if any) when linking the final firmware binary.
44
45`arch.ld.S` and `arch.scatter.S` also provide the linker scripts for the final
46firmware. They are automatically used by the build system if not targeting the
47*none* vendor (which one is chosen is based on the linker in use).
48