| 
									
										
										
										
											2024-04-17 17:10:51 +01:00
										 |  |  | // Copyright 2024 The Libc Authors. All rights reserved. | 
					
						
							|  |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-27 22:53:36 +00:00
										 |  |  | //go:build linux && (amd64 || arm64 || loong64) | 
					
						
							| 
									
										
										
										
											2024-04-17 17:10:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | package libc // import "modernc.org/libc" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"runtime" | 
					
						
							|  |  |  | 	"syscall" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func ___syscall_cp(tls *TLS, n, a, b, c, d, e, f long) long { | 
					
						
							|  |  |  | 	r1, _, err := (syscall.Syscall6(uintptr(n), uintptr(a), uintptr(b), uintptr(c), uintptr(d), uintptr(e), uintptr(f))) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall0(tls *TLS, n long) long { | 
					
						
							|  |  |  | 	switch n { | 
					
						
							|  |  |  | 	case __NR_sched_yield: | 
					
						
							|  |  |  | 		runtime.Gosched() | 
					
						
							|  |  |  | 		return 0 | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		r1, _, err := syscall.Syscall(uintptr(n), 0, 0, 0) | 
					
						
							|  |  |  | 		if err != 0 { | 
					
						
							|  |  |  | 			return long(-err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return long(r1) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall1(tls *TLS, n, a1 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall(uintptr(n), uintptr(a1), 0, 0) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall2(tls *TLS, n, a1, a2 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall(uintptr(n), uintptr(a1), uintptr(a2), 0) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall3(tls *TLS, n, a1, a2, a3 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall(uintptr(n), uintptr(a1), uintptr(a2), uintptr(a3)) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall4(tls *TLS, n, a1, a2, a3, a4 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall6(uintptr(n), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), 0, 0) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall5(tls *TLS, n, a1, a2, a3, a4, a5 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall6(uintptr(n), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5), 0) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func X__syscall6(tls *TLS, n, a1, a2, a3, a4, a5, a6 long) long { | 
					
						
							|  |  |  | 	r1, _, err := syscall.Syscall6(uintptr(n), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5), uintptr(a6)) | 
					
						
							|  |  |  | 	if err != 0 { | 
					
						
							|  |  |  | 		return long(-err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return long(r1) | 
					
						
							|  |  |  | } |