aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorJoel Sing <joel@sing.id.au>2024-06-15 01:29:32 +1000
committerJoel Sing <joel@sing.id.au>2025-02-20 03:20:03 -0800
commit04de448c6d9d0ceab7f04b1f3d44f91e8b129d58 (patch)
tree48dfaf7647a5749f0275c8644f765b0e051f51ce /src/cmd/internal/obj
parent9b842e2e63b660dd5e9ac39bac58a578d7b69824 (diff)
downloadgo-04de448c6d9d0ceab7f04b1f3d44f91e8b129d58.tar.xz
cmd/internal/obj/x86: add support for the endbr64 instruction on amd64
Add support for endbr64, which terminates an indirect branch in 64-bit mode. This is effectively used to mark locations where an indirect branch is permitted to land, when Indirect Branch Tracking (IBT) is enforced on Intel CPUs. Updates #66054 Change-Id: Ib898031711cfaaa6e05c197bfe727ded0bce6f52 Reviewed-on: https://go-review.googlesource.com/c/go/+/649215 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/x86/aenum.go1
-rw-r--r--src/cmd/internal/obj/x86/anames.go1
-rw-r--r--src/cmd/internal/obj/x86/asm6.go1
3 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/x86/aenum.go b/src/cmd/internal/obj/x86/aenum.go
index 79cdd241a2..c9be748b32 100644
--- a/src/cmd/internal/obj/x86/aenum.go
+++ b/src/cmd/internal/obj/x86/aenum.go
@@ -212,6 +212,7 @@ const (
ADPPD
ADPPS
AEMMS
+ AENDBR64
AENTER
AEXTRACTPS
AF2XM1
diff --git a/src/cmd/internal/obj/x86/anames.go b/src/cmd/internal/obj/x86/anames.go
index 3966381e50..43483e959a 100644
--- a/src/cmd/internal/obj/x86/anames.go
+++ b/src/cmd/internal/obj/x86/anames.go
@@ -210,6 +210,7 @@ var Anames = []string{
"DPPD",
"DPPS",
"EMMS",
+ "ENDBR64",
"ENTER",
"EXTRACTPS",
"F2XM1",
diff --git a/src/cmd/internal/obj/x86/asm6.go b/src/cmd/internal/obj/x86/asm6.go
index 95020915ca..3332134141 100644
--- a/src/cmd/internal/obj/x86/asm6.go
+++ b/src/cmd/internal/obj/x86/asm6.go
@@ -1096,6 +1096,7 @@ var optab =
{ADPPD, yxshuf, Pq, opBytes{0x3a, 0x41, 0}},
{ADPPS, yxshuf, Pq, opBytes{0x3a, 0x40, 0}},
{AEMMS, ynone, Pm, opBytes{0x77}},
+ {AENDBR64, ynone, Pf3, opBytes{0x1e, 0xfa}},
{AEXTRACTPS, yextractps, Pq, opBytes{0x3a, 0x17, 0}},
{AENTER, nil, 0, opBytes{}}, // botch
{AFXRSTOR, ysvrs_mo, Pm, opBytes{0xae, 01, 0xae, 01}},