|  | // 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 |