aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/mkduff.go
diff options
context:
space:
mode:
authorYao Zhang <lunaria21@gmail.com>2015-09-10 11:25:58 -0400
committerMinux Ma <minux@golang.org>2015-11-12 04:46:17 +0000
commit424738e43ec3c775f7d0c36a90791eaca5dd85d1 (patch)
treee2018a202e7a1c028b350f798939992441eab068 /src/runtime/mkduff.go
parentb4501ac4a59d78f59b92f00cc4ba1e364298a44d (diff)
downloadgo-424738e43ec3c775f7d0c36a90791eaca5dd85d1.tar.xz
runtime: added assembly part of linux/mips64{,le} support
Change-Id: I9e94027ef66c88007107de2b2b75c3d7cf1352af Reviewed-on: https://go-review.googlesource.com/14467 Reviewed-by: Minux Ma <minux@golang.org>
Diffstat (limited to 'src/runtime/mkduff.go')
-rw-r--r--src/runtime/mkduff.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/runtime/mkduff.go b/src/runtime/mkduff.go
index 821906cc2b..0e7cc66806 100644
--- a/src/runtime/mkduff.go
+++ b/src/runtime/mkduff.go
@@ -37,6 +37,7 @@ func main() {
gen("arm", notags, zeroARM, copyARM)
gen("arm64", notags, zeroARM64, copyARM64)
gen("ppc64x", tagsPPC64x, zeroPPC64x, copyPPC64x)
+ gen("mips64x", tagsMIPS64x, zeroMIPS64x, copyMIPS64x)
}
func gen(arch string, tags, zero, copy func(io.Writer)) {
@@ -183,3 +184,25 @@ func zeroPPC64x(w io.Writer) {
func copyPPC64x(w io.Writer) {
fmt.Fprintln(w, "// TODO: Implement runtime·duffcopy.")
}
+
+func tagsMIPS64x(w io.Writer) {
+ fmt.Fprintln(w)
+ fmt.Fprintln(w, "// +build mips64 mips64le")
+ fmt.Fprintln(w)
+}
+
+func zeroMIPS64x(w io.Writer) {
+ // R0: always zero
+ // R1 (aka REGRT1): ptr to memory to be zeroed - 8
+ // On return, R1 points to the last zeroed dword.
+ fmt.Fprintln(w, "TEXT runtime·duffzero(SB), NOSPLIT, $-8-0")
+ for i := 0; i < 128; i++ {
+ fmt.Fprintln(w, "\tMOVV\tR0, 8(R1)")
+ fmt.Fprintln(w, "\tADDV\t$8, R1")
+ }
+ fmt.Fprintln(w, "\tRET")
+}
+
+func copyMIPS64x(w io.Writer) {
+ fmt.Fprintln(w, "// TODO: Implement runtime·duffcopy.")
+}