diff options
Diffstat (limited to 'src/cmd/internal/obj/arm64/inst.go')
| -rw-r--r-- | src/cmd/internal/obj/arm64/inst.go | 17 |
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: |
