mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/obj/mips: add support of LLV, SCV, NOOP instructions
LLV and SCV are 64-bit load-linked and store-conditional. They were used in runtime as #define WORD. Change them to normal instruction form. NOOP is hardware no-op. It was written as WORD $0. Make a name for it for better disassembly output. Fixes #12561. Fixes #18238. Change-Id: I82c667ce756fa83ef37b034b641e8c4366335e83 Reviewed-on: https://go-review.googlesource.com/40297 Reviewed-by: Minux Ma <minux@golang.org> Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
84a51432a8
commit
b53acd89db
7 changed files with 61 additions and 56 deletions
|
|
@ -786,16 +786,8 @@ func (c *ctxt0) stacksplit(p *obj.Prog, framesize int32) *obj.Prog {
|
|||
|
||||
func (c *ctxt0) addnop(p *obj.Prog) {
|
||||
q := c.newprog()
|
||||
// we want to use the canonical NOP (SLL $0,R0,R0) here,
|
||||
// however, as the assembler will always replace $0
|
||||
// as R0, we have to resort to manually encode the SLL
|
||||
// instruction as WORD $0.
|
||||
q.As = AWORD
|
||||
q.As = ANOOP
|
||||
q.Pos = p.Pos
|
||||
q.From.Type = obj.TYPE_CONST
|
||||
q.From.Name = obj.NAME_NONE
|
||||
q.From.Offset = 0
|
||||
|
||||
q.Link = p.Link
|
||||
p.Link = q
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue