diff options
author | Hajime Hoshi <hajimehoshi@gmail.com> | 2018-11-03 02:19:47 +0900 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2018-11-02 17:53:18 +0000 |
commit | e8df7df68f8d3b182570049879e780fec57a1878 (patch) | |
tree | 8b744e08d19e747ad3c9e3ea29c0f9da6d06879a /src/runtime/syscall_windows.go | |
parent | d6e204e71ff68b69af30b8ff0a0026bca1cbee10 (diff) | |
download | go-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.go | 13 |
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 +} |