diff options
| author | Meng Zhuo <mengzhuo@iscas.ac.cn> | 2025-09-03 16:43:54 +0800 |
|---|---|---|
| committer | Meng Zhuo <mengzhuo@iscas.ac.cn> | 2025-09-09 19:42:25 -0700 |
| commit | b9a4a09b0fbb54b533f847c784c807db95f68d3b (patch) | |
| tree | 2bb408cff83480987328257afb8f91364f486369 /src/cmd/internal/obj | |
| parent | 4dac9e093ff520af08f0b83f53b4fabac8db5321 (diff) | |
| download | go-b9a4a09b0fbb54b533f847c784c807db95f68d3b.tar.xz | |
runtime: remove duff support for riscv64
Change-Id: I987d9f49fbd2650eef4224f72271bf752c54d39c
Reviewed-on: https://go-review.googlesource.com/c/go/+/700538
Reviewed-by: Mark Freeman <markfreeman@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Mark Ryan <markdryan@rivosinc.com>
Diffstat (limited to 'src/cmd/internal/obj')
| -rw-r--r-- | src/cmd/internal/obj/riscv/obj.go | 44 |
1 files changed, 3 insertions, 41 deletions
diff --git a/src/cmd/internal/obj/riscv/obj.go b/src/cmd/internal/obj/riscv/obj.go index 44edb8d841..40f143be5c 100644 --- a/src/cmd/internal/obj/riscv/obj.go +++ b/src/cmd/internal/obj/riscv/obj.go @@ -37,7 +37,7 @@ func buildop(ctxt *obj.Link) {} func jalToSym(ctxt *obj.Link, p *obj.Prog, lr int16) { switch p.As { - case obj.ACALL, obj.AJMP, obj.ARET, obj.ADUFFZERO, obj.ADUFFCOPY: + case obj.ACALL, obj.AJMP, obj.ARET: default: ctxt.Diag("unexpected Prog in jalToSym: %v", p) return @@ -162,42 +162,6 @@ func progedit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) { // Rewrite p, if necessary, to access global data via the global offset table. func rewriteToUseGot(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) { - if p.As == obj.ADUFFCOPY || p.As == obj.ADUFFZERO { - // ADUFFxxx $offset - // becomes - // MOV runtime.duffxxx@GOT, REG_TMP - // ADD $offset, REG_TMP - // CALL REG_TMP - var sym *obj.LSym - if p.As == obj.ADUFFCOPY { - sym = ctxt.LookupABI("runtime.duffcopy", obj.ABIInternal) - } else { - sym = ctxt.LookupABI("runtime.duffzero", obj.ABIInternal) - } - offset := p.To.Offset - p.As = AMOV - p.From.Type = obj.TYPE_MEM - p.From.Name = obj.NAME_GOTREF - p.From.Sym = sym - p.To.Type = obj.TYPE_REG - p.To.Reg = REG_TMP - p.To.Name = obj.NAME_NONE - p.To.Offset = 0 - p.To.Sym = nil - - p1 := obj.Appendp(p, newprog) - p1.As = AADD - p1.From.Type = obj.TYPE_CONST - p1.From.Offset = offset - p1.To.Type = obj.TYPE_REG - p1.To.Reg = REG_TMP - - p2 := obj.Appendp(p1, newprog) - p2.As = obj.ACALL - p2.To.Type = obj.TYPE_REG - p2.To.Reg = REG_TMP - } - // We only care about global data: NAME_EXTERN means a global // symbol in the Go sense and p.Sym.Local is true for a few internally // defined symbols. @@ -407,7 +371,7 @@ func containsCall(sym *obj.LSym) bool { // CALLs are CALL or JAL(R) with link register LR. for p := sym.Func().Text; p != nil; p = p.Link { switch p.As { - case obj.ACALL, obj.ADUFFZERO, obj.ADUFFCOPY: + case obj.ACALL: return true case AJAL, AJALR: if p.From.Type == obj.TYPE_REG && p.From.Reg == REG_LR { @@ -586,7 +550,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { p.From.Reg = REG_SP } - case obj.ACALL, obj.ADUFFZERO, obj.ADUFFCOPY: + case obj.ACALL: switch p.To.Type { case obj.TYPE_MEM: jalToSym(ctxt, p, REG_LR) @@ -2634,8 +2598,6 @@ var instructions = [ALAST & obj.AMask]instructionData{ obj.APCDATA: {enc: pseudoOpEncoding}, obj.ATEXT: {enc: pseudoOpEncoding}, obj.ANOP: {enc: pseudoOpEncoding}, - obj.ADUFFZERO: {enc: pseudoOpEncoding}, - obj.ADUFFCOPY: {enc: pseudoOpEncoding}, obj.APCALIGN: {enc: pseudoOpEncoding}, } |
