github.com/twelsh-aw/go/src@v0.0.0-20230516233729-a56fe86a7c81/runtime/sys_openbsd3.go (about) 1 // Copyright 2020 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build openbsd && !mips64 6 7 package runtime 8 9 import ( 10 "internal/abi" 11 "unsafe" 12 ) 13 14 // The X versions of syscall expect the libc call to return a 64-bit result. 15 // Otherwise (the non-X version) expects a 32-bit result. 16 // This distinction is required because an error is indicated by returning -1, 17 // and we need to know whether to check 32 or 64 bits of the result. 18 // (Some libc functions that return 32 bits put junk in the upper 32 bits of AX.) 19 20 //go:linkname syscall_syscall syscall.syscall 21 //go:nosplit 22 //go:cgo_unsafe_args 23 func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2, err uintptr) { 24 entersyscall() 25 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall)), unsafe.Pointer(&fn)) 26 exitsyscall() 27 return 28 } 29 func syscall() 30 31 //go:linkname syscall_syscallX syscall.syscallX 32 //go:nosplit 33 //go:cgo_unsafe_args 34 func syscall_syscallX(fn, a1, a2, a3 uintptr) (r1, r2, err uintptr) { 35 entersyscall() 36 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscallX)), unsafe.Pointer(&fn)) 37 exitsyscall() 38 return 39 } 40 func syscallX() 41 42 //go:linkname syscall_syscall6 syscall.syscall6 43 //go:nosplit 44 //go:cgo_unsafe_args 45 func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) { 46 entersyscall() 47 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall6)), unsafe.Pointer(&fn)) 48 exitsyscall() 49 return 50 } 51 func syscall6() 52 53 //go:linkname syscall_syscall6X syscall.syscall6X 54 //go:nosplit 55 //go:cgo_unsafe_args 56 func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) { 57 entersyscall() 58 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall6X)), unsafe.Pointer(&fn)) 59 exitsyscall() 60 return 61 } 62 func syscall6X() 63 64 //go:linkname syscall_syscall10 syscall.syscall10 65 //go:nosplit 66 //go:cgo_unsafe_args 67 func syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2, err uintptr) { 68 entersyscall() 69 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall10)), unsafe.Pointer(&fn)) 70 exitsyscall() 71 return 72 } 73 func syscall10() 74 75 //go:linkname syscall_syscall10X syscall.syscall10X 76 //go:nosplit 77 //go:cgo_unsafe_args 78 func syscall_syscall10X(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2, err uintptr) { 79 entersyscall() 80 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall10X)), unsafe.Pointer(&fn)) 81 exitsyscall() 82 return 83 } 84 func syscall10X() 85 86 //go:linkname syscall_rawSyscall syscall.rawSyscall 87 //go:nosplit 88 //go:cgo_unsafe_args 89 func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2, err uintptr) { 90 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall)), unsafe.Pointer(&fn)) 91 return 92 } 93 94 //go:linkname syscall_rawSyscall6 syscall.rawSyscall6 95 //go:nosplit 96 //go:cgo_unsafe_args 97 func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) { 98 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall6)), unsafe.Pointer(&fn)) 99 return 100 } 101 102 //go:linkname syscall_rawSyscall6X syscall.rawSyscall6X 103 //go:nosplit 104 //go:cgo_unsafe_args 105 func syscall_rawSyscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) { 106 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall6X)), unsafe.Pointer(&fn)) 107 return 108 } 109 110 //go:linkname syscall_rawSyscall10X syscall.rawSyscall10X 111 //go:nosplit 112 //go:cgo_unsafe_args 113 func syscall_rawSyscall10X(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2, err uintptr) { 114 libcCall(unsafe.Pointer(abi.FuncPCABI0(syscall10X)), unsafe.Pointer(&fn)) 115 return 116 }