summaryrefslogtreecommitdiffstats
path: root/architecture-notes.txt
blob: 56c7add69b580efa9e96c61eed66fc39750287a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
four things will affect general binary compatibility:
	CPU architecture (microprocessor ISAs, co-processors, byte order, ABIs, ...)
		initial options:
			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: -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:
			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:
			eglibc
				portable C/C++ library: works with almost any kernel
				optimized for speed rather than for space (big and fast)
		planned future options:
			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:
	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}>