Skip to content
This repository has been archived by the owner on Dec 31, 2020. It is now read-only.

Commit

Permalink
Apply patch provided in issue #224. Add support for ARM64.
Browse files Browse the repository at this point in the history
  • Loading branch information
castano committed Jul 20, 2015
1 parent 4ef408b commit 5861758
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 3 deletions.
7 changes: 6 additions & 1 deletion extern/poshlib/posh.h
Expand Up @@ -493,6 +493,11 @@ HP-UX C/C++ Compiler:
# define POSH_CPU_STRING "ARM"
#endif

#if defined __aarch64__
# define POSH_CPU_AARCH64 1
# define POSH_CPU_STRING "ARM64"
#endif

#if defined mips || defined __mips__ || defined __MIPS__ || defined _MIPS
# define POSH_CPU_MIPS 1
# if defined _R5900
Expand Down Expand Up @@ -666,7 +671,7 @@ HP-UX C/C++ Compiler:
** the MIPS series, so we have to be careful about those.
** ----------------------------------------------------------------------------
*/
#if defined POSH_CPU_X86 || defined POSH_CPU_AXP || defined POSH_CPU_STRONGARM || defined POSH_OS_WIN32 || defined POSH_OS_WINCE || defined __MIPSEL__
#if defined POSH_CPU_X86 || defined POSH_CPU_AXP || defined POSH_CPU_STRONGARM || defined POSH_CPU_AARCH64 || defined POSH_OS_WIN32 || defined POSH_OS_WINCE || defined __MIPSEL__
# define POSH_ENDIAN_STRING "little"
# define POSH_LITTLE_ENDIAN 1
#else
Expand Down
3 changes: 3 additions & 0 deletions src/nvcore/Debug.cpp
Expand Up @@ -656,6 +656,9 @@ namespace
# elif NV_CPU_PPC
ucontext_t * ucp = (ucontext_t *)secret;
return (void *) ucp->uc_mcontext.regs->nip;
# elif NV_CPU_AARCH64
ucontext_t * ucp = (ucontext_t *)secret;
return (void *) ucp->uc_mcontext.pc;
# else
# error "Unknown CPU"
# endif
Expand Down
3 changes: 3 additions & 0 deletions src/nvcore/nvcore.h
Expand Up @@ -93,6 +93,7 @@
// NV_CPU_X86_64
// NV_CPU_PPC
// NV_CPU_ARM
// NV_CPU_AARCH64

#define NV_CPU_STRING POSH_CPU_STRING

Expand All @@ -105,6 +106,8 @@
# define NV_CPU_PPC 1
#elif defined POSH_CPU_STRONGARM
# define NV_CPU_ARM 1
#elif defined POSH_CPU_AARCH64
# define NV_CPU_AARCH64 1
#else
# error "Unsupported CPU"
#endif
Expand Down
4 changes: 2 additions & 2 deletions src/nvthread/Atomic.h
Expand Up @@ -58,7 +58,7 @@ namespace nv {
uint32 ret = *ptr; // on x86, loads are Acquire
nvCompilerReadBarrier();
return ret;
#elif POSH_CPU_STRONGARM
#elif POSH_CPU_STRONGARM || POSH_CPU_AARCH64
// need more specific cpu type for armv7?
// also utilizes a full barrier
// currently treating laod like x86 - this could be wrong
Expand All @@ -82,7 +82,7 @@ namespace nv {
nvCompilerWriteBarrier();
*ptr = value; // on x86, stores are Release
//nvCompilerWriteBarrier(); // @@ IC: Where does this barrier go? In nvtt it was after, in Witness before. Not sure which one is right.
#elif POSH_CPU_STRONGARM
#elif POSH_CPU_STRONGARM || POSH_CPU_AARCH64
// this is the easiest but slowest way to do this
nvCompilerReadWriteBarrier();
*ptr = value; //strex?
Expand Down

0 comments on commit 5861758

Please sign in to comment.