| // Copyright 2022 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build linux && (ppc64 || ppc64le) |
| |
| #include "textflag.h" |
| |
| // func Syscall6(num, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, errno uintptr) |
| TEXT ·Syscall6<ABIInternal>(SB),NOSPLIT,$0-80 |
| MOVD R3, R10 // Move syscall number to R10. SYSCALL will move it R0, and restore R0. |
| MOVD R4, R3 |
| MOVD R5, R4 |
| MOVD R6, R5 |
| MOVD R7, R6 |
| MOVD R8, R7 |
| MOVD R9, R8 |
| SYSCALL R10 |
| MOVD $-1, R6 |
| ISEL CR0SO, R3, R0, R5 // errno = (error) ? R3 : 0 |
| ISEL CR0SO, R6, R3, R3 // r1 = (error) ? -1 : 0 |
| MOVD $0, R4 // r2 is not used on linux/ppc64 |
| RET |