// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Zircon system calls for the Fuchsia OS.
// Generated by mkfuchsia.go, do not edit.

#include "go_asm.h"
#include "go_tls.h"
#include "textflag.h"
#include "funcdata.h"

// func vdsoCall_zx_clock_get(clock_id uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_get(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL clock_id+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_clock_get(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_get_monotonic() int64
TEXT runtime·vdsoCall_zx_clock_get_monotonic(SB),NOSPLIT,$8-8
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_clock_get_monotonic(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_nanosleep(deadline int64) int32
TEXT runtime·vdsoCall_zx_nanosleep(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ deadline+0(FP), DI
	MOVQ vdso_zx_nanosleep(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ticks_get() int64
TEXT runtime·vdsoCall_zx_ticks_get(SB),NOSPLIT,$8-8
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_ticks_get(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ticks_per_second() int64
TEXT runtime·vdsoCall_zx_ticks_per_second(SB),NOSPLIT,$8-8
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_ticks_per_second(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_deadline_after(nanoseconds int64) int64
TEXT runtime·vdsoCall_zx_deadline_after(SB),NOSPLIT,$8-16
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ nanoseconds+0(FP), DI
	MOVQ vdso_zx_deadline_after(SB), AX
	CALL AX
	MOVQ AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_adjust(handle uint32, clock_id uint32, offset int64) int32
TEXT runtime·vdsoCall_zx_clock_adjust(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL clock_id+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ vdso_zx_clock_adjust(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_dcache_line_size() uint32
TEXT runtime·vdsoCall_zx_system_get_dcache_line_size(SB),NOSPLIT,$8-4
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_system_get_dcache_line_size(SB), AX
	CALL AX
	MOVL AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_num_cpus() uint32
TEXT runtime·vdsoCall_zx_system_get_num_cpus(SB),NOSPLIT,$8-4
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_system_get_num_cpus(SB), AX
	CALL AX
	MOVL AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_version(version unsafe.Pointer, version_size uint) int32
TEXT runtime·vdsoCall_zx_system_get_version(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ version+0(FP), DI
	MOVQ version_size+8(FP), SI
	MOVQ vdso_zx_system_get_version(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_physmem() uint64
TEXT runtime·vdsoCall_zx_system_get_physmem(SB),NOSPLIT,$8-8
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_system_get_physmem(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_get_features(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL kind+0(FP), DI
	MOVQ features+8(FP), SI
	MOVQ vdso_zx_system_get_features(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_event(root_job uint32, kind uint32, event unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_get_event(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL root_job+0(FP), DI
	MOVL kind+4(FP), SI
	MOVQ event+8(FP), DX
	MOVQ vdso_zx_system_get_event(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32
TEXT runtime·vdsoCall_zx_cache_flush(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ addr+0(FP), DI
	MOVQ size+8(FP), SI
	MOVL options+16(FP), DX
	MOVQ vdso_zx_cache_flush(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_handle_close(handle uint32) int32
TEXT runtime·vdsoCall_zx_handle_close(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_handle_close(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32
TEXT runtime·vdsoCall_zx_handle_close_many(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ handles+0(FP), DI
	MOVQ num_handles+8(FP), SI
	MOVQ vdso_zx_handle_close_many(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_handle_duplicate(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL rights+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_handle_duplicate(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_handle_replace(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL rights+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_handle_replace(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_wait_one(handle uint32, signals uint32, deadline int64, observed unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_object_wait_one(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVL signals+4(FP), SI
	MOVQ deadline+8(FP), DX
	MOVQ observed+16(FP), CX
	MOVQ vdso_zx_object_wait_one(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_wait_many(items unsafe.Pointer, count uint, deadline int64) int32
TEXT runtime·vdsoCall_zx_object_wait_many(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	CALL runtime·entersyscall(SB)
	MOVQ items+0(FP), DI
	MOVQ count+8(FP), SI
	MOVQ deadline+16(FP), DX
	MOVQ vdso_zx_object_wait_many(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_wait_async(handle uint32, port uint32, key uint64, signals uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_object_wait_async(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL port+4(FP), SI
	MOVQ key+8(FP), DX
	MOVL signals+16(FP), CX
	MOVL options+20(FP), R8
	MOVQ vdso_zx_object_wait_async(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32
TEXT runtime·vdsoCall_zx_object_signal(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL clear_mask+4(FP), SI
	MOVL set_mask+8(FP), DX
	MOVQ vdso_zx_object_signal(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_signal_peer(handle uint32, clear_mask uint32, set_mask uint32) int32
TEXT runtime·vdsoCall_zx_object_signal_peer(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL clear_mask+4(FP), SI
	MOVL set_mask+8(FP), DX
	MOVQ vdso_zx_object_signal_peer(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_get_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
TEXT runtime·vdsoCall_zx_object_get_property(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL property+4(FP), SI
	MOVQ value+8(FP), DX
	MOVQ value_size+16(FP), CX
	MOVQ vdso_zx_object_get_property(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
TEXT runtime·vdsoCall_zx_object_set_property(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL property+4(FP), SI
	MOVQ value+8(FP), DX
	MOVQ value_size+16(FP), CX
	MOVQ vdso_zx_object_set_property(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_get_info(handle uint32, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_object_get_info(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL topic+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ actual+24(FP), R8
	MOVQ avail+32(FP), R9
	MOVQ vdso_zx_object_get_info(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_get_child(handle uint32, koid uint64, rights uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_object_get_child(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ koid+8(FP), SI
	MOVL rights+16(FP), DX
	MOVQ out+24(FP), CX
	MOVQ vdso_zx_object_get_child(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_object_set_profile(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL profile+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ vdso_zx_object_set_profile(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out0+8(FP), SI
	MOVQ out1+16(FP), DX
	MOVQ vdso_zx_channel_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_read(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_read(SB),NOSPLIT,$40-52
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 56(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 56(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ bytes+8(FP), DX
	MOVQ handles+16(FP), CX
	MOVL num_bytes+24(FP), R8
	MOVL num_handles+28(FP), R9
	MOVQ actual_bytes+32(FP), R12
	MOVQ actual_handles+40(FP), R13
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R13
	PUSHQ R12
	MOVQ vdso_zx_channel_read(SB), AX
	CALL AX
	POPQ R12
	POPQ R13
	MOVQ BP, SP
	MOVL AX, ret+48(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_read_etc(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_read_etc(SB),NOSPLIT,$40-52
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 56(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 56(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ bytes+8(FP), DX
	MOVQ handles+16(FP), CX
	MOVL num_bytes+24(FP), R8
	MOVL num_handles+28(FP), R9
	MOVQ actual_bytes+32(FP), R12
	MOVQ actual_handles+40(FP), R13
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R13
	PUSHQ R12
	MOVQ vdso_zx_channel_read_etc(SB), AX
	CALL AX
	POPQ R12
	POPQ R13
	MOVQ BP, SP
	MOVL AX, ret+48(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_write(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
TEXT runtime·vdsoCall_zx_channel_write(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ bytes+8(FP), DX
	MOVL num_bytes+16(FP), CX
	MOVQ handles+24(FP), R8
	MOVL num_handles+32(FP), R9
	MOVQ vdso_zx_channel_write(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_write_etc(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
TEXT runtime·vdsoCall_zx_channel_write_etc(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ bytes+8(FP), DX
	MOVL num_bytes+16(FP), CX
	MOVQ handles+24(FP), R8
	MOVL num_handles+32(FP), R9
	MOVQ vdso_zx_channel_write_etc(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_call_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_noretry(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ deadline+8(FP), DX
	MOVQ args+16(FP), CX
	MOVQ actual_bytes+24(FP), R8
	MOVQ actual_handles+32(FP), R9
	MOVQ vdso_zx_channel_call_noretry(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_call_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_finish(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ deadline+0(FP), DI
	MOVQ args+8(FP), SI
	MOVQ actual_bytes+16(FP), DX
	MOVQ actual_handles+24(FP), CX
	MOVQ vdso_zx_channel_call_finish(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_call(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ deadline+8(FP), DX
	MOVQ args+16(FP), CX
	MOVQ actual_bytes+24(FP), R8
	MOVQ actual_handles+32(FP), R9
	MOVQ vdso_zx_channel_call(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_socket_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out0+8(FP), SI
	MOVQ out1+16(FP), DX
	MOVQ vdso_zx_socket_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_socket_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_socket_write(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ actual+24(FP), R8
	MOVQ vdso_zx_socket_write(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_socket_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_socket_read(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ actual+24(FP), R8
	MOVQ vdso_zx_socket_read(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_socket_shutdown(handle uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_socket_shutdown(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ vdso_zx_socket_shutdown(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_thread_exit()
TEXT runtime·vdsoCall_zx_thread_exit(SB),NOSPLIT,$8-0
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ vdso_zx_thread_exit(SB), AX
	CALL AX
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_thread_create(process uint32, name unsafe.Pointer, name_size uint, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_thread_create(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL process+0(FP), DI
	MOVQ name+8(FP), SI
	MOVQ name_size+16(FP), DX
	MOVL options+24(FP), CX
	MOVQ out+32(FP), R8
	MOVQ vdso_zx_thread_create(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_thread_start(handle uint32, thread_entry uintptr, stack uintptr, arg1 uintptr, arg2 uintptr) int32
TEXT runtime·vdsoCall_zx_thread_start(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ thread_entry+8(FP), SI
	MOVQ stack+16(FP), DX
	MOVQ arg1+24(FP), CX
	MOVQ arg2+32(FP), R8
	MOVQ vdso_zx_thread_start(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_thread_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_thread_read_state(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL kind+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ vdso_zx_thread_read_state(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_thread_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_thread_write_state(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL kind+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ vdso_zx_thread_write_state(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_process_exit(retcode int64)
TEXT runtime·vdsoCall_zx_process_exit(SB),NOSPLIT,$8-8
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ retcode+0(FP), DI
	MOVQ vdso_zx_process_exit(SB), AX
	CALL AX
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_process_create(job uint32, name unsafe.Pointer, name_size uint, options uint32, proc_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_process_create(SB),NOSPLIT,$8-52
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL job+0(FP), DI
	MOVQ name+8(FP), SI
	MOVQ name_size+16(FP), DX
	MOVL options+24(FP), CX
	MOVQ proc_handle+32(FP), R8
	MOVQ vmar_handle+40(FP), R9
	MOVQ vdso_zx_process_create(SB), AX
	CALL AX
	MOVL AX, ret+48(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_process_start(handle uint32, thread uint32, entry uintptr, stack uintptr, arg1 uint32, arg2 uintptr) int32
TEXT runtime·vdsoCall_zx_process_start(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL thread+4(FP), SI
	MOVQ entry+8(FP), DX
	MOVQ stack+16(FP), CX
	MOVL arg1+24(FP), R8
	MOVQ arg2+32(FP), R9
	MOVQ vdso_zx_process_start(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_process_read_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_process_read_memory(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vaddr+8(FP), SI
	MOVQ buffer+16(FP), DX
	MOVQ buffer_size+24(FP), CX
	MOVQ actual+32(FP), R8
	MOVQ vdso_zx_process_read_memory(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_process_write_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_process_write_memory(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vaddr+8(FP), SI
	MOVQ buffer+16(FP), DX
	MOVQ buffer_size+24(FP), CX
	MOVQ actual+32(FP), R8
	MOVQ vdso_zx_process_write_memory(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_job_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL parent_job+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_job_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, count uint32) int32
TEXT runtime·vdsoCall_zx_job_set_policy(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVL topic+8(FP), DX
	MOVQ policy+16(FP), CX
	MOVL count+24(FP), R8
	MOVQ vdso_zx_job_set_policy(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_bind_exception_port(handle uint32, port uint32, key uint64, options uint32) int32
TEXT runtime·vdsoCall_zx_task_bind_exception_port(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL port+4(FP), SI
	MOVQ key+8(FP), DX
	MOVL options+16(FP), CX
	MOVQ vdso_zx_task_bind_exception_port(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_task_suspend(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ token+8(FP), SI
	MOVQ vdso_zx_task_suspend(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_task_suspend_token(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ token+8(FP), SI
	MOVQ vdso_zx_task_suspend_token(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_resume_from_exception(handle uint32, port uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_task_resume_from_exception(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL port+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ vdso_zx_task_resume_from_exception(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_create_exception_channel(handle uint32, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_task_create_exception_channel(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_task_create_exception_channel(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_task_kill(handle uint32) int32
TEXT runtime·vdsoCall_zx_task_kill(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_task_kill(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_exception_get_thread(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_exception_get_thread(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_exception_get_process(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_exception_get_process(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_event_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_event_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_eventpair_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out0+8(FP), SI
	MOVQ out1+16(FP), DX
	MOVQ vdso_zx_eventpair_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
TEXT runtime·vdsoCall_zx_futex_wait(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVL current_value+8(FP), SI
	MOVL new_futex_owner+12(FP), DX
	MOVQ deadline+16(FP), CX
	MOVQ vdso_zx_futex_wait(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32
TEXT runtime·vdsoCall_zx_futex_wake(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVL wake_count+8(FP), SI
	MOVQ vdso_zx_futex_wake(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_requeue(value_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
TEXT runtime·vdsoCall_zx_futex_requeue(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVL wake_count+8(FP), SI
	MOVL current_value+12(FP), DX
	MOVQ requeue_ptr+16(FP), CX
	MOVL requeue_count+24(FP), R8
	MOVL new_requeue_owner+28(FP), R9
	MOVQ vdso_zx_futex_requeue(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVQ vdso_zx_futex_wake_single_owner(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_requeue_single_owner(value_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
TEXT runtime·vdsoCall_zx_futex_requeue_single_owner(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVL current_value+8(FP), SI
	MOVQ requeue_ptr+16(FP), DX
	MOVL requeue_count+24(FP), CX
	MOVL new_requeue_owner+28(FP), R8
	MOVQ vdso_zx_futex_requeue_single_owner(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVQ koid+8(FP), SI
	MOVQ vdso_zx_futex_get_owner(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_port_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_queue(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ packet+8(FP), SI
	MOVQ vdso_zx_port_queue(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_wait(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVQ deadline+8(FP), SI
	MOVQ packet+16(FP), DX
	MOVQ vdso_zx_port_wait(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32
TEXT runtime·vdsoCall_zx_port_cancel(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL source+4(FP), SI
	MOVQ key+8(FP), DX
	MOVQ vdso_zx_port_cancel(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_timer_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVL clock_id+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_timer_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32
TEXT runtime·vdsoCall_zx_timer_set(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ deadline+8(FP), SI
	MOVQ slack+16(FP), DX
	MOVQ vdso_zx_timer_set(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_timer_cancel(handle uint32) int32
TEXT runtime·vdsoCall_zx_timer_cancel(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_timer_cancel(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ size+0(FP), DI
	MOVL options+8(FP), SI
	MOVQ out+16(FP), DX
	MOVQ vdso_zx_vmo_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_read(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vmo_read(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ buffer+8(FP), SI
	MOVQ offset+16(FP), DX
	MOVQ buffer_size+24(FP), CX
	MOVQ vdso_zx_vmo_read(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_write(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vmo_write(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ buffer+8(FP), SI
	MOVQ offset+16(FP), DX
	MOVQ buffer_size+24(FP), CX
	MOVQ vdso_zx_vmo_write(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_get_size(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ size+8(FP), SI
	MOVQ vdso_zx_vmo_get_size(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32
TEXT runtime·vdsoCall_zx_vmo_set_size(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ size+8(FP), SI
	MOVQ vdso_zx_vmo_set_size(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_op_range(handle uint32, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vmo_op_range(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL op+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ size+16(FP), CX
	MOVQ buffer+24(FP), R8
	MOVQ buffer_size+32(FP), R9
	MOVQ vdso_zx_vmo_op_range(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_create_child(handle uint32, options uint32, offset uint64, size uint64, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_create_child(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ size+16(FP), CX
	MOVQ out+24(FP), R8
	MOVQ vdso_zx_vmo_create_child(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32
TEXT runtime·vdsoCall_zx_vmo_set_cache_policy(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL cache_policy+4(FP), SI
	MOVQ vdso_zx_vmo_set_cache_policy(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_replace_as_executable(handle uint32, vmex uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_replace_as_executable(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL vmex+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_vmo_replace_as_executable(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint64, size uint64, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmar_allocate(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL parent_vmar+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ size+16(FP), CX
	MOVQ child_vmar+24(FP), R8
	MOVQ child_addr+32(FP), R9
	MOVQ vdso_zx_vmar_allocate(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_destroy(handle uint32) int32
TEXT runtime·vdsoCall_zx_vmar_destroy(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_vmar_destroy(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint64, vmo uint32, vmo_offset uint64, len uint64, mapped_addr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmar_map(SB),NOSPLIT,$32-52
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 48(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 48(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ vmar_offset+8(FP), DX
	MOVL vmo+16(FP), CX
	MOVQ vmo_offset+24(FP), R8
	MOVQ len+32(FP), R9
	MOVQ mapped_addr+40(FP), R12
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R12
	MOVQ vdso_zx_vmar_map(SB), AX
	CALL AX
	POPQ R12
	MOVQ BP, SP
	MOVL AX, ret+48(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint64) int32
TEXT runtime·vdsoCall_zx_vmar_unmap(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ addr+8(FP), SI
	MOVQ len+16(FP), DX
	MOVQ vdso_zx_vmar_unmap(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint64) int32
TEXT runtime·vdsoCall_zx_vmar_protect(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ addr+8(FP), DX
	MOVQ len+16(FP), CX
	MOVQ vdso_zx_vmar_protect(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_cprng_draw_once(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ buffer+0(FP), DI
	MOVQ buffer_size+8(FP), SI
	MOVQ vdso_zx_cprng_draw_once(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
TEXT runtime·vdsoCall_zx_cprng_draw(SB),NOSPLIT,$8-16
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ buffer+0(FP), DI
	MOVQ buffer_size+8(FP), SI
	MOVQ vdso_zx_cprng_draw(SB), AX
	CALL AX
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_cprng_add_entropy(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ buffer+0(FP), DI
	MOVQ buffer_size+8(FP), SI
	MOVQ vdso_zx_cprng_add_entropy(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_fifo_create(elem_count uint, elem_size uint, options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_fifo_create(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ elem_count+0(FP), DI
	MOVQ elem_size+8(FP), SI
	MOVL options+16(FP), DX
	MOVQ out0+24(FP), CX
	MOVQ out1+32(FP), R8
	MOVQ vdso_zx_fifo_create(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_fifo_read(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ elem_size+8(FP), SI
	MOVQ data+16(FP), DX
	MOVQ count+24(FP), CX
	MOVQ actual_count+32(FP), R8
	MOVQ vdso_zx_fifo_read(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_fifo_write(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_fifo_write(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ elem_size+8(FP), SI
	MOVQ data+16(FP), DX
	MOVQ count+24(FP), CX
	MOVQ actual_count+32(FP), R8
	MOVQ vdso_zx_fifo_write(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_profile_create(root_job uint32, options uint32, profile unsafe.Pointer, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_profile_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL root_job+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ profile+8(FP), DX
	MOVQ out+16(FP), CX
	MOVQ vdso_zx_profile_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_unmap_handle_close_thread_exit(vmar_handle uint32, addr uintptr, size uint, close_handle uint32) int32
TEXT runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL vmar_handle+0(FP), DI
	MOVQ addr+8(FP), SI
	MOVQ size+16(FP), DX
	MOVL close_handle+24(FP), CX
	MOVQ vdso_zx_vmar_unmap_handle_close_thread_exit(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_futex_wake_handle_close_thread_exit(value_ptr unsafe.Pointer, wake_count uint32, new_value int32, close_handle uint32)
TEXT runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$8-24
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ value_ptr+0(FP), DI
	MOVL wake_count+8(FP), SI
	MOVL new_value+12(FP), DX
	MOVL close_handle+16(FP), CX
	MOVQ vdso_zx_futex_wake_handle_close_thread_exit(SB), AX
	CALL AX
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_debuglog_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ out+8(FP), DX
	MOVQ vdso_zx_debuglog_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debuglog_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_debuglog_write(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ vdso_zx_debuglog_write(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debuglog_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_debuglog_read(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ buffer+8(FP), DX
	MOVQ buffer_size+16(FP), CX
	MOVQ vdso_zx_debuglog_read(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ktrace_read(handle uint32, data unsafe.Pointer, offset uint32, data_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_ktrace_read(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ data+8(FP), SI
	MOVL offset+16(FP), DX
	MOVQ data_size+24(FP), CX
	MOVQ actual+32(FP), R8
	MOVQ vdso_zx_ktrace_read(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_ktrace_control(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL action+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ ptr+16(FP), CX
	MOVQ vdso_zx_ktrace_control(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32
TEXT runtime·vdsoCall_zx_ktrace_write(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL id+4(FP), SI
	MOVL arg0+8(FP), DX
	MOVL arg1+12(FP), CX
	MOVQ vdso_zx_ktrace_write(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_mtrace_control(handle uint32, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) int32
TEXT runtime·vdsoCall_zx_mtrace_control(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL kind+4(FP), SI
	MOVL action+8(FP), DX
	MOVL options+12(FP), CX
	MOVQ ptr+16(FP), R8
	MOVQ ptr_size+24(FP), R9
	MOVQ vdso_zx_mtrace_control(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_debug_read(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ buffer+8(FP), SI
	MOVQ buffer_size+16(FP), DX
	MOVQ vdso_zx_debug_read(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_debug_write(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVQ buffer+0(FP), DI
	MOVQ buffer_size+8(FP), SI
	MOVQ vdso_zx_debug_write(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_debug_send_command(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_debug_send_command(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVQ buffer+8(FP), SI
	MOVQ buffer_size+16(FP), DX
	MOVQ vdso_zx_debug_send_command(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_create(src_obj uint32, src_num uint32, options uint32, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_interrupt_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL src_obj+0(FP), DI
	MOVL src_num+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ out_handle+16(FP), CX
	MOVQ vdso_zx_interrupt_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_bind(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL port_handle+4(FP), SI
	MOVQ key+8(FP), DX
	MOVL options+16(FP), CX
	MOVQ vdso_zx_interrupt_bind(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_interrupt_wait(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ out_timestamp+8(FP), SI
	MOVQ vdso_zx_interrupt_wait(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_destroy(handle uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_destroy(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_interrupt_destroy(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_ack(handle uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_ack(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_interrupt_ack(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32
TEXT runtime·vdsoCall_zx_interrupt_trigger(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ timestamp+8(FP), DX
	MOVQ vdso_zx_interrupt_trigger(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_bind_vcpu(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL vcpu+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ vdso_zx_interrupt_bind_vcpu(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32
TEXT runtime·vdsoCall_zx_ioports_request(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVQ io_addr+4(FP), SI
	MOVL len+8(FP), DX
	MOVQ vdso_zx_ioports_request(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_create_contiguous(bti uint32, size uint, alignment_log2 uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_create_contiguous(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL bti+0(FP), DI
	MOVQ size+8(FP), SI
	MOVL alignment_log2+16(FP), DX
	MOVQ out+24(FP), CX
	MOVQ vdso_zx_vmo_create_contiguous(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmo_create_physical(resource uint32, paddr uintptr, size uint, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_create_physical(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVQ paddr+8(FP), SI
	MOVQ size+16(FP), DX
	MOVQ out+24(FP), CX
	MOVQ vdso_zx_vmo_create_physical(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_iommu_create(resource uint32, typ uint32, desc unsafe.Pointer, desc_size uint, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_iommu_create(SB),NOSPLIT,$8-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVL typ+4(FP), SI
	MOVQ desc+8(FP), DX
	MOVQ desc_size+16(FP), CX
	MOVQ out+24(FP), R8
	MOVQ vdso_zx_iommu_create(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_bti_create(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL iommu+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ bti_id+8(FP), DX
	MOVQ out+16(FP), CX
	MOVQ vdso_zx_bti_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, addrs_count uint, pmt unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_bti_pin(SB),NOSPLIT,$40-60
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 56(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 56(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVL vmo+8(FP), DX
	MOVQ offset+16(FP), CX
	MOVQ size+24(FP), R8
	MOVQ addrs+32(FP), R9
	MOVQ addrs_count+40(FP), R12
	MOVQ pmt+48(FP), R13
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R13
	PUSHQ R12
	MOVQ vdso_zx_bti_pin(SB), AX
	CALL AX
	POPQ R12
	POPQ R13
	MOVQ BP, SP
	MOVL AX, ret+56(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_bti_release_quarantine(handle uint32) int32
TEXT runtime·vdsoCall_zx_bti_release_quarantine(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_bti_release_quarantine(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pmt_unpin(handle uint32) int32
TEXT runtime·vdsoCall_zx_pmt_unpin(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ vdso_zx_pmt_unpin(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_framebuffer_get_info(resource uint32, format unsafe.Pointer, width unsafe.Pointer, height unsafe.Pointer, stride unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_framebuffer_get_info(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVQ format+8(FP), SI
	MOVQ width+16(FP), DX
	MOVQ height+24(FP), CX
	MOVQ stride+32(FP), R8
	MOVQ vdso_zx_framebuffer_get_info(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_framebuffer_set_range(resource uint32, vmo uint32, len uint32, format uint32, width uint32, height uint32, stride uint32) int32
TEXT runtime·vdsoCall_zx_framebuffer_set_range(SB),NOSPLIT,$32-36
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 48(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 48(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVL vmo+4(FP), SI
	MOVL len+8(FP), DX
	MOVL format+12(FP), CX
	MOVL width+16(FP), R8
	MOVL height+20(FP), R9
	MOVL stride+24(FP), R12
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R12
	MOVQ vdso_zx_framebuffer_set_range(SB), AX
	CALL AX
	POPQ R12
	MOVQ BP, SP
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pc_firmware_tables(handle uint32, acpi_rsdp unsafe.Pointer, smbios unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pc_firmware_tables(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ acpi_rsdp+8(FP), SI
	MOVQ smbios+16(FP), DX
	MOVQ vdso_zx_pc_firmware_tables(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_smc_call(handle uint32, parameters unsafe.Pointer, out_smc_result unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_smc_call(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL handle+0(FP), DI
	MOVQ parameters+8(FP), SI
	MOVQ out_smc_result+16(FP), DX
	MOVQ vdso_zx_smc_call(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_resource_create(parent_rsrc uint32, options uint32, base uint64, size uint, name unsafe.Pointer, name_size uint, resource_out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_resource_create(SB),NOSPLIT,$32-52
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 48(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 48(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL parent_rsrc+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ base+8(FP), DX
	MOVQ size+16(FP), CX
	MOVQ name+24(FP), R8
	MOVQ name_size+32(FP), R9
	MOVQ resource_out+40(FP), R12
	MOVQ SP, BP   // BP is preserved across vsdo call by the x86-64 ABI
	ANDQ $~15, SP // stack alignment for x86-64 ABI
	PUSHQ R12
	MOVQ vdso_zx_resource_create(SB), AX
	CALL AX
	POPQ R12
	MOVQ BP, SP
	MOVL AX, ret+48(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32
TEXT runtime·vdsoCall_zx_system_mexec(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVL kernel_vmo+4(FP), SI
	MOVL bootimage_vmo+8(FP), DX
	MOVQ vdso_zx_system_mexec(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_mexec_payload_get(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_system_mexec_payload_get(SB),NOSPLIT,$8-28
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVQ buffer+8(FP), SI
	MOVQ buffer_size+16(FP), DX
	MOVQ vdso_zx_system_mexec_payload_get(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_powerctl(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL resource+0(FP), DI
	MOVL cmd+4(FP), SI
	MOVQ arg+8(FP), DX
	MOVQ vdso_zx_system_powerctl(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pager_create(SB),NOSPLIT,$8-20
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL options+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_pager_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pager_create_vmo(pager uint32, options uint32, port uint32, key uint64, size uint64, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pager_create_vmo(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL pager+0(FP), DI
	MOVL options+4(FP), SI
	MOVL port+8(FP), DX
	MOVQ key+16(FP), CX
	MOVQ size+24(FP), R8
	MOVQ out+32(FP), R9
	MOVQ vdso_zx_pager_create_vmo(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32
TEXT runtime·vdsoCall_zx_pager_detach_vmo(SB),NOSPLIT,$8-12
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL pager+0(FP), DI
	MOVL vmo+4(FP), SI
	MOVQ vdso_zx_pager_detach_vmo(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pager_supply_pages(pager uint32, pager_vmo uint32, offset uint64, length uint64, aux_vmo uint32, aux_offset uint64) int32
TEXT runtime·vdsoCall_zx_pager_supply_pages(SB),NOSPLIT,$8-44
	GO_ARGS
	NO_LOCAL_POINTERS
	get_tls(CX)
	MOVQ g(CX), AX
	MOVQ g_m(AX), R14
	PUSHQ R14
	MOVQ 24(SP), DX
	MOVQ DX, m_vdsoPC(R14)
	LEAQ 24(SP), DX
	MOVQ DX, m_vdsoSP(R14)
	MOVL pager+0(FP), DI
	MOVL pager_vmo+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ length+16(FP), CX
	MOVL aux_vmo+24(FP), R8
	MOVQ aux_offset+32(FP), R9
	MOVQ vdso_zx_pager_supply_pages(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

