diff --git a/src/arm.h b/src/arm.h index 05c3e30cab..07035f33df 100644 --- a/src/arm.h +++ b/src/arm.h @@ -45,6 +45,8 @@ # define LINK_REGISTER(context) \ THREAD_STATE_LINK(context->uc_mcontext->FIELD(ss)) #elif (defined __QNX__) +# include "arm/smpxchg.h" + # define IP_REGISTER(context) (context->uc_mcontext.cpu.gpr[ARM_REG_PC]) # define STACK_REGISTER(context) (context->uc_mcontext.cpu.gpr[ARM_REG_SP]) # define THREAD_REGISTER(context) (context->uc_mcontext.cpu.gpr[ARM_REG_IP]) @@ -117,6 +119,8 @@ atomicCompareAndSwap32(uint32_t* p, uint32_t old, uint32_t new_) { #ifdef __APPLE__ return OSAtomicCompareAndSwap32(old, new_, reinterpret_cast(p)); +#elif (defined __QNX__) + return old == _smp_cmpxchg(p, old, new_); #else int r = __kernel_cmpxchg(static_cast(old), static_cast(new_), reinterpret_cast(p)); return (!r ? true : false); @@ -147,7 +151,7 @@ dynamicCall(void* function, uintptr_t* arguments, uint8_t* argumentTypes, const unsigned VfpCount = 16; uintptr_t vfpTable[VfpCount]; unsigned vfpIndex = 0; - unsigned vfpBackfillIndex = 0; + unsigned vfpBackfillIndex UNUSED = 0; uintptr_t stack[(argumentCount * 8) / BytesPerWord]; // is > argumentSize to account for padding unsigned stackIndex = 0;