diff --git a/include/tscore/ink_queue.h b/include/tscore/ink_queue.h index 6d242cd9f15..fd215d713f7 100644 --- a/include/tscore/ink_queue.h +++ b/include/tscore/ink_queue.h @@ -136,7 +136,11 @@ union head_p { #define SET_FREELIST_POINTER_VERSION(_x, _p, _v) \ (_x).s.pointer = _p; \ (_x).s.version = _v -#elif defined(__x86_64__) || defined(__ia64__) || defined(__powerpc64__) || defined(__aarch64__) || defined(__mips64) +#elif defined(__aarch64__) +#define FREELIST_POINTER(_x) ((void *)((((intptr_t)(_x).data) & 0x000FFFFFFFFFFFFFULL))) +#define FREELIST_VERSION(_x) (((intptr_t)(_x).data) >> 52) +#define SET_FREELIST_POINTER_VERSION(_x, _p, _v) (_x).data = (((intptr_t)(_p)) | (((_v)&0xFFFULL) << 52)) +#elif defined(__x86_64__) || defined(__ia64__) || defined(__powerpc64__) || defined(__mips64) #define FREELIST_POINTER(_x) \ ((void *)(((((intptr_t)(_x).data) << 16) >> 16) | (((~((((intptr_t)(_x).data) << 16 >> 63) - 1)) >> 48) << 48))) // sign extend #define FREELIST_VERSION(_x) (((intptr_t)(_x).data) >> 48)