summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2012-02-16 23:48:52 (EST)
committer P. J. McDermott <pjm@nac.net>2012-02-16 23:48:52 (EST)
commite41b6f80643fc9291edc88ce5ab600e5c1d0f04d (patch)
tree39a5a87a316e53805b65134c2a10afac242d2f12
parent17b51ad606ba6ca02d4314ac8cbd35d2b01e6a96 (diff)
Update architecture notes.
-rw-r--r--architecture-notes.txt36
1 files changed, 26 insertions, 10 deletions
diff --git a/architecture-notes.txt b/architecture-notes.txt
index f3efebd..7ee0989 100644
--- a/architecture-notes.txt
+++ b/architecture-notes.txt
@@ -1,19 +1,30 @@
four things will affect general binary compatibility:
- CPU architecture and vendor
+ CPU architecture (microprocessor ISAs, co-processors, byte order, ABIs, ...)
initial options:
- i486-pc (any CPU with Intel 80486 microarchitecture)
- x86_64-pc (any CPU with AMD64 or Intel 64 architecture)
- arm*-* (some SoC with a microprocessor implementing some ARM ISA)
+ cortexa8 (any SoC with an ARM Cortex-A8 core)
+ ISAs: ARMv7-A, Thumb, Thumb-2, NEON SIMD
+ byte order: little-endian
+ ABI: GNU EABI
+ floating-point ABI: hardware
+ CFLAGS: -march=armv7-a -mcpu=cortex-a8 -mtune=cortex-a8 -mthumb
+ -mfpu=neon -mfloat-abi=hard -O3 -fsingle-precision-constant
+ GCC configure options: --with-arch=armv7-a \
+ --with-cpu=cortex-a8 --with-tune=cortex-a8 \
+ --with-mode=thumb --with-fpu=neon --with-float=hard
planned future options:
- i586-pc (any CPU with Intel P5 microarchitecture)
- i686-pc (any CPU with Intel P6 or any successive microarchitecture)
- mips*-*
- powerpc*-*
+ i486 (any CPU with Intel 80486 microarchitecture)
+ i586 (any CPU with Intel P5 microarchitecture)
+ i686 (any CPU with Intel P6 or any successive microarchitecture)
+ amd64 (any CPU with AMD64 or Intel 64 architecture)
+ other ARM cores
+ mips*
+ powerpc*
kernel
initial options:
linux
different hardware targets will be built with different configs
planned future options:
+ kfreebsd
knetbsd
system libraries
initial options:
@@ -21,9 +32,14 @@ four things will affect general binary compatibility:
portable C/C++ library: works with almost any kernel
optimized for speed rather than for space (big and fast)
planned future options:
- uclibc*
+ uclibc
different configurations of uClibc can be ABI-incompatible
only works with Linux
optimized for space rather than for speed (small and slow)
example architecture string:
- x86_64-pc-linux-eglibc
+ cortexa8-linux-eglibc
+
+GCC package build system:
+ include architecture mk file, which set architecture-specific configure opts
+opkhelper build flags system:
+ read CFLAGS et al from e.g. <file:///usr/share/opkhelper/buildflags/${arch}>