aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/syscall_windows.go
diff options
context:
space:
mode:
authorHajime Hoshi <hajimehoshi@gmail.com>2018-11-03 02:19:47 +0900
committerBrad Fitzpatrick <bradfitz@golang.org>2018-11-02 17:53:18 +0000
commite8df7df68f8d3b182570049879e780fec57a1878 (patch)
tree8b744e08d19e747ad3c9e3ea29c0f9da6d06879a /src/runtime/syscall_windows.go
parentd6e204e71ff68b69af30b8ff0a0026bca1cbee10 (diff)
downloadgo-e8df7df68f8d3b182570049879e780fec57a1878.tar.gz
go-e8df7df68f8d3b182570049879e780fec57a1878.zip
syscall: add Syscall18 on Windows
There are some OpenGL functions that take more than 15 arguments. This CL adds Syscall18 to enable to call such functions on Windows via syscall functions. Fixes #28434 Change-Id: Ic7e37dda9cadf4516183e98166bfc52844ad2bbe Reviewed-on: https://go-review.googlesource.com/c/147117 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/runtime/syscall_windows.go')
-rw-r--r--src/runtime/syscall_windows.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/runtime/syscall_windows.go b/src/runtime/syscall_windows.go
index 0858efaf61..8cfc71124a 100644
--- a/src/runtime/syscall_windows.go
+++ b/src/runtime/syscall_windows.go
@@ -238,3 +238,16 @@ func syscall_Syscall15(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
cgocall(asmstdcallAddr, unsafe.Pointer(c))
return c.r1, c.r2, c.err
}
+
+//go:linkname syscall_Syscall18 syscall.Syscall18
+//go:nosplit
+func syscall_Syscall18(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 uintptr) (r1, r2, err uintptr) {
+ lockOSThread()
+ defer unlockOSThread()
+ c := &getg().m.syscall
+ c.fn = fn
+ c.n = nargs
+ c.args = uintptr(noescape(unsafe.Pointer(&a1)))
+ cgocall(asmstdcallAddr, unsafe.Pointer(c))
+ return c.r1, c.r2, c.err
+}