diff options
| author | Yao Zhang <lunaria21@gmail.com> | 2015-09-10 11:25:58 -0400 |
|---|---|---|
| committer | Minux Ma <minux@golang.org> | 2015-11-12 04:46:17 +0000 |
| commit | 424738e43ec3c775f7d0c36a90791eaca5dd85d1 (patch) | |
| tree | e2018a202e7a1c028b350f798939992441eab068 /src/runtime/mkduff.go | |
| parent | b4501ac4a59d78f59b92f00cc4ba1e364298a44d (diff) | |
| download | go-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.go | 23 |
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.") +} |
