aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/arm64/inst.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/internal/obj/arm64/inst.go')
-rw-r--r--src/cmd/internal/obj/arm64/inst.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/arm64/inst.go b/src/cmd/internal/obj/arm64/inst.go
index 0bf4b9950d..ed415c3ee3 100644
--- a/src/cmd/internal/obj/arm64/inst.go
+++ b/src/cmd/internal/obj/arm64/inst.go
@@ -146,6 +146,9 @@ func aclass(a *obj.Addr) AClass {
if a.Type == obj.TYPE_MEM {
return AC_MEMEXT
}
+ if a.Type == obj.TYPE_SPECIAL {
+ return AC_SPECIAL
+ }
panic("unknown AClass")
}
@@ -332,6 +335,20 @@ func addrComponent(a *obj.Addr, acl AClass, index int) uint32 {
default:
panic(fmt.Errorf("unknown elm index at %d in AClass %d", index, acl))
}
+ // AClass: AC_SPECIAL
+ // GNU mnemonic: <special>
+ // Go mnemonic:
+ // special
+ // Encoding:
+ // Type = TYPE_SPECIAL
+ // Offset = SpecialOperand enum value
+ case AC_SPECIAL:
+ switch index {
+ case 0:
+ return uint32(a.Offset)
+ default:
+ panic(fmt.Errorf("unknown elm index at %d in AClass %d", index, acl))
+ }
// AClass: AC_MEMEXT
// GNU mnemonic: [<reg1>.<T1>, <reg2>.<T2>, <mod> <amount>]
// Go mnemonic: