diff options
author | Alexander Ederer <88375058+aceunity@users.noreply.github.com> | 2021-12-02 19:25:24 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-02 19:25:24 +0300 |
commit | b994dff67511d4014867d55794ca392eb58ee694 (patch) | |
tree | b2499c58934db9e7395fe73c62af7cc9317dffb6 | |
parent | b8a4d0dfcd7545e2a422237db0af75f72cf10e96 (diff) | |
parent | 037cecfcebd8a9e6c005af092f49133507179dd8 (diff) |
Merge pull request #67 from Unity-Technologies/platform/hmi/qnx
QNX Platform
-rw-r--r-- | include/private/gcconfig.h | 22 | ||||
-rw-r--r-- | os_dep.c | 11 |
2 files changed, 27 insertions, 6 deletions
diff --git a/include/private/gcconfig.h b/include/private/gcconfig.h index 242f0a0a..7ecaf955 100644 --- a/include/private/gcconfig.h +++ b/include/private/gcconfig.h @@ -106,10 +106,20 @@ EXTERN_C_BEGIN /* And one for QNX: */ # if defined(__QNX__) -# define I386 +# define QNX_STACKBOTTOM 1 +# if defined(__aarch64__) +# define AARCH64 +# elif defined(__arm__) || defined(__ARM__) +# define ARM32 +# elif defined(__amd64) || defined(__X86_64__) +# define X86_64 +# elif defined(__X86__) +# define I386 +# else +# error Unknown QNX target architecture detected. +# endif # define OS_TYPE "QNX" # define SA_RESTART 0 -# define HEURISTIC1 extern char etext[]; extern int _end[]; # define DATASTART ((ptr_t)(etext)) @@ -155,7 +165,7 @@ EXTERN_C_BEGIN # if defined(__aarch64__) # define AARCH64 # if !defined(LINUX) && !defined(DARWIN) && !defined(FREEBSD) \ - && !defined(NN_BUILD_TARGET_PLATFORM_NX) + && !defined(NN_BUILD_TARGET_PLATFORM_NX) && !defined(__QNX__) # define NOSYS # define mach_type_known # endif @@ -169,7 +179,7 @@ EXTERN_C_BEGIN && !defined(__CEGCC__) && !defined(NN_PLATFORM_CTR) \ && !defined(NN_BUILD_TARGET_PLATFORM_NX) \ && !defined(GC_NO_NOSYS) && !defined(SN_TARGET_PSP2) \ - && !defined(SYMBIAN) + && !defined(SYMBIAN) && !defined(__QNX__) # define NOSYS # define mach_type_known # endif @@ -3022,7 +3032,7 @@ EXTERN_C_BEGIN #if defined(SVR4) || defined(LINUX) || defined(IRIX5) || defined(HPUX) \ || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \ || defined(DGUX) || defined(BSD) || defined(HAIKU) || defined(HURD) \ - || defined(AIX) || defined(DARWIN) || defined(OSF1) + || defined(AIX) || defined(DARWIN) || defined(OSF1) || defined(__QNX__) # define UNIX_LIKE /* Basic Unix-like system calls work. */ #endif @@ -3146,7 +3156,7 @@ EXTERN_C_BEGIN #if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HAIKU) \ || defined(HURD) || defined(OPENBSD) \ - || defined(ARM32) \ + || defined(ARM32) || defined(__QNX__) \ || defined(AVR32) || defined(MIPS) \ || defined(NIOS2) || defined(OR1K))) \ || (defined(LINUX) && !defined(__gnu_linux__)) \ @@ -1169,6 +1169,15 @@ GC_INNER size_t GC_page_size = 0; } #endif /* LINUX_STACKBOTTOM */ +#ifdef QNX_STACKBOTTOM + + STATIC ptr_t GC_qnx_main_stack_base(void) + { + return (ptr_t)__builtin_frame_address(0); + } + +#endif /* QNX_STACKBOTTOM */ + #ifdef FREEBSD_STACKBOTTOM /* This uses an undocumented sysctl call, but at least one expert */ /* believes it will stay. */ @@ -1268,6 +1277,8 @@ GC_INNER size_t GC_page_size = 0; # endif # elif defined(LINUX_STACKBOTTOM) result = GC_linux_main_stack_base(); +# elif defined(QNX_STACKBOTTOM) + result = GC_qnx_main_stack_base(); # elif defined(FREEBSD_STACKBOTTOM) result = GC_freebsd_main_stack_base(); # elif defined(HEURISTIC2) |