| From 82f44f53b9a9766c2ec816f237506beb953eb332 Mon Sep 17 00:00:00 2001 |
| From: Andreas Schwab <schwab@suse.de> |
| Date: Wed, 29 Oct 2014 14:18:28 +0100 |
| Subject: [PATCH] Add support for aarch64 |
| |
| * include/private/gcconfig.h: Add support for aarch64. |
| |
| --- |
| sigscheme/libgcroots/include/private/gcconfig.h | 37 +++++++++++++++++++++++++ |
| 1 file changed, 37 insertions(+) |
| |
| diff --git a/sigscheme/libgcroots/include/private/gcconfig.h b/sigscheme/libgcroots/include/private/gcconfig.h |
| index 4d42b03..0f13db6 100644 |
| --- a/sigscheme/libgcroots/include/private/gcconfig.h |
| +++ b/sigscheme/libgcroots/include/private/gcconfig.h |
| @@ -62,6 +62,13 @@ |
| # endif |
| |
| /* Determine the machine type: */ |
| +# if defined(__aarch64__) |
| +# define AARCH64 |
| +# if !defined(LINUX) |
| +# define NOSYS |
| +# define mach_type_known |
| +# endif |
| +# endif |
| # if defined(__arm__) || defined(__thumb__) |
| # define ARM32 |
| # if !defined(LINUX) && !defined(NETBSD) |
| @@ -231,6 +238,10 @@ |
| # define IA64 |
| # define mach_type_known |
| # endif |
| +# if defined(LINUX) && defined(__aarch64__) |
| +# define AARCH64 |
| +# define mach_type_known |
| +# endif |
| # if defined(LINUX) && defined(__arm__) |
| # define ARM32 |
| # define mach_type_known |
| @@ -504,6 +515,7 @@ |
| /* running Amdahl UTS4 */ |
| /* S390 ==> 390-like machine */ |
| /* running LINUX */ |
| + /* AARCH64 ==> ARM AArch64 */ |
| /* ARM32 ==> Intel StrongARM */ |
| /* IA64 ==> Intel IPF */ |
| /* (e.g. Itanium) */ |
| @@ -1724,6 +1736,31 @@ |
| # endif |
| # endif |
| |
| +# ifdef AARCH64 |
| +# define CPP_WORDSZ 64 |
| +# define MACH_TYPE "AARCH64" |
| +# define ALIGNMENT 8 |
| +# ifndef HBLKSIZE |
| +# define HBLKSIZE 4096 |
| +# endif |
| +# ifdef LINUX |
| +# define OS_TYPE "LINUX" |
| +# define LINUX_STACKBOTTOM |
| +# define DYNAMIC_LOADING |
| + extern int __data_start[]; |
| +# define DATASTART ((ptr_t)__data_start) |
| + extern char _end[]; |
| +# define DATAEND ((ptr_t)(&_end)) |
| +# endif |
| +# ifdef NOSYS |
| + /* __data_start is usually defined in the target linker script. */ |
| + extern int __data_start[]; |
| +# define DATASTART ((ptr_t)__data_start) |
| + extern void *__stack_base__; |
| +# define STACKBOTTOM ((ptr_t)__stack_base__) |
| +# endif |
| +# endif |
| + |
| # ifdef ARM32 |
| # define CPP_WORDSZ 32 |
| # define MACH_TYPE "ARM32" |