build: Add initial ARM64 target.

It will probably be just stubs for the significant future, but,
here it is anyway.

Regarding the naming: Yes, the official name is "aarch64." However,
Linux, FreeBSD, and Zircon all call it "arm64", and so we will do the same.

I've configured it initially to be a Clang-only port, making no
changes to GCC buildtools whatsoever here. We'll see if that sticks,
however.
This commit is contained in:
Augustin Cavalier 2018-08-02 19:48:29 -04:00
parent 9a90ee3a38
commit fb4cc98472
4 changed files with 13 additions and 4 deletions

5
configure vendored
View File

@ -32,7 +32,7 @@ options:
directory under "cross-tools". The HAIKU_* tools directory under "cross-tools". The HAIKU_* tools
variables will be set accordingly. variables will be set accordingly.
<arch> specifies the target architecture, either <arch> specifies the target architecture, either
"x86_gcc2", "x86", "x86_64", "ppc", "m68k", "arm" "x86_gcc2", "x86", "x86_64", "ppc", "m68k", "arm", "arm64"
This option and --cross-tools-prefix can be This option and --cross-tools-prefix can be
specified multiple times. The first cross tools specified multiple times. The first cross tools
specify the primary tools, the subsequent ones the specify the primary tools, the subsequent ones the
@ -254,6 +254,7 @@ standard_gcc_settings()
# determine architecture from machine triple # determine architecture from machine triple
case $gccMachine in case $gccMachine in
arm-*) targetCpu=arm;; arm-*) targetCpu=arm;;
arm64-*) targetCpu=arm64;;
i?86-*) targetCpu=x86;; i?86-*) targetCpu=x86;;
m68k-*) targetCpu=m68k;; m68k-*) targetCpu=m68k;;
powerpc-*) targetCpu=ppc;; powerpc-*) targetCpu=ppc;;
@ -599,6 +600,7 @@ export haikuRequiredLegacyGCCVersion
# version of legacy gcc required to build haiku # version of legacy gcc required to build haiku
supportedTargetArchs=" supportedTargetArchs="
arm arm
arm64
m68k m68k
ppc ppc
x86 x86
@ -706,6 +708,7 @@ while [ $# -gt 0 ] ; do
x86_64) targetMachine=x86_64-unknown-haiku;; x86_64) targetMachine=x86_64-unknown-haiku;;
ppc) targetMachine=powerpc-apple-haiku;; ppc) targetMachine=powerpc-apple-haiku;;
arm) targetMachine=arm-unknown-haiku;; arm) targetMachine=arm-unknown-haiku;;
arm64) targetMachine=arm64-unknown-haiku;;
*) *)
echo "Unsupported target architecture: $2" >&2 echo "Unsupported target architecture: $2" >&2
exit 1 exit 1

View File

@ -56,6 +56,11 @@
# define __HAIKU_ARCH_ABI "armeb" # define __HAIKU_ARCH_ABI "armeb"
# define __HAIKU_ARCH_ARM 1 # define __HAIKU_ARCH_ARM 1
# define __HAIKU_BIG_ENDIAN 1 # define __HAIKU_BIG_ENDIAN 1
#elif defined(__arm64__)
# define __HAIKU_ARCH arm64
# define __HAIKU_ARCH_ABI "arm64"
# define __HAIKU_ARCH_ARM64 1
# define __HAIKU_ARCH_BITS 64
#else #else
# error Unsupported architecture! # error Unsupported architecture!
#endif #endif

View File

@ -186,7 +186,8 @@ typedef struct {
#define EM_BLACKFIN 106 /* Analog Devices Blackfin (DSP) processor */ #define EM_BLACKFIN 106 /* Analog Devices Blackfin (DSP) processor */
#define EM_ARCA 109 /* Arca RISC Microprocessor */ #define EM_ARCA 109 /* Arca RISC Microprocessor */
#define EM_VIDCORE3 137 /* Broadcom VideoCore III */ #define EM_VIDCORE3 137 /* Broadcom VideoCore III */
#define EM_AARCH64 183 /* ARM 64 bit */ #define EM_ARM64 183 /* ARM 64 bit */
#define EM_AARCH64 EM_ARM64
#define EM_AVR32 185 /* AVR-32 */ #define EM_AVR32 185 /* AVR-32 */
#define EM_STM8 186 /* ST STM8S */ #define EM_STM8 186 /* ST STM8S */
#define EM_CUDA 190 /* Nvidia CUDA */ #define EM_CUDA 190 /* Nvidia CUDA */

View File

@ -667,8 +667,8 @@ get_executable_architecture(int fd, const char** _architecture)
case EM_ARM: case EM_ARM:
architecture = "arm"; architecture = "arm";
break; break;
case EM_AARCH64: case EM_ARM64:
architecture = "aarch64"; architecture = "arm64";
break; break;
case EM_X86_64: case EM_X86_64:
architecture = "x86_64"; architecture = "x86_64";