diff options
Diffstat (limited to 'libc/platform/bionic/macros.h')
-rw-r--r-- | libc/platform/bionic/macros.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libc/platform/bionic/macros.h b/libc/platform/bionic/macros.h index 28a69e6d7..076cff116 100644 --- a/libc/platform/bionic/macros.h +++ b/libc/platform/bionic/macros.h @@ -83,11 +83,15 @@ char (&ArraySizeHelper(T (&array)[N]))[N]; // NOLINT(readability/casting) #define __BIONIC_FALLTHROUGH #endif -template <typename T> -static inline T* untag_address(T* p) { +static inline uintptr_t untag_address(uintptr_t p) { #if defined(__aarch64__) - return reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p) & ((1ULL << 56) - 1)); + return p & ((1ULL << 56) - 1); #else return p; #endif } + +template <typename T> +static inline T* untag_address(T* p) { + return reinterpret_cast<T*>(untag_address(reinterpret_cast<uintptr_t>(p))); +} |