diff options
author | wtc%google.com <devnull@localhost> | 2013-02-10 19:40:49 +0000 |
---|---|---|
committer | wtc%google.com <devnull@localhost> | 2013-02-10 19:40:49 +0000 |
commit | be416b4497c859ffd05a7d26f42ebcf394db86bf (patch) | |
tree | 1e3ce8915c71d4af840fc68ffbcd3f2944e681bc | |
parent | f32a4d9747b137ab7938a8a8e072691868ebe669 (diff) | |
download | nspr-hg-be416b4497c859ffd05a7d26f42ebcf394db86bf.tar.gz |
Bug 827271: Add support for Aarch64 (64-Bit ARM). The patch is contributedNSPR_4_9_6_BETA1
by Riku Voipio. r=wtc.
Modified Files:
_linux.cfg _linux.h
-rw-r--r-- | pr/include/md/_linux.cfg | 53 | ||||
-rw-r--r-- | pr/include/md/_linux.h | 8 |
2 files changed, 60 insertions, 1 deletions
diff --git a/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg index d0a3beeb..2fdbf63e 100644 --- a/pr/include/md/_linux.cfg +++ b/pr/include/md/_linux.cfg @@ -590,6 +590,59 @@ #define PR_BYTES_PER_WORD_LOG2 2 #define PR_BYTES_PER_DWORD_LOG2 3 +#elif defined(__aarch64__) + +#ifdef __AARCH64EB__ +#undef IS_LITTLE_ENDIAN +#define IS_BIG_ENDIAN 1 +#elif defined(__AARCH64EL__) +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN +#else +#error "Unknown Aarch64 endianness." +#endif +#define IS_64 + +#define PR_BYTES_PER_BYTE 1 +#define PR_BYTES_PER_SHORT 2 +#define PR_BYTES_PER_INT 4 +#define PR_BYTES_PER_INT64 8 +#define PR_BYTES_PER_LONG 8 +#define PR_BYTES_PER_FLOAT 4 +#define PR_BYTES_PER_DOUBLE 8 +#define PR_BYTES_PER_WORD 8 +#define PR_BYTES_PER_DWORD 8 + +#define PR_BITS_PER_BYTE 8 +#define PR_BITS_PER_SHORT 16 +#define PR_BITS_PER_INT 32 +#define PR_BITS_PER_INT64 64 +#define PR_BITS_PER_LONG 64 +#define PR_BITS_PER_FLOAT 32 +#define PR_BITS_PER_DOUBLE 64 +#define PR_BITS_PER_WORD 64 + +#define PR_BITS_PER_BYTE_LOG2 3 +#define PR_BITS_PER_SHORT_LOG2 4 +#define PR_BITS_PER_INT_LOG2 5 +#define PR_BITS_PER_INT64_LOG2 6 +#define PR_BITS_PER_LONG_LOG2 6 +#define PR_BITS_PER_FLOAT_LOG2 5 +#define PR_BITS_PER_DOUBLE_LOG2 6 +#define PR_BITS_PER_WORD_LOG2 6 + +#define PR_ALIGN_OF_SHORT 2 +#define PR_ALIGN_OF_INT 4 +#define PR_ALIGN_OF_LONG 8 +#define PR_ALIGN_OF_INT64 8 +#define PR_ALIGN_OF_FLOAT 4 +#define PR_ALIGN_OF_DOUBLE 8 +#define PR_ALIGN_OF_POINTER 8 +#define PR_ALIGN_OF_WORD 8 + +#define PR_BYTES_PER_WORD_LOG2 3 +#define PR_BYTES_PER_DWORD_LOG2 3 + #elif defined(__hppa__) #undef IS_LITTLE_ENDIAN diff --git a/pr/include/md/_linux.h b/pr/include/md/_linux.h index 4992b773..906822fb 100644 --- a/pr/include/md/_linux.h +++ b/pr/include/md/_linux.h @@ -41,6 +41,8 @@ #define _PR_SI_ARCHITECTURE "mips" #elif defined(__arm__) #define _PR_SI_ARCHITECTURE "arm" +#elif defined(__aarch64__) +#define _PR_SI_ARCHITECTURE "aarch64" #elif defined(__hppa__) #define _PR_SI_ARCHITECTURE "hppa" #elif defined(__s390x__) @@ -63,6 +65,10 @@ #define _MD_DEFAULT_STACK_SIZE 65536L #define _MD_MMAP_FLAGS MAP_PRIVATE +#if defined(__aarch64__) +#define _MD_MINIMUM_STACK_SIZE 0x20000 +#endif + #undef HAVE_STACK_GROWING_UP /* @@ -186,7 +192,7 @@ extern PRInt32 _PR_ppc_AtomicSet(PRInt32 *val, PRInt32 newval); }) #endif -#if defined(__arm__) +#if defined(__arm__) || defined(__aarch64__) #if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) /* Use GCC built-in functions */ #define _PR_HAVE_ATOMIC_OPS |