From ecee4a32918c5e575303530abb9a504a235a1c71 Mon Sep 17 00:00:00 2001 From: eric fang Date: Thu, 31 Mar 2022 07:34:01 +0000 Subject: [PATCH] cmd/internal/obj/arm64: fix encoding error for SYS instruction Currently using the SYS instruction will report the "illegal combination" error. This is because the assembler parser treats the register operand as p.To, while optab defines it as p.Reg. This CL fixes this bug. Change-Id: I57799a7c19934b0c62278948f4efaa41001593a4 Reviewed-on: https://go-review.googlesource.com/c/go/+/396796 Run-TryBot: Eric Fang TryBot-Result: Gopher Robot Reviewed-by: Cherry Mui Trust: Eric Fang --- src/cmd/asm/internal/asm/testdata/arm64.s | 2 ++ src/cmd/internal/obj/arm64/asm7.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cmd/asm/internal/asm/testdata/arm64.s b/src/cmd/asm/internal/asm/testdata/arm64.s index 8a7dd299aa..03f0c46cac 100644 --- a/src/cmd/asm/internal/asm/testdata/arm64.s +++ b/src/cmd/asm/internal/asm/testdata/arm64.s @@ -1627,4 +1627,6 @@ again: MSR R13, ZCR_EL1 // 0d1218d5 MRS ZCR_EL1, R23 // 171238d5 MSR R17, ZCR_EL1 // 111218d5 + SYS $32768, R1 // 018008d5 + SYS $32768 // 1f8008d5 END diff --git a/src/cmd/internal/obj/arm64/asm7.go b/src/cmd/internal/obj/arm64/asm7.go index 244430eb8f..bf33da50c1 100644 --- a/src/cmd/internal/obj/arm64/asm7.go +++ b/src/cmd/internal/obj/arm64/asm7.go @@ -843,7 +843,7 @@ var optab = []Optab{ {ADMB, C_VCON, C_NONE, C_NONE, C_NONE, 51, 4, 0, 0, 0}, {AHINT, C_VCON, C_NONE, C_NONE, C_NONE, 52, 4, 0, 0, 0}, {ASYS, C_VCON, C_NONE, C_NONE, C_NONE, 50, 4, 0, 0, 0}, - {ASYS, C_VCON, C_REG, C_NONE, C_NONE, 50, 4, 0, 0, 0}, + {ASYS, C_VCON, C_NONE, C_NONE, C_REG, 50, 4, 0, 0, 0}, {ASYSL, C_VCON, C_NONE, C_NONE, C_REG, 50, 4, 0, 0, 0}, /* encryption instructions */ -- 2.50.0