From 0c15d88974e5bb4285d6cdf6ef125e1e4d438c6d Mon Sep 17 00:00:00 2001
From: Keith Randall <khr@golang.org>
Date: Fri, 25 Apr 2025 10:09:44 -0700
Subject: [PATCH] runtime: fix tag pointers on aix, take 2

Previous fix in CL 667715 wasn't correct for aix.

Change-Id: I44042786079463967165507b15756cf24b9a213a
Reviewed-on: https://go-review.googlesource.com/c/go/+/668036
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
---
 src/runtime/tagptr_64bit.go | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/runtime/tagptr_64bit.go b/src/runtime/tagptr_64bit.go
index 31cbce03b74..586d155dc5b 100644
--- a/src/runtime/tagptr_64bit.go
+++ b/src/runtime/tagptr_64bit.go
@@ -66,6 +66,9 @@ func (tp taggedPointer) pointer() unsafe.Pointer {
 		// val before unpacking.
 		return unsafe.Pointer(uintptr(int64(tp) >> tagBits << tagAlignBits))
 	}
+	if GOOS == "aix" {
+		return unsafe.Pointer(uintptr((tp >> tagBits << tagAlignBits) | 0xa<<56))
+	}
 	return unsafe.Pointer(uintptr(tp >> tagBits << tagAlignBits))
 }
 
-- 
GitLab