]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm, cmd/internal/obj/mips: add an alias of RSB on mips64x
authorCherry Zhang <lunaria21@gmail.com>
Thu, 28 Apr 2016 02:17:44 +0000 (22:17 -0400)
committerMinux Ma <minux@golang.org>
Sun, 1 May 2016 02:36:37 +0000 (02:36 +0000)
Change-Id: I724ce0a48c1aeed14267c049fa415a6fa2fffbcf
Reviewed-on: https://go-review.googlesource.com/19864
Reviewed-by: Minux Ma <minux@golang.org>
src/cmd/asm/internal/arch/arch.go
src/cmd/asm/internal/asm/operand_test.go
src/cmd/internal/obj/mips/a.out.go
src/cmd/internal/obj/mips/list0.go

index bd9658301cf0f37775782c18b8b7ebe5d661abfa..4b5b46a78c97d6215e884779d48387c66c3fe6e4 100644 (file)
@@ -393,6 +393,9 @@ func archMips64() *Arch {
        // Avoid unintentionally clobbering g using R30.
        delete(register, "R30")
        register["g"] = mips.REG_R30
+       // Avoid unintentionally clobbering RSB using R28.
+       delete(register, "R28")
+       register["RSB"] = mips.REG_R28
        registerPrefix := map[string]bool{
                "F":   true,
                "FCR": true,
index 066d55a394391af57b7070114f11578ac03c5ca4..eafc8a361e489905c5010d59c581310c42d2090b 100644 (file)
@@ -512,7 +512,6 @@ var mips64OperandTests = []operandTest{
        {"R25", "R25"},
        {"R26", "R26"},
        {"R27", "R27"},
-       {"R28", "R28"},
        {"R29", "R29"},
        {"R3", "R3"},
        {"R31", "R31"},
@@ -525,6 +524,7 @@ var mips64OperandTests = []operandTest{
        {"LO", "LO"},
        {"a(FP)", "a(FP)"},
        {"g", "g"},
+       {"RSB", "RSB"},
        {"ret+8(FP)", "ret+8(FP)"},
        {"runtime·abort(SB)", "runtime.abort(SB)"},
        {"·AddUint32(SB)", "\"\".AddUint32(SB)"},
index da0d2616f76d580677e2091b8dbc9f820cb6a9eb..44add12e86450c3a1fa38ee9564cec46326d433a 100644 (file)
@@ -187,7 +187,7 @@ const (
 
        REGZERO  = REG_R0 /* set to zero */
        REGSP    = REG_R29
-       REGSB    = REG_R30
+       REGSB    = REG_R28
        REGLINK  = REG_R31
        REGRET   = REG_R1
        REGARG   = -1      /* -1 disables passing the first argument in register */
index 40dc4605c9b36e225b72d21a45896033147cb36b..ca80e8b96d30569c412180fa3e5ce79ca02170c9 100644 (file)
@@ -47,6 +47,10 @@ func Rconv(r int) string {
                // Special case.
                return "g"
        }
+       if r == REGSB {
+               // Special case.
+               return "RSB"
+       }
        if REG_R0 <= r && r <= REG_R31 {
                return fmt.Sprintf("R%d", r-REG_R0)
        }