summaryrefslogtreecommitdiffstats
path: root/doc/cpu_supplement/general.t
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-15 15:22:18 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-16 11:34:47 +0100
commit48cfe6819e76c1405e6d13dcca319b7c76000a7b (patch)
tree0938e436bd50ca8353c7d4e4da5556379bef52c3 /doc/cpu_supplement/general.t
parentDelete CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM (diff)
downloadrtems-48cfe6819e76c1405e6d13dcca319b7c76000a7b.tar.bz2
doc: Add multilib section to CPU supplement
Add multilib section for ARM and PowerPC
Diffstat (limited to 'doc/cpu_supplement/general.t')
-rw-r--r--doc/cpu_supplement/general.t30
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/cpu_supplement/general.t b/doc/cpu_supplement/general.t
index 3d84c2a901..82b8dcbbd4 100644
--- a/doc/cpu_supplement/general.t
+++ b/doc/cpu_supplement/general.t
@@ -102,6 +102,36 @@ the FP software emulation will be context switched.
@c
@c
@c
+@section Multilibs
+
+Newlib and GCC provide several target libraries like the @file{libc.a},
+@file{libm.a} and @file{libgcc.a}. These libraries are artifacts of the GCC
+build process. Newlib is built together with GCC. To provide optimal support
+for various chip derivatives and instruction set revisions multiple variants of
+these libraries are available for each architecture. For example one set may
+use software floating point support and another set may use hardware floating
+point instructions. These sets of libraries are called @emph{multilibs}. Each
+library set corresponds to an application binary interface (ABI) and
+instruction set.
+
+A multilib variant can be usually detected via built-in compiler defines at
+compile-time. This mechanism is used by RTEMS to select for example the
+context switch support for a particular BSP. The built-in compiler defines
+corresponding to multilibs are the only architecture specific defines allowed
+in the @code{cpukit} area of the RTEMS sources.
+
+Invoking the GCC with the @code{-print-multi-lib} option lists the available
+multilibs. Each line of the output describes one multilib variant. The
+default variant is denoted by @code{.} which is selected when no or
+contradicting GCC machine options are selected. The multilib selection for a
+target is specified by target makefile fragments (see file @file{t-rtems} in
+the GCC sources and section
+@uref{https://gcc.gnu.org/onlinedocs/gccint/Target-Fragment.html#Target-Fragment,The Target Makefile Fragment}
+in the @uref{https://gcc.gnu.org/onlinedocs/gccint/,GCC Internals Manual}.
+
+@c
+@c
+@c
@section Calling Conventions
Each high-level language compiler generates subroutine entry and exit