c.registers = registersPPC64[:]
c.gpRegMask = gpRegMaskPPC64
c.fpRegMask = fpRegMaskPPC64
- //c.intParamRegs = paramIntRegPPC64
- //c.floatParamRegs = paramFloatRegPPC64
+ c.intParamRegs = paramIntRegPPC64
+ c.floatParamRegs = paramFloatRegPPC64
c.FPReg = framepointerRegPPC64
c.LinkReg = linkRegPPC64
- c.noDuffDevice = true // TODO: Resolve PPC64 DuffDevice (has zero, but not copy)
c.hasGReg = true
case "mips64":
c.BigEndian = true
REGSB = REG_R2
REGRET = REG_R3
REGARG = -1 /* -1 disables passing the first argument in register */
- REGRT1 = REG_R3 /* reserved for runtime, duffzero and duffcopy */
- REGRT2 = REG_R4 /* reserved for runtime, duffcopy */
+ REGRT1 = REG_R20 /* reserved for runtime, duffzero and duffcopy */
+ REGRT2 = REG_R21 /* reserved for runtime, duffcopy */
REGMIN = REG_R7 /* register variables allocated from here to REGMAX */
REGCTXT = REG_R11 /* context for closures */
REGTLS = REG_R13 /* C ABI TLS base pointer */
#include "textflag.h"
-TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
- MOVDU R0, 8(R3)
+TEXT runtime·duffzero<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
+ MOVDU R0, 8(R20)
RET
-TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0
- UNDEF
+TEXT runtime·duffcopy<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ MOVDU 8(R20), R5
+ MOVDU R5, 8(R21)
+ RET
// R0: always zero
// R3 (aka REGRT1): ptr to memory to be zeroed - 8
// On return, R3 points to the last zeroed dword.
- fmt.Fprintln(w, "TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0")
+ fmt.Fprintln(w, "TEXT runtime·duffzero<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0")
for i := 0; i < 128; i++ {
- fmt.Fprintln(w, "\tMOVDU\tR0, 8(R3)")
+ fmt.Fprintln(w, "\tMOVDU\tR0, 8(R20)")
}
fmt.Fprintln(w, "\tRET")
}
func copyPPC64x(w io.Writer) {
// duffcopy is not used on PPC64.
- fmt.Fprintln(w, "TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0")
- fmt.Fprintln(w, "\tUNDEF")
+ fmt.Fprintln(w, "TEXT runtime·duffcopy<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0")
+ for i := 0; i < 128; i++ {
+ fmt.Fprintln(w, "\tMOVDU\t8(R20), R5")
+ fmt.Fprintln(w, "\tMOVDU\tR5, 8(R21)")
+ }
+ fmt.Fprintln(w, "\tRET")
}
func tagsMIPS64x(w io.Writer) {