blob: 3e985edea05c8830b65f467e563dc1b0a4b77c99 [file] [log] [blame]
// 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