diff --git a/src/cmd/cgo/doc.go b/src/cmd/cgo/doc.go
index 6ac0381..6e6f3c7 100644
--- a/src/cmd/cgo/doc.go
+++ b/src/cmd/cgo/doc.go
@@ -432,7 +432,7 @@
 	var _cgo_be59f0f25121_Cfunc_puts = unsafe.Pointer(&__cgofn__cgo_be59f0f25121_Cfunc_puts)
 
 	func _Cfunc_puts(p0 *_Ctype_char) (r1 _Ctype_int) {
-		_cgo_runtime_cgocall_errno(_cgo_be59f0f25121_Cfunc_puts, uintptr(unsafe.Pointer(&p0)))
+		_cgo_runtime_cgocall(_cgo_be59f0f25121_Cfunc_puts, uintptr(unsafe.Pointer(&p0)))
 		return
 	}
 
@@ -682,7 +682,7 @@
 	var _cgo_gcc_Cfunc_sin = unsafe.Pointer(&__cgo_gcc_Cfunc_sin)
 
 	func _Cfunc_sin(p0 _Ctype_double) (r1 _Ctype_double) {
-		_cgo_runtime_cgocall_errno(_cgo_gcc_Cfunc_sin, uintptr(unsafe.Pointer(&p0)))
+		_cgo_runtime_cgocall(_cgo_gcc_Cfunc_sin, uintptr(unsafe.Pointer(&p0)))
 		return
 	}
 
diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go
index d2a3624..f660442 100644
--- a/src/cmd/cgo/out.go
+++ b/src/cmd/cgo/out.go
@@ -466,7 +466,7 @@
 	if n.AddError {
 		prefix = "errno := "
 	}
-	fmt.Fprintf(fgo2, "\t%s_cgo_runtime_cgocall_errno(%s, %s)\n", prefix, cname, arg)
+	fmt.Fprintf(fgo2, "\t%s_cgo_runtime_cgocall(%s, %s)\n", prefix, cname, arg)
 	if n.AddError {
 		fmt.Fprintf(fgo2, "\tif errno != 0 { r2 = syscall.Errno(errno) }\n")
 	}
@@ -1232,8 +1232,8 @@
 `
 
 const goProlog = `
-//go:linkname _cgo_runtime_cgocall_errno runtime.cgocall_errno
-func _cgo_runtime_cgocall_errno(unsafe.Pointer, uintptr) int32
+//go:linkname _cgo_runtime_cgocall runtime.cgocall
+func _cgo_runtime_cgocall(unsafe.Pointer, uintptr) int32
 
 //go:linkname _cgo_runtime_cmalloc runtime.cmalloc
 func _cgo_runtime_cmalloc(uintptr) unsafe.Pointer
diff --git a/src/runtime/asm_386.s b/src/runtime/asm_386.s
index 49df285..b8a4054 100644
--- a/src/runtime/asm_386.s
+++ b/src/runtime/asm_386.s
@@ -661,19 +661,14 @@
 	POPL	AX
 	RET
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Call fn(arg) on the scheduler stack,
 // aligned appropriately for the gcc ABI.
-// See cgocall.c for more details.
-TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-12
+// See cgocall.go for more details.
+TEXT ·asmcgocall(SB),NOSPLIT,$0-12
 	MOVL	fn+0(FP), AX
 	MOVL	arg+4(FP), BX
-	CALL	asmcgocall<>(SB)
-	MOVL	AX, ret+8(FP)
-	RET
 
-TEXT asmcgocall<>(SB),NOSPLIT,$0-0
-	// fn in AX, arg in BX
 	MOVL	SP, DX
 
 	// Figure out if we need to switch to m->g0 stack.
@@ -707,6 +702,8 @@
 	SUBL	4(SP), SI
 	MOVL	DI, g(CX)
 	MOVL	SI, SP
+
+	MOVL	AX, ret+8(FP)
 	RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
@@ -724,7 +721,7 @@
 	RET
 
 // cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
-// See cgocall.c for more details.
+// See cgocall.go for more details.
 TEXT ·cgocallback_gofunc(SB),NOSPLIT,$12-12
 	NO_LOCAL_POINTERS
 
diff --git a/src/runtime/asm_amd64.s b/src/runtime/asm_amd64.s
index 639ab34..13cca8e 100644
--- a/src/runtime/asm_amd64.s
+++ b/src/runtime/asm_amd64.s
@@ -641,19 +641,14 @@
 	MOVQ	BP, (g_sched+gobuf_bp)(R8)
 	RET
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Call fn(arg) on the scheduler stack,
 // aligned appropriately for the gcc ABI.
-// See cgocall.c for more details.
-TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
+// See cgocall.go for more details.
+TEXT ·asmcgocall(SB),NOSPLIT,$0-20
 	MOVQ	fn+0(FP), AX
 	MOVQ	arg+8(FP), BX
-	CALL	asmcgocall<>(SB)
-	MOVL	AX, ret+16(FP)
-	RET
 
-// asmcgocall common code. fn in AX, arg in BX. returns errno in AX.
-TEXT asmcgocall<>(SB),NOSPLIT,$0-0
 	MOVQ	SP, DX
 
 	// Figure out if we need to switch to m->g0 stack.
@@ -696,6 +691,8 @@
 	SUBQ	40(SP), SI
 	MOVQ	DI, g(CX)
 	MOVQ	SI, SP
+
+	MOVL	AX, ret+16(FP)
 	RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
@@ -713,7 +710,7 @@
 	RET
 
 // cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
-// See cgocall.c for more details.
+// See cgocall.go for more details.
 TEXT ·cgocallback_gofunc(SB),NOSPLIT,$8-24
 	NO_LOCAL_POINTERS
 
diff --git a/src/runtime/asm_amd64p32.s b/src/runtime/asm_amd64p32.s
index fd640ab..c058bde 100644
--- a/src/runtime/asm_amd64p32.s
+++ b/src/runtime/asm_amd64p32.s
@@ -582,9 +582,9 @@
 	MOVL	0(DX), BX
 	JMP	BX	// but first run the deferred function
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Not implemented.
-TEXT runtime·asmcgocall_errno(SB),NOSPLIT,$0-12
+TEXT runtime·asmcgocall(SB),NOSPLIT,$0-12
 	MOVL	0, AX
 	RET
 
diff --git a/src/runtime/asm_arm.s b/src/runtime/asm_arm.s
index 1797fea..874dc4f 100644
--- a/src/runtime/asm_arm.s
+++ b/src/runtime/asm_arm.s
@@ -474,19 +474,14 @@
 	MOVW	R11, (g_sched+gobuf_ctxt)(g)
 	RET
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Call fn(arg) on the scheduler stack,
 // aligned appropriately for the gcc ABI.
-// See cgocall.c for more details.
-TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-12
+// See cgocall.go for more details.
+TEXT ·asmcgocall(SB),NOSPLIT,$0-12
 	MOVW	fn+0(FP), R1
 	MOVW	arg+4(FP), R0
-	BL	asmcgocall<>(SB)
-	MOVW	R0, ret+8(FP)
-	RET
 
-TEXT asmcgocall<>(SB),NOSPLIT,$0-0
-	// fn in R1, arg in R0.
 	MOVW	R13, R2
 	MOVW	g, R4
 
@@ -523,6 +518,8 @@
 	SUB	R2, R1
 	MOVW	R5, R0
 	MOVW	R1, R13
+
+	MOVW	R0, ret+8(FP)
 	RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
@@ -540,7 +537,7 @@
 	RET
 
 // cgocallback_gofunc(void (*fn)(void*), void *frame, uintptr framesize)
-// See cgocall.c for more details.
+// See cgocall.go for more details.
 TEXT	·cgocallback_gofunc(SB),NOSPLIT,$8-12
 	NO_LOCAL_POINTERS
 	
diff --git a/src/runtime/asm_arm64.s b/src/runtime/asm_arm64.s
index ed70eca..50094db 100644
--- a/src/runtime/asm_arm64.s
+++ b/src/runtime/asm_arm64.s
@@ -545,19 +545,14 @@
 	MOVD	$0, (g_sched+gobuf_ctxt)(g)
 	RET
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Call fn(arg) on the scheduler stack,
 // aligned appropriately for the gcc ABI.
 // See cgocall.go for more details.
-TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
+TEXT ·asmcgocall(SB),NOSPLIT,$0-20
 	MOVD	fn+0(FP), R1
 	MOVD	arg+8(FP), R0
-	BL	asmcgocall<>(SB)
-	MOVW	R0, ret+16(FP)
-	RET
 
-// asmcgocall common code. fn in R1, arg in R0. returns errno in R0.
-TEXT asmcgocall<>(SB),NOSPLIT,$0-0
 	MOVD	RSP, R2		// save original stack pointer
 	MOVD	g, R4
 
@@ -598,6 +593,8 @@
 	SUB	R6, R5
 	MOVD	R9, R0
 	MOVD	R5, RSP
+
+	MOVW	R0, ret+16(FP)
 	RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
diff --git a/src/runtime/asm_ppc64x.s b/src/runtime/asm_ppc64x.s
index f90016c..0404124 100644
--- a/src/runtime/asm_ppc64x.s
+++ b/src/runtime/asm_ppc64x.s
@@ -694,19 +694,14 @@
 	MOVD	R0, (g_sched+gobuf_ctxt)(g)
 	RET
 
-// asmcgocall(void(*fn)(void*), void *arg)
+// func asmcgocall(fn, arg unsafe.Pointer) int32
 // Call fn(arg) on the scheduler stack,
 // aligned appropriately for the gcc ABI.
-// See cgocall.c for more details.
-TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
+// See cgocall.go for more details.
+TEXT ·asmcgocall(SB),NOSPLIT,$0-20
 	MOVD	fn+0(FP), R3
 	MOVD	arg+8(FP), R4
-	BL	asmcgocall<>(SB)
-	MOVW	R3, ret+16(FP)
-	RET
 
-// asmcgocall common code. fn in R3, arg in R4. returns errno in R3.
-TEXT asmcgocall<>(SB),NOSPLIT,$0-0
 	MOVD	R1, R2		// save original stack pointer
 	MOVD	g, R5
 
@@ -749,6 +744,8 @@
 	MOVD	32(R1), R6
 	SUB	R6, R5
 	MOVD	R5, R1
+
+	MOVW	R3, ret+16(FP)
 	RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
@@ -767,7 +764,7 @@
 	RET
 
 // cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
-// See cgocall.c for more details.
+// See cgocall.go for more details.
 TEXT ·cgocallback_gofunc(SB),NOSPLIT,$16-24
 	NO_LOCAL_POINTERS
 
diff --git a/src/runtime/cgocall.go b/src/runtime/cgocall.go
index 8f0b83c..17e0125 100644
--- a/src/runtime/cgocall.go
+++ b/src/runtime/cgocall.go
@@ -83,7 +83,7 @@
 
 // Call from Go to C.
 //go:nosplit
-func cgocall_errno(fn, arg unsafe.Pointer) int32 {
+func cgocall(fn, arg unsafe.Pointer) int32 {
 	if !iscgo && GOOS != "solaris" && GOOS != "windows" {
 		throw("cgocall unavailable")
 	}
@@ -118,7 +118,7 @@
 	 * the $GOMAXPROCS accounting.
 	 */
 	entersyscall(0)
-	errno := asmcgocall_errno(fn, arg)
+	errno := asmcgocall(fn, arg)
 	exitsyscall(0)
 
 	return errno
@@ -143,7 +143,7 @@
 		ret unsafe.Pointer
 	}
 	args.n = uint64(n)
-	cgocall_errno(_cgo_malloc, unsafe.Pointer(&args))
+	cgocall(_cgo_malloc, unsafe.Pointer(&args))
 	if args.ret == nil {
 		throw("C malloc failed")
 	}
@@ -151,7 +151,7 @@
 }
 
 func cfree(p unsafe.Pointer) {
-	cgocall_errno(_cgo_free, p)
+	cgocall(_cgo_free, p)
 }
 
 // Call from C back to Go.
diff --git a/src/runtime/env_posix.go b/src/runtime/env_posix.go
index e648442..5e49287 100644
--- a/src/runtime/env_posix.go
+++ b/src/runtime/env_posix.go
@@ -32,7 +32,7 @@
 		return
 	}
 	arg := [2]unsafe.Pointer{cstring(k), cstring(v)}
-	asmcgocall_errno(unsafe.Pointer(_cgo_setenv), unsafe.Pointer(&arg))
+	asmcgocall(unsafe.Pointer(_cgo_setenv), unsafe.Pointer(&arg))
 }
 
 // Update the C environment if cgo is loaded.
@@ -43,7 +43,7 @@
 		return
 	}
 	arg := [1]unsafe.Pointer{cstring(k)}
-	asmcgocall_errno(unsafe.Pointer(_cgo_unsetenv), unsafe.Pointer(&arg))
+	asmcgocall(unsafe.Pointer(_cgo_unsetenv), unsafe.Pointer(&arg))
 }
 
 func cstring(s string) unsafe.Pointer {
diff --git a/src/runtime/os1_windows.go b/src/runtime/os1_windows.go
index 9565366..bc472d0 100644
--- a/src/runtime/os1_windows.go
+++ b/src/runtime/os1_windows.go
@@ -372,7 +372,7 @@
 		// all three values to be non-zero, it will use them
 		mp.libcallsp = getcallersp(unsafe.Pointer(&fn))
 	}
-	asmcgocall_errno(asmstdcallAddr, unsafe.Pointer(&mp.libcall))
+	asmcgocall(asmstdcallAddr, unsafe.Pointer(&mp.libcall))
 	mp.libcallsp = 0
 	return mp.libcall.r1
 }
diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go
index cf576da..53d7b96 100644
--- a/src/runtime/os3_solaris.go
+++ b/src/runtime/os3_solaris.go
@@ -201,7 +201,7 @@
 // Called on the new thread, can not allocate memory.
 func minit() {
 	_g_ := getg()
-	asmcgocall_errno(unsafe.Pointer(funcPC(miniterrno)), unsafe.Pointer(&libc____errno))
+	asmcgocall(unsafe.Pointer(funcPC(miniterrno)), unsafe.Pointer(&libc____errno))
 	// Initialize signal handling
 	signalstack(&_g_.m.gsignal.stack)
 
@@ -317,7 +317,7 @@
 	memclr(unsafe.Pointer(&_g_.m.scratch), uintptr(len(_g_.m.scratch.v)))
 	_g_.m.scratch.v[0] = unsafe.Sizeof(*sem)
 	_g_.m.libcall.args = uintptr(unsafe.Pointer(&_g_.m.scratch))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_g_.m.libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_g_.m.libcall))
 	sem = (*semt)(unsafe.Pointer(_g_.m.libcall.r1))
 	if sem_init(sem, 0, 0) != 0 {
 		throw("sem_init")
@@ -338,7 +338,7 @@
 		_m_.scratch.v[0] = _m_.waitsema
 		_m_.scratch.v[1] = uintptr(unsafe.Pointer(&_m_.ts))
 		_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
-		asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
+		asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
 		if *_m_.perrno != 0 {
 			if *_m_.perrno == _ETIMEDOUT || *_m_.perrno == _EAGAIN || *_m_.perrno == _EINTR {
 				return -1
@@ -353,7 +353,7 @@
 		memclr(unsafe.Pointer(&_m_.scratch), uintptr(len(_m_.scratch.v)))
 		_m_.scratch.v[0] = _m_.waitsema
 		_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
-		asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
+		asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
 		if _m_.libcall.r1 == 0 {
 			break
 		}
diff --git a/src/runtime/os_solaris.go b/src/runtime/os_solaris.go
index c6c02ff..fd20a5c 100644
--- a/src/runtime/os_solaris.go
+++ b/src/runtime/os_solaris.go
@@ -19,7 +19,7 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 0
 	libcall.args = uintptr(unsafe.Pointer(fn)) // it's unused but must be non-nil, otherwise crashes
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -30,7 +30,7 @@
 	libcall.n = 1
 	// TODO(rsc): Why is noescape necessary here and below?
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -40,7 +40,7 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 2
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -50,7 +50,7 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 3
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -60,7 +60,7 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 4
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -70,7 +70,7 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 5
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
 
@@ -80,6 +80,6 @@
 	libcall.fn = uintptr(unsafe.Pointer(fn))
 	libcall.n = 6
 	libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
 	return libcall.r1
 }
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index 06f301f..805b96e 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -94,7 +94,7 @@
 		if _cgo_notify_runtime_init_done == nil {
 			throw("_cgo_notify_runtime_init_done missing")
 		}
-		cgocall_errno(_cgo_notify_runtime_init_done, nil)
+		cgocall(_cgo_notify_runtime_init_done, nil)
 	}
 
 	main_init()
diff --git a/src/runtime/proc1.go b/src/runtime/proc1.go
index bce0356..055f100 100644
--- a/src/runtime/proc1.go
+++ b/src/runtime/proc1.go
@@ -1093,7 +1093,7 @@
 		ts.g.set(mp.g0)
 		ts.tls = (*uint64)(unsafe.Pointer(&mp.tls[0]))
 		ts.fn = unsafe.Pointer(funcPC(mstart))
-		asmcgocall_errno(_cgo_thread_start, unsafe.Pointer(&ts))
+		asmcgocall(_cgo_thread_start, unsafe.Pointer(&ts))
 		return
 	}
 	newosproc(mp, unsafe.Pointer(mp.g0.stack.hi))
diff --git a/src/runtime/stubs.go b/src/runtime/stubs.go
index b167f16..f116dc3 100644
--- a/src/runtime/stubs.go
+++ b/src/runtime/stubs.go
@@ -205,7 +205,7 @@
 func getcallersp(argp unsafe.Pointer) uintptr
 
 //go:noescape
-func asmcgocall_errno(fn, arg unsafe.Pointer) int32
+func asmcgocall(fn, arg unsafe.Pointer) int32
 
 // argp used in Defer structs when there is no argp.
 const _NoArgs = ^uintptr(0)
diff --git a/src/runtime/syscall_solaris.go b/src/runtime/syscall_solaris.go
index e69745c..ae1f334 100644
--- a/src/runtime/syscall_solaris.go
+++ b/src/runtime/syscall_solaris.go
@@ -34,7 +34,7 @@
 		args: uintptr(unsafe.Pointer(&a1)),
 	}
 	entersyscallblock(0)
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	exitsyscall(0)
 	return call.r1, call.r2, call.err
 }
@@ -46,7 +46,7 @@
 		n:    nargs,
 		args: uintptr(unsafe.Pointer(&a1)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.r2, call.err
 }
 
@@ -61,7 +61,7 @@
 		n:    1,
 		args: uintptr(unsafe.Pointer(&path)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -72,7 +72,7 @@
 		n:    1,
 		args: uintptr(unsafe.Pointer(&path)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -89,7 +89,7 @@
 		n:    3,
 		args: uintptr(unsafe.Pointer(&path)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -106,7 +106,7 @@
 		n:    3,
 		args: uintptr(unsafe.Pointer(&fd)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.err
 }
 
@@ -117,7 +117,7 @@
 		n:    1,
 		args: uintptr(unsafe.Pointer(&flags)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.err
 }
 
@@ -130,7 +130,7 @@
 		args: uintptr(unsafe.Pointer(&args[0])),
 	}
 	entersyscallblock(0)
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	exitsyscall(0)
 	if call.r1 != 0 {
 		return "", call.err
@@ -146,7 +146,7 @@
 		n:    0,
 		args: uintptr(unsafe.Pointer(&libc_getpid)), // it's unused but must be non-nil, otherwise crashes
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.err
 }
 
@@ -157,7 +157,7 @@
 		n:    3,
 		args: uintptr(unsafe.Pointer(&fd)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -168,7 +168,7 @@
 		args: uintptr(unsafe.Pointer(&pipe1)), // it's unused but must be non-nil, otherwise crashes
 	}
 	entersyscallblock(0)
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	exitsyscall(0)
 	return call.r1, call.r2, call.err
 }
@@ -185,7 +185,7 @@
 		n:    4,
 		args: uintptr(unsafe.Pointer(&trap)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.r2, call.err
 }
 
@@ -196,7 +196,7 @@
 		n:    1,
 		args: uintptr(unsafe.Pointer(&gid)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -207,7 +207,7 @@
 		n:    2,
 		args: uintptr(unsafe.Pointer(&ngid)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -218,7 +218,7 @@
 		n:    0,
 		args: uintptr(unsafe.Pointer(&libc_setsid)), // it's unused but must be non-nil, otherwise crashes
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.err
 }
 
@@ -229,7 +229,7 @@
 		n:    1,
 		args: uintptr(unsafe.Pointer(&uid)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -240,7 +240,7 @@
 		n:    2,
 		args: uintptr(unsafe.Pointer(&pid)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.err
 }
 
@@ -257,7 +257,7 @@
 		args: uintptr(unsafe.Pointer(&trap)),
 	}
 	entersyscallblock(0)
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	exitsyscall(0)
 	return call.r1, call.r2, call.err
 }
@@ -269,7 +269,7 @@
 		args: uintptr(unsafe.Pointer(&pid)),
 	}
 	entersyscallblock(0)
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	exitsyscall(0)
 	return int(call.r1), call.err
 }
@@ -281,6 +281,6 @@
 		n:    3,
 		args: uintptr(unsafe.Pointer(&fd)),
 	}
-	asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
+	asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
 	return call.r1, call.err
 }
diff --git a/src/runtime/syscall_windows.go b/src/runtime/syscall_windows.go
index 370b172..d2e44d7 100644
--- a/src/runtime/syscall_windows.go
+++ b/src/runtime/syscall_windows.go
@@ -95,7 +95,7 @@
 	c.fn = getLoadLibrary()
 	c.n = 1
 	c.args = uintptr(unsafe.Pointer(&filename))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	handle = c.r1
 	if handle == 0 {
 		err = c.err
@@ -110,7 +110,7 @@
 	c.fn = getGetProcAddress()
 	c.n = 2
 	c.args = uintptr(unsafe.Pointer(&handle))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	outhandle = c.r1
 	if outhandle == 0 {
 		err = c.err
@@ -125,7 +125,7 @@
 	c.fn = fn
 	c.n = nargs
 	c.args = uintptr(unsafe.Pointer(&a1))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	return c.r1, c.r2, c.err
 }
 
@@ -136,7 +136,7 @@
 	c.fn = fn
 	c.n = nargs
 	c.args = uintptr(unsafe.Pointer(&a1))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	return c.r1, c.r2, c.err
 }
 
@@ -147,7 +147,7 @@
 	c.fn = fn
 	c.n = nargs
 	c.args = uintptr(unsafe.Pointer(&a1))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	return c.r1, c.r2, c.err
 }
 
@@ -158,7 +158,7 @@
 	c.fn = fn
 	c.n = nargs
 	c.args = uintptr(unsafe.Pointer(&a1))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	return c.r1, c.r2, c.err
 }
 
@@ -169,6 +169,6 @@
 	c.fn = fn
 	c.n = nargs
 	c.args = uintptr(unsafe.Pointer(&a1))
-	cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
+	cgocall(asmstdcallAddr, unsafe.Pointer(&c))
 	return c.r1, c.r2, c.err
 }
