----- c-ulib-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#ifndef LIB_ZXIO_TYPES_H_
#define LIB_ZXIO_TYPES_H_

#include <stdbool.h>
#include <stdint.h>
#include <zircon/compiler.h>

// This header defines the public types used in the zxio and zxio_ops interface.

__BEGIN_CDECLS

// Rights ----------------------------------------------------------------------

typedef uint32_t zx_rights_t;

#define ZX_RIGHT_NONE ((zx_rights_t)0x0u)

#define ZX_RIGHT_DUPLICATE ((zx_rights_t)0x1u)
#define ZX_RIGHT_TRANSFER ((zx_rights_t)0x2u)
#define ZX_RIGHT_READ ((zx_rights_t)0x4u)
#define ZX_RIGHT_WRITE ((zx_rights_t)0x8u)
#define ZX_RIGHT_EXECUTE ((zx_rights_t)0x10u)
#define ZX_RIGHT_MAP ((zx_rights_t)0x20u)
#define ZX_RIGHT_GET_PROPERTY ((zx_rights_t)0x40u)
#define ZX_RIGHT_SET_PROPERTY ((zx_rights_t)0x80u)
#define ZX_RIGHT_ENUMERATE ((zx_rights_t)0x100u)
#define ZX_RIGHT_DESTROY ((zx_rights_t)0x200u)
#define ZX_RIGHT_SET_POLICY ((zx_rights_t)0x400u)
#define ZX_RIGHT_GET_POLICY ((zx_rights_t)0x800u)
#define ZX_RIGHT_SIGNAL ((zx_rights_t)0x1000u)
#define ZX_RIGHT_SIGNAL_PEER ((zx_rights_t)0x2000u)
#define ZX_RIGHT_WAIT ((zx_rights_t)0x4000u)
#define ZX_RIGHT_INSPECT ((zx_rights_t)0x8000u)
#define ZX_RIGHT_MANAGE_JOB ((zx_rights_t)0x10000u)
#define ZX_RIGHT_MANAGE_PROCESS ((zx_rights_t)0x20000u)
#define ZX_RIGHT_MANAGE_THREAD ((zx_rights_t)0x40000u)
#define ZX_RIGHT_APPLY_PROFILE ((zx_rights_t)0x80000u)
#define ZX_RIGHT_MANAGE_SOCKET ((zx_rights_t)0x100000u)
#define ZX_RIGHT_SAME_RIGHTS ((zx_rights_t)0x80000000u)

#define ZX_RIGHT_ALL ((zx_rights_t)0x801fffffu)

// Profile Info Type -----------------------------------------------------------

typedef uint32_t zx_profile_info_type_t;

#define ZX_PROFILE_INFO_TYPE_ZX_PROFILE_INFO_SCHEDULER ((zx_profile_info_type_t)0x1u)

// Clock -----------------------------------------------------------------------

typedef uint32_t zx_clock_t;

#define ZX_CLOCK_MONOTONIC ((zx_clock_t)0x0u)
#define ZX_CLOCK_UTC ((zx_clock_t)0x1u)
#define ZX_CLOCK_THREAD ((zx_clock_t)0x2u)

// Stream Seek Origin ----------------------------------------------------------

typedef uint32_t zx_stream_seek_origin_t;

#define ZX_STREAM_SEEK_ORIGIN_START ((zx_stream_seek_origin_t)0x0u)
#define ZX_STREAM_SEEK_ORIGIN_CURRENT ((zx_stream_seek_origin_t)0x1u)
#define ZX_STREAM_SEEK_ORIGIN_END ((zx_stream_seek_origin_t)0x2u)

typedef int32_t zx_futex_t;

typedef uint32_t zx_handle_op_t;

typedef uint32_t zx_vm_option_t;

typedef int64_t zx_duration_t;

typedef uint64_t zx_gpaddr_t;

typedef uint64_t zx_koid_t;

typedef uint64_t zx_off_t;

typedef uint64_t zx_paddr_t;

typedef uint32_t zx_paddr32_t;

typedef uint32_t zx_procarg_t;

typedef uint32_t zx_signals_t;

typedef int32_t zx_status_t;

typedef int64_t zx_ticks_t;

typedef int64_t zx_time_t;

typedef uint64_t zx_uintptr_t;

typedef uint64_t zx_usize_t;

typedef uint64_t zx_vaddr_t;

__END_CDECLS

#endif  // LIB_ZXIO_TYPES_H_
----- c-ulib-header.h END -----


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

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#define HAVE_SYSCALL_CATEGORY_blocking 1
SYSCALL_CATEGORY_BEGIN(blocking)
    SYSCALL_IN_CATEGORY(channel_call)
    SYSCALL_IN_CATEGORY(channel_call_etc)
    SYSCALL_IN_CATEGORY(futex_wait)
    SYSCALL_IN_CATEGORY(interrupt_wait)
    SYSCALL_IN_CATEGORY(nanosleep)
    SYSCALL_IN_CATEGORY(object_wait_one)
    SYSCALL_IN_CATEGORY(object_wait_many)
    SYSCALL_IN_CATEGORY(port_wait)
    SYSCALL_IN_CATEGORY(stream_writev)
    SYSCALL_IN_CATEGORY(stream_writev_at)
    SYSCALL_IN_CATEGORY(stream_readv)
    SYSCALL_IN_CATEGORY(stream_readv_at)
    SYSCALL_IN_CATEGORY(vcpu_enter)
    SYSCALL_IN_CATEGORY(vmo_read)
    SYSCALL_IN_CATEGORY(vmo_write)
    SYSCALL_IN_CATEGORY(vmo_op_range)
SYSCALL_CATEGORY_END(blocking)

#define HAVE_SYSCALL_CATEGORY_const 1
SYSCALL_CATEGORY_BEGIN(const)
    SYSCALL_IN_CATEGORY(ticks_per_second)
    SYSCALL_IN_CATEGORY(system_get_dcache_line_size)
    SYSCALL_IN_CATEGORY(system_get_num_cpus)
    SYSCALL_IN_CATEGORY(system_get_version_string)
    SYSCALL_IN_CATEGORY(system_get_page_size)
SYSCALL_CATEGORY_END(const)

#define HAVE_SYSCALL_CATEGORY_next 1
SYSCALL_CATEGORY_BEGIN(next)
    SYSCALL_IN_CATEGORY(pager_query_dirty_ranges)
    SYSCALL_IN_CATEGORY(pager_query_vmo_stats)
    SYSCALL_IN_CATEGORY(syscall_next_1)
SYSCALL_CATEGORY_END(next)

#define HAVE_SYSCALL_CATEGORY_noreturn 1
SYSCALL_CATEGORY_BEGIN(noreturn)
    SYSCALL_IN_CATEGORY(futex_wake_handle_close_thread_exit)
    SYSCALL_IN_CATEGORY(process_exit)
    SYSCALL_IN_CATEGORY(thread_exit)
SYSCALL_CATEGORY_END(noreturn)

#define HAVE_SYSCALL_CATEGORY_test_category1 1
SYSCALL_CATEGORY_BEGIN(test_category1)
    SYSCALL_IN_CATEGORY(syscall_test_1)
    SYSCALL_IN_CATEGORY(syscall_test_2)
SYSCALL_CATEGORY_END(test_category1)

#define HAVE_SYSCALL_CATEGORY_test_category2 1
SYSCALL_CATEGORY_BEGIN(test_category2)
    SYSCALL_IN_CATEGORY(syscall_test_3)
SYSCALL_CATEGORY_END(test_category2)

#define HAVE_SYSCALL_CATEGORY_vdsocall 1
SYSCALL_CATEGORY_BEGIN(vdsocall)
    SYSCALL_IN_CATEGORY(cache_flush)
    SYSCALL_IN_CATEGORY(channel_call)
    SYSCALL_IN_CATEGORY(channel_call_etc)
    SYSCALL_IN_CATEGORY(clock_get_monotonic)
    SYSCALL_IN_CATEGORY(cprng_draw)
    SYSCALL_IN_CATEGORY(ticks_get)
    SYSCALL_IN_CATEGORY(ticks_per_second)
    SYSCALL_IN_CATEGORY(deadline_after)
    SYSCALL_IN_CATEGORY(vmar_unmap_handle_close_thread_exit)
    SYSCALL_IN_CATEGORY(futex_wake_handle_close_thread_exit)
    SYSCALL_IN_CATEGORY(system_get_dcache_line_size)
    SYSCALL_IN_CATEGORY(system_get_num_cpus)
    SYSCALL_IN_CATEGORY(system_get_version_string)
    SYSCALL_IN_CATEGORY(system_get_page_size)
    SYSCALL_IN_CATEGORY(system_get_physmem)
    SYSCALL_IN_CATEGORY(system_get_features)
SYSCALL_CATEGORY_END(vdsocall)

----- category.h END -----


----- next-public-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#ifndef _ZX_SYSCALL_DECL
#error "<zircon/syscalls-next.h> is the public API header"
#endif

_ZX_SYSCALL_DECL(pager_query_dirty_ranges, zx_status_t, /* no attributes */, 8,
    (pager, pager_vmo, offset, length, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    void* buffer,
    size_t buffer_size,
    size_t* actual,
    size_t* avail))

_ZX_SYSCALL_DECL(pager_query_vmo_stats, zx_status_t, /* no attributes */, 5,
    (pager, pager_vmo, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint32_t options,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(syscall_next_1, zx_status_t, /* no attributes */, 1,
    (arg), (
    int32_t arg))

----- next-public-header.h END -----


----- go-syscall-arm64-asm.go START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#include "textflag.h"

// func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status
TEXT ·Sys_bti_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_create(SB)

// func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status
TEXT ·Sys_bti_pin(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_pin(SB)

// func Sys_bti_release_quarantine(handle Handle) Status
TEXT ·Sys_bti_release_quarantine(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_release_quarantine(SB)

// func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status
TEXT ·Sys_cache_flush(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cache_flush(SB)

// func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_channel_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_create(SB)

// func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_read(SB)

// func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_read_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_read_etc(SB)

// func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status
TEXT ·Sys_channel_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_write(SB)

// func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status
TEXT ·Sys_channel_write_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_write_etc(SB)

// func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_noretry(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_noretry(SB)

// func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_finish(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_finish(SB)

// func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call(SB)

// func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc_noretry(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc_noretry(SB)

// func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc_finish(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc_finish(SB)

// func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc(SB)

// func Sys_clock_get_monotonic() Time
TEXT ·Sys_clock_get_monotonic(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_monotonic(SB)

// func Sys_clock_get_monotonic_via_kernel() Time
TEXT ·Sys_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB)

// func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status
TEXT ·Sys_clock_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_create(SB)

// func Sys_clock_read(handle Handle, now *Time) Status
TEXT ·Sys_clock_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_read(SB)

// func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status
TEXT ·Sys_clock_get_details(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_details(SB)

// func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status
TEXT ·Sys_clock_update(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_update(SB)

// func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_cprng_draw_once(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_draw_once(SB)

// func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
TEXT ·Sys_cprng_draw(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_draw(SB)

// func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_cprng_add_entropy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_add_entropy(SB)

// func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status
TEXT ·Sys_debug_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_read(SB)

// func Sys_debug_write(buffer *uint8, buffer_size uint) Status
TEXT ·Sys_debug_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_write(SB)

// func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status
TEXT ·Sys_debug_send_command(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_send_command(SB)

// func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status
TEXT ·Sys_debuglog_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_create(SB)

// func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_debuglog_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_write(SB)

// func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_debuglog_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_read(SB)

// func Sys_event_create(options uint32, out *Handle) Status
TEXT ·Sys_event_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_event_create(SB)

// func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_eventpair_create(SB)

// func Sys_exception_get_thread(handle Handle, out *Handle) Status
TEXT ·Sys_exception_get_thread(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_exception_get_thread(SB)

// func Sys_exception_get_process(handle Handle, out *Handle) Status
TEXT ·Sys_exception_get_process(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_exception_get_process(SB)

// func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_fifo_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_create(SB)

// func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status
TEXT ·Sys_fifo_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_read(SB)

// func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status
TEXT ·Sys_fifo_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_write(SB)

// func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status
TEXT ·Sys_framebuffer_get_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_framebuffer_get_info(SB)

// func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status
TEXT ·Sys_framebuffer_set_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_framebuffer_set_range(SB)

// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wait(SB)

// func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status
TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake(SB)

// func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_requeue(SB)

// func Sys_futex_wake_single_owner(value_ptr *int32) Status
TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)

// func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)

// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_get_owner(SB)

// func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status
TEXT ·Sys_guest_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_guest_create(SB)

// func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status
TEXT ·Sys_guest_set_trap(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_guest_set_trap(SB)

// func Sys_handle_close(handle Handle) Status
TEXT ·Sys_handle_close(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_close(SB)

// func Sys_handle_close_many(handles *Handle, num_handles uint) Status
TEXT ·Sys_handle_close_many(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_close_many(SB)

// func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status
TEXT ·Sys_handle_duplicate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_duplicate(SB)

// func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status
TEXT ·Sys_handle_replace(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_replace(SB)

// func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status
TEXT ·Sys_interrupt_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_create(SB)

// func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status
TEXT ·Sys_interrupt_bind(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_bind(SB)

// func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status
TEXT ·Sys_interrupt_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_wait(SB)

// func Sys_interrupt_destroy(handle Handle) Status
TEXT ·Sys_interrupt_destroy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_destroy(SB)

// func Sys_interrupt_ack(handle Handle) Status
TEXT ·Sys_interrupt_ack(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_ack(SB)

// func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status
TEXT ·Sys_interrupt_trigger(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_trigger(SB)

// func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status
TEXT ·Sys_interrupt_bind_vcpu(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_bind_vcpu(SB)

// func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status
TEXT ·Sys_iommu_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_iommu_create(SB)

// func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status
TEXT ·Sys_ioports_request(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ioports_request(SB)

// func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status
TEXT ·Sys_ioports_release(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ioports_release(SB)

// func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status
TEXT ·Sys_job_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_create(SB)

// func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status
TEXT ·Sys_job_set_policy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_set_policy(SB)

// func Sys_job_set_critical(job Handle, options uint32, process Handle) Status
TEXT ·Sys_job_set_critical(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_set_critical(SB)

// func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status
TEXT ·Sys_ktrace_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_read(SB)

// func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status
TEXT ·Sys_ktrace_control(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_control(SB)

// func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status
TEXT ·Sys_ktrace_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_write(SB)

// func Sys_nanosleep(deadline Time) Status
TEXT ·Sys_nanosleep(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_nanosleep(SB)

// func Sys_ticks_get() int64
TEXT ·Sys_ticks_get(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_get(SB)

// func Sys_ticks_per_second() int64
TEXT ·Sys_ticks_per_second(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_per_second(SB)

// func Sys_deadline_after(nanoseconds Duration) Time
TEXT ·Sys_deadline_after(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_deadline_after(SB)

// func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status
TEXT ·Sys_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB)

// func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)
TEXT ·Sys_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB)

// func Sys_ticks_get_via_kernel() int64
TEXT ·Sys_ticks_get_via_kernel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_get_via_kernel(SB)

// func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status
TEXT ·Sys_msi_allocate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_msi_allocate(SB)

// func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status
TEXT ·Sys_msi_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_msi_create(SB)

// func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status
TEXT ·Sys_mtrace_control(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_mtrace_control(SB)

// func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status
TEXT ·Sys_object_wait_one(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_one(SB)

// func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status
TEXT ·Sys_object_wait_many(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_many(SB)

// func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status
TEXT ·Sys_object_wait_async(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_async(SB)

// func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status
TEXT ·Sys_object_signal(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_signal(SB)

// func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status
TEXT ·Sys_object_signal_peer(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_signal_peer(SB)

// func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
TEXT ·Sys_object_get_property(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_property(SB)

// func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
TEXT ·Sys_object_set_property(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_set_property(SB)

// func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
TEXT ·Sys_object_get_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_info(SB)

// func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status
TEXT ·Sys_object_get_child(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_child(SB)

// func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status
TEXT ·Sys_object_set_profile(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_set_profile(SB)

// func Sys_pager_create(options uint32, out *Handle) Status
TEXT ·Sys_pager_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_create(SB)

// func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status
TEXT ·Sys_pager_create_vmo(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_create_vmo(SB)

// func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status
TEXT ·Sys_pager_detach_vmo(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_detach_vmo(SB)

// func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status
TEXT ·Sys_pager_supply_pages(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_supply_pages(SB)

// func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status
TEXT ·Sys_pager_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_op_range(SB)

// func Sys_pager_query_dirty_ranges(pager Handle, pager_vmo Handle, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
TEXT ·Sys_pager_query_dirty_ranges(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_query_dirty_ranges(SB)

// func Sys_pager_query_vmo_stats(pager Handle, pager_vmo Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_pager_query_vmo_stats(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_query_vmo_stats(SB)

// func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status
TEXT ·Sys_pc_firmware_tables(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pc_firmware_tables(SB)

// func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status
TEXT ·Sys_pci_get_nth_device(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_get_nth_device(SB)

// func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status
TEXT ·Sys_pci_enable_bus_master(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_enable_bus_master(SB)

// func Sys_pci_reset_device(handle Handle) Status
TEXT ·Sys_pci_reset_device(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_reset_device(SB)

// func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status
TEXT ·Sys_pci_config_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_config_read(SB)

// func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status
TEXT ·Sys_pci_config_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_config_write(SB)

// func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status
TEXT ·Sys_pci_cfg_pio_rw(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_cfg_pio_rw(SB)

// func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status
TEXT ·Sys_pci_get_bar(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_get_bar(SB)

// func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status
TEXT ·Sys_pci_map_interrupt(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_map_interrupt(SB)

// func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status
TEXT ·Sys_pci_query_irq_mode(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_query_irq_mode(SB)

// func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status
TEXT ·Sys_pci_set_irq_mode(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_set_irq_mode(SB)

// func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status
TEXT ·Sys_pci_init(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_init(SB)

// func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status
TEXT ·Sys_pci_add_subtract_io_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_add_subtract_io_range(SB)

// func Sys_pmt_unpin(handle Handle) Status
TEXT ·Sys_pmt_unpin(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pmt_unpin(SB)

// func Sys_port_create(options uint32, out *Handle) Status
TEXT ·Sys_port_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_create(SB)

// func Sys_port_queue(handle Handle, packet *int) Status
TEXT ·Sys_port_queue(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_queue(SB)

// func Sys_port_wait(handle Handle, deadline Time, packet *int) Status
TEXT ·Sys_port_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_wait(SB)

// func Sys_port_cancel(handle Handle, source Handle, key uint64) Status
TEXT ·Sys_port_cancel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_cancel(SB)

// func Sys_process_exit(retcode int64)
TEXT ·Sys_process_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_exit(SB)

// func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status
TEXT ·Sys_process_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_create(SB)

// func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status
TEXT ·Sys_process_start(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_start(SB)

// func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_process_read_memory(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_read_memory(SB)

// func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_process_write_memory(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_write_memory(SB)

// func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status
TEXT ·Sys_profile_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_profile_create(SB)

// func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status
TEXT ·Sys_resource_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_resource_create(SB)

// func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status
TEXT ·Sys_smc_call(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_smc_call(SB)

// func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_socket_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_create(SB)

// func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_socket_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_write(SB)

// func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_socket_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_read(SB)

// func Sys_socket_set_disposition(handle Handle, disposition uint32, disposition_peer uint32) Status
TEXT ·Sys_socket_set_disposition(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_set_disposition(SB)

// func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status
TEXT ·Sys_stream_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_create(SB)

// func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_writev(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_writev(SB)

// func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_writev_at(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_writev_at(SB)

// func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_readv(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_readv(SB)

// func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_readv_at(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_readv_at(SB)

// func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status
TEXT ·Sys_stream_seek(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_seek(SB)

// func Sys_syscall_test_0() Status
TEXT ·Sys_syscall_test_0(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_0(SB)

// func Sys_syscall_test_1(a int32) Status
TEXT ·Sys_syscall_test_1(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_1(SB)

// func Sys_syscall_test_2(a int32, b int32) Status
TEXT ·Sys_syscall_test_2(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_2(SB)

// func Sys_syscall_test_3(a int32, b int32, c int32) Status
TEXT ·Sys_syscall_test_3(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_3(SB)

// func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status
TEXT ·Sys_syscall_test_4(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_4(SB)

// func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status
TEXT ·Sys_syscall_test_5(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_5(SB)

// func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status
TEXT ·Sys_syscall_test_6(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_6(SB)

// func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status
TEXT ·Sys_syscall_test_7(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_7(SB)

// func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status
TEXT ·Sys_syscall_test_8(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_8(SB)

// func Sys_syscall_next_1(arg int32) Status
TEXT ·Sys_syscall_next_1(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_next_1(SB)

// func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status
TEXT ·Sys_syscall_test_wrapper(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_wrapper(SB)

// func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status
TEXT ·Sys_syscall_test_handle_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_handle_create(SB)

// func Sys_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64
TEXT ·Sys_syscall_test_widening_unsigned_narrow(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_unsigned_narrow(SB)

// func Sys_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64
TEXT ·Sys_syscall_test_widening_signed_narrow(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_signed_narrow(SB)

// func Sys_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64
TEXT ·Sys_syscall_test_widening_unsigned_wide(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_unsigned_wide(SB)

// func Sys_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64
TEXT ·Sys_syscall_test_widening_signed_wide(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_signed_wide(SB)

// func Sys_system_get_dcache_line_size() uint32
TEXT ·Sys_system_get_dcache_line_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_dcache_line_size(SB)

// func Sys_system_get_num_cpus() uint32
TEXT ·Sys_system_get_num_cpus(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_num_cpus(SB)

// func Sys_system_get_version_string() unsafe.Pointer
TEXT ·Sys_system_get_version_string(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_version_string(SB)

// func Sys_system_get_page_size() uint32
TEXT ·Sys_system_get_page_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_page_size(SB)

// func Sys_system_get_physmem() uint64
TEXT ·Sys_system_get_physmem(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_physmem(SB)

// func Sys_system_get_features(kind uint32, features *uint32) Status
TEXT ·Sys_system_get_features(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_features(SB)

// func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status
TEXT ·Sys_system_get_event(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_event(SB)

// func Sys_system_set_performance_info(resource Handle, topic uint32, info unsafe.Pointer, count uint) Status
TEXT ·Sys_system_set_performance_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_set_performance_info(SB)

// func Sys_system_get_performance_info(resource Handle, topic uint32, count uint, info unsafe.Pointer, output_count *uint) Status
TEXT ·Sys_system_get_performance_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_performance_info(SB)

// func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status
TEXT ·Sys_system_mexec(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_mexec(SB)

// func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_system_mexec_payload_get(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_mexec_payload_get(SB)

// func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status
TEXT ·Sys_system_powerctl(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_powerctl(SB)

// func Sys_task_suspend(handle Handle, token *Handle) Status
TEXT ·Sys_task_suspend(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_suspend(SB)

// func Sys_task_suspend_token(handle Handle, token *Handle) Status
TEXT ·Sys_task_suspend_token(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_suspend_token(SB)

// func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status
TEXT ·Sys_task_create_exception_channel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_create_exception_channel(SB)

// func Sys_task_kill(handle Handle) Status
TEXT ·Sys_task_kill(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_kill(SB)

// func Sys_thread_exit()
TEXT ·Sys_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_exit(SB)

// func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status
TEXT ·Sys_thread_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_create(SB)

// func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status
TEXT ·Sys_thread_start(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_start(SB)

// func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_thread_read_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_read_state(SB)

// func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_thread_write_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_write_state(SB)

// func Sys_thread_legacy_yield(options uint32) Status
TEXT ·Sys_thread_legacy_yield(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_legacy_yield(SB)

// func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status
TEXT ·Sys_timer_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_create(SB)

// func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status
TEXT ·Sys_timer_set(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_set(SB)

// func Sys_timer_cancel(handle Handle) Status
TEXT ·Sys_timer_cancel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_cancel(SB)

// func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status
TEXT ·Sys_vcpu_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_create(SB)

// func Sys_vcpu_enter(handle Handle, packet *int) Status
TEXT ·Sys_vcpu_enter(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_enter(SB)

// func Sys_vcpu_kick(handle Handle) Status
TEXT ·Sys_vcpu_kick(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_kick(SB)

// func Sys_vcpu_interrupt(handle Handle, vector uint32) Status
TEXT ·Sys_vcpu_interrupt(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_interrupt(SB)

// func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vcpu_read_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_read_state(SB)

// func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vcpu_write_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_write_state(SB)

// func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status
TEXT ·Sys_vmar_allocate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_allocate(SB)

// func Sys_vmar_destroy(handle Handle) Status
TEXT ·Sys_vmar_destroy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_destroy(SB)

// func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status
TEXT ·Sys_vmar_map(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_map(SB)

// func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status
TEXT ·Sys_vmar_unmap(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_unmap(SB)

// func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status
TEXT ·Sys_vmar_protect(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_protect(SB)

// func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vmar_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_op_range(SB)

// func Sys_vmo_create(size uint64, options uint32, out *Handle) Status
TEXT ·Sys_vmo_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create(SB)

// func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
TEXT ·Sys_vmo_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_read(SB)

// func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
TEXT ·Sys_vmo_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_write(SB)

// func Sys_vmo_get_size(handle Handle, size *uint64) Status
TEXT ·Sys_vmo_get_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_get_size(SB)

// func Sys_vmo_set_size(handle Handle, size uint64) Status
TEXT ·Sys_vmo_set_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_set_size(SB)

// func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vmo_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_op_range(SB)

// func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status
TEXT ·Sys_vmo_create_child(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_child(SB)

// func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status
TEXT ·Sys_vmo_set_cache_policy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_set_cache_policy(SB)

// func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status
TEXT ·Sys_vmo_replace_as_executable(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_replace_as_executable(SB)

// func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status
TEXT ·Sys_vmo_create_contiguous(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_contiguous(SB)

// func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status
TEXT ·Sys_vmo_create_physical(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_physical(SB)

----- go-syscall-arm64-asm.go END -----


----- go-syscall-stubs.go START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

package zx

import "unsafe"

//go:noescape
//go:nosplit
func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status

//go:noescape
//go:nosplit
func Sys_bti_release_quarantine(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status

//go:noescape
//go:nosplit
func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status

//go:noescape
//go:nosplit
func Sys_clock_get_monotonic() Time

//go:noescape
//go:nosplit
func Sys_clock_get_monotonic_via_kernel() Time

//go:noescape
//go:nosplit
func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_clock_read(handle Handle, now *Time) Status

//go:noescape
//go:nosplit
func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status

//go:noescape
//go:nosplit
func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status

//go:noescape
//go:nosplit
func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)

//go:noescape
//go:nosplit
func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_debug_write(buffer *uint8, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_event_create(options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status

//go:noescape
//go:nosplit
func Sys_exception_get_thread(handle Handle, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_exception_get_process(handle Handle, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status

//go:noescape
//go:nosplit
func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status

//go:noescape
//go:nosplit
func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status

//go:noescape
//go:nosplit
func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status

//go:noescape
//go:nosplit
func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status

//go:noescape
//go:nosplit
func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status

//go:noescape
//go:nosplit
func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status

//go:noescape
//go:nosplit
func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status

//go:noescape
//go:nosplit
func Sys_futex_wake_single_owner(value_ptr *int32) Status

//go:noescape
//go:nosplit
func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status

//go:noescape
//go:nosplit
func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status

//go:noescape
//go:nosplit
func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status

//go:noescape
//go:nosplit
func Sys_handle_close(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_handle_close_many(handles *Handle, num_handles uint) Status

//go:noescape
//go:nosplit
func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status

//go:noescape
//go:nosplit
func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status

//go:noescape
//go:nosplit
func Sys_interrupt_destroy(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_interrupt_ack(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status

//go:noescape
//go:nosplit
func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status

//go:noescape
//go:nosplit
func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status

//go:noescape
//go:nosplit
func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status

//go:noescape
//go:nosplit
func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status

//go:noescape
//go:nosplit
func Sys_job_set_critical(job Handle, options uint32, process Handle) Status

//go:noescape
//go:nosplit
func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status

//go:noescape
//go:nosplit
func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status

//go:noescape
//go:nosplit
func Sys_nanosleep(deadline Time) Status

//go:noescape
//go:nosplit
func Sys_ticks_get() int64

//go:noescape
//go:nosplit
func Sys_ticks_per_second() int64

//go:noescape
//go:nosplit
func Sys_deadline_after(nanoseconds Duration) Time

//go:noescape
//go:nosplit
func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status

//go:noescape
//go:nosplit
func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)

//go:noescape
//go:nosplit
func Sys_ticks_get_via_kernel() int64

//go:noescape
//go:nosplit
func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status

//go:noescape
//go:nosplit
func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status

//go:noescape
//go:nosplit
func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status

//go:noescape
//go:nosplit
func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status

//go:noescape
//go:nosplit
func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status

//go:noescape
//go:nosplit
func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status

//go:noescape
//go:nosplit
func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status

//go:noescape
//go:nosplit
func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status

//go:noescape
//go:nosplit
func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status

//go:noescape
//go:nosplit
func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status

//go:noescape
//go:nosplit
func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status

//go:noescape
//go:nosplit
func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status

//go:noescape
//go:nosplit
func Sys_pager_create(options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status

//go:noescape
//go:nosplit
func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status

//go:noescape
//go:nosplit
func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status

//go:noescape
//go:nosplit
func Sys_pager_query_dirty_ranges(pager Handle, pager_vmo Handle, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status

//go:noescape
//go:nosplit
func Sys_pager_query_vmo_stats(pager Handle, pager_vmo Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status

//go:noescape
//go:nosplit
func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_reset_device(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status

//go:noescape
//go:nosplit
func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status

//go:noescape
//go:nosplit
func Sys_pmt_unpin(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_port_create(options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_port_queue(handle Handle, packet *int) Status

//go:noescape
//go:nosplit
func Sys_port_wait(handle Handle, deadline Time, packet *int) Status

//go:noescape
//go:nosplit
func Sys_port_cancel(handle Handle, source Handle, key uint64) Status

//go:noescape
//go:nosplit
func Sys_process_exit(retcode int64)

//go:noescape
//go:nosplit
func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status

//go:noescape
//go:nosplit
func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status

//go:noescape
//go:nosplit
func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status

//go:noescape
//go:nosplit
func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status

//go:noescape
//go:nosplit
func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status

//go:noescape
//go:nosplit
func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_socket_set_disposition(handle Handle, disposition uint32, disposition_peer uint32) Status

//go:noescape
//go:nosplit
func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status

//go:noescape
//go:nosplit
func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status

//go:noescape
//go:nosplit
func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_0() Status

//go:noescape
//go:nosplit
func Sys_syscall_test_1(a int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_2(a int32, b int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_3(a int32, b int32, c int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_next_1(arg int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64

//go:noescape
//go:nosplit
func Sys_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64

//go:noescape
//go:nosplit
func Sys_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64

//go:noescape
//go:nosplit
func Sys_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64

//go:noescape
//go:nosplit
func Sys_system_get_dcache_line_size() uint32

//go:noescape
//go:nosplit
func Sys_system_get_num_cpus() uint32

//go:noescape
//go:nosplit
func Sys_system_get_version_string() unsafe.Pointer

//go:noescape
//go:nosplit
func Sys_system_get_page_size() uint32

//go:noescape
//go:nosplit
func Sys_system_get_physmem() uint64

//go:noescape
//go:nosplit
func Sys_system_get_features(kind uint32, features *uint32) Status

//go:noescape
//go:nosplit
func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status

//go:noescape
//go:nosplit
func Sys_system_set_performance_info(resource Handle, topic uint32, info unsafe.Pointer, count uint) Status

//go:noescape
//go:nosplit
func Sys_system_get_performance_info(resource Handle, topic uint32, count uint, info unsafe.Pointer, output_count *uint) Status

//go:noescape
//go:nosplit
func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status

//go:noescape
//go:nosplit
func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status

//go:noescape
//go:nosplit
func Sys_task_suspend(handle Handle, token *Handle) Status

//go:noescape
//go:nosplit
func Sys_task_suspend_token(handle Handle, token *Handle) Status

//go:noescape
//go:nosplit
func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_task_kill(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_thread_exit()

//go:noescape
//go:nosplit
func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status

//go:noescape
//go:nosplit
func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_thread_legacy_yield(options uint32) Status

//go:noescape
//go:nosplit
func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status

//go:noescape
//go:nosplit
func Sys_timer_cancel(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_vcpu_enter(handle Handle, packet *int) Status

//go:noescape
//go:nosplit
func Sys_vcpu_kick(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_vcpu_interrupt(handle Handle, vector uint32) Status

//go:noescape
//go:nosplit
func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status

//go:noescape
//go:nosplit
func Sys_vmar_destroy(handle Handle) Status

//go:noescape
//go:nosplit
func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status

//go:noescape
//go:nosplit
func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status

//go:noescape
//go:nosplit
func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status

//go:noescape
//go:nosplit
func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vmo_create(size uint64, options uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vmo_get_size(handle Handle, size *uint64) Status

//go:noescape
//go:nosplit
func Sys_vmo_set_size(handle Handle, size uint64) Status

//go:noescape
//go:nosplit
func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status

//go:noescape
//go:nosplit
func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status

//go:noescape
//go:nosplit
func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status

//go:noescape
//go:nosplit
func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status

----- go-syscall-stubs.go END -----


----- go-syscall-x86-asm.go START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#include "textflag.h"

// func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status
TEXT ·Sys_bti_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_create(SB)

// func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status
TEXT ·Sys_bti_pin(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_pin(SB)

// func Sys_bti_release_quarantine(handle Handle) Status
TEXT ·Sys_bti_release_quarantine(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_bti_release_quarantine(SB)

// func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status
TEXT ·Sys_cache_flush(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cache_flush(SB)

// func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_channel_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_create(SB)

// func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_read(SB)

// func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_read_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_read_etc(SB)

// func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status
TEXT ·Sys_channel_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_write(SB)

// func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status
TEXT ·Sys_channel_write_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_write_etc(SB)

// func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_noretry(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_noretry(SB)

// func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_finish(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_finish(SB)

// func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call(SB)

// func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc_noretry(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc_noretry(SB)

// func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc_finish(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc_finish(SB)

// func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
TEXT ·Sys_channel_call_etc(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_channel_call_etc(SB)

// func Sys_clock_get_monotonic() Time
TEXT ·Sys_clock_get_monotonic(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_monotonic(SB)

// func Sys_clock_get_monotonic_via_kernel() Time
TEXT ·Sys_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB)

// func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status
TEXT ·Sys_clock_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_create(SB)

// func Sys_clock_read(handle Handle, now *Time) Status
TEXT ·Sys_clock_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_read(SB)

// func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status
TEXT ·Sys_clock_get_details(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get_details(SB)

// func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status
TEXT ·Sys_clock_update(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_update(SB)

// func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_cprng_draw_once(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_draw_once(SB)

// func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
TEXT ·Sys_cprng_draw(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_draw(SB)

// func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_cprng_add_entropy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_cprng_add_entropy(SB)

// func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status
TEXT ·Sys_debug_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_read(SB)

// func Sys_debug_write(buffer *uint8, buffer_size uint) Status
TEXT ·Sys_debug_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_write(SB)

// func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status
TEXT ·Sys_debug_send_command(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debug_send_command(SB)

// func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status
TEXT ·Sys_debuglog_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_create(SB)

// func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_debuglog_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_write(SB)

// func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_debuglog_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_debuglog_read(SB)

// func Sys_event_create(options uint32, out *Handle) Status
TEXT ·Sys_event_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_event_create(SB)

// func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_eventpair_create(SB)

// func Sys_exception_get_thread(handle Handle, out *Handle) Status
TEXT ·Sys_exception_get_thread(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_exception_get_thread(SB)

// func Sys_exception_get_process(handle Handle, out *Handle) Status
TEXT ·Sys_exception_get_process(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_exception_get_process(SB)

// func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_fifo_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_create(SB)

// func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status
TEXT ·Sys_fifo_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_read(SB)

// func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status
TEXT ·Sys_fifo_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_fifo_write(SB)

// func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status
TEXT ·Sys_framebuffer_get_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_framebuffer_get_info(SB)

// func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status
TEXT ·Sys_framebuffer_set_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_framebuffer_set_range(SB)

// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wait(SB)

// func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status
TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake(SB)

// func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_requeue(SB)

// func Sys_futex_wake_single_owner(value_ptr *int32) Status
TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)

// func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)

// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_get_owner(SB)

// func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status
TEXT ·Sys_guest_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_guest_create(SB)

// func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status
TEXT ·Sys_guest_set_trap(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_guest_set_trap(SB)

// func Sys_handle_close(handle Handle) Status
TEXT ·Sys_handle_close(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_close(SB)

// func Sys_handle_close_many(handles *Handle, num_handles uint) Status
TEXT ·Sys_handle_close_many(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_close_many(SB)

// func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status
TEXT ·Sys_handle_duplicate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_duplicate(SB)

// func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status
TEXT ·Sys_handle_replace(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_handle_replace(SB)

// func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status
TEXT ·Sys_interrupt_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_create(SB)

// func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status
TEXT ·Sys_interrupt_bind(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_bind(SB)

// func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status
TEXT ·Sys_interrupt_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_wait(SB)

// func Sys_interrupt_destroy(handle Handle) Status
TEXT ·Sys_interrupt_destroy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_destroy(SB)

// func Sys_interrupt_ack(handle Handle) Status
TEXT ·Sys_interrupt_ack(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_ack(SB)

// func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status
TEXT ·Sys_interrupt_trigger(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_trigger(SB)

// func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status
TEXT ·Sys_interrupt_bind_vcpu(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_interrupt_bind_vcpu(SB)

// func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status
TEXT ·Sys_iommu_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_iommu_create(SB)

// func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status
TEXT ·Sys_ioports_request(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ioports_request(SB)

// func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status
TEXT ·Sys_ioports_release(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ioports_release(SB)

// func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status
TEXT ·Sys_job_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_create(SB)

// func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status
TEXT ·Sys_job_set_policy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_set_policy(SB)

// func Sys_job_set_critical(job Handle, options uint32, process Handle) Status
TEXT ·Sys_job_set_critical(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_set_critical(SB)

// func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status
TEXT ·Sys_ktrace_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_read(SB)

// func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status
TEXT ·Sys_ktrace_control(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_control(SB)

// func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status
TEXT ·Sys_ktrace_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ktrace_write(SB)

// func Sys_nanosleep(deadline Time) Status
TEXT ·Sys_nanosleep(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_nanosleep(SB)

// func Sys_ticks_get() int64
TEXT ·Sys_ticks_get(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_get(SB)

// func Sys_ticks_per_second() int64
TEXT ·Sys_ticks_per_second(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_per_second(SB)

// func Sys_deadline_after(nanoseconds Duration) Time
TEXT ·Sys_deadline_after(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_deadline_after(SB)

// func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status
TEXT ·Sys_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB)

// func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)
TEXT ·Sys_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB)

// func Sys_ticks_get_via_kernel() int64
TEXT ·Sys_ticks_get_via_kernel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_ticks_get_via_kernel(SB)

// func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status
TEXT ·Sys_msi_allocate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_msi_allocate(SB)

// func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status
TEXT ·Sys_msi_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_msi_create(SB)

// func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status
TEXT ·Sys_mtrace_control(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_mtrace_control(SB)

// func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status
TEXT ·Sys_object_wait_one(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_one(SB)

// func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status
TEXT ·Sys_object_wait_many(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_many(SB)

// func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status
TEXT ·Sys_object_wait_async(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_wait_async(SB)

// func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status
TEXT ·Sys_object_signal(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_signal(SB)

// func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status
TEXT ·Sys_object_signal_peer(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_signal_peer(SB)

// func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
TEXT ·Sys_object_get_property(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_property(SB)

// func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
TEXT ·Sys_object_set_property(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_set_property(SB)

// func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
TEXT ·Sys_object_get_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_info(SB)

// func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status
TEXT ·Sys_object_get_child(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_get_child(SB)

// func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status
TEXT ·Sys_object_set_profile(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_object_set_profile(SB)

// func Sys_pager_create(options uint32, out *Handle) Status
TEXT ·Sys_pager_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_create(SB)

// func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status
TEXT ·Sys_pager_create_vmo(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_create_vmo(SB)

// func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status
TEXT ·Sys_pager_detach_vmo(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_detach_vmo(SB)

// func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status
TEXT ·Sys_pager_supply_pages(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_supply_pages(SB)

// func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status
TEXT ·Sys_pager_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_op_range(SB)

// func Sys_pager_query_dirty_ranges(pager Handle, pager_vmo Handle, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
TEXT ·Sys_pager_query_dirty_ranges(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_query_dirty_ranges(SB)

// func Sys_pager_query_vmo_stats(pager Handle, pager_vmo Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_pager_query_vmo_stats(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pager_query_vmo_stats(SB)

// func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status
TEXT ·Sys_pc_firmware_tables(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pc_firmware_tables(SB)

// func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status
TEXT ·Sys_pci_get_nth_device(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_get_nth_device(SB)

// func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status
TEXT ·Sys_pci_enable_bus_master(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_enable_bus_master(SB)

// func Sys_pci_reset_device(handle Handle) Status
TEXT ·Sys_pci_reset_device(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_reset_device(SB)

// func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status
TEXT ·Sys_pci_config_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_config_read(SB)

// func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status
TEXT ·Sys_pci_config_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_config_write(SB)

// func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status
TEXT ·Sys_pci_cfg_pio_rw(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_cfg_pio_rw(SB)

// func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status
TEXT ·Sys_pci_get_bar(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_get_bar(SB)

// func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status
TEXT ·Sys_pci_map_interrupt(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_map_interrupt(SB)

// func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status
TEXT ·Sys_pci_query_irq_mode(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_query_irq_mode(SB)

// func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status
TEXT ·Sys_pci_set_irq_mode(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_set_irq_mode(SB)

// func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status
TEXT ·Sys_pci_init(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_init(SB)

// func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status
TEXT ·Sys_pci_add_subtract_io_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pci_add_subtract_io_range(SB)

// func Sys_pmt_unpin(handle Handle) Status
TEXT ·Sys_pmt_unpin(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pmt_unpin(SB)

// func Sys_port_create(options uint32, out *Handle) Status
TEXT ·Sys_port_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_create(SB)

// func Sys_port_queue(handle Handle, packet *int) Status
TEXT ·Sys_port_queue(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_queue(SB)

// func Sys_port_wait(handle Handle, deadline Time, packet *int) Status
TEXT ·Sys_port_wait(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_wait(SB)

// func Sys_port_cancel(handle Handle, source Handle, key uint64) Status
TEXT ·Sys_port_cancel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_port_cancel(SB)

// func Sys_process_exit(retcode int64)
TEXT ·Sys_process_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_exit(SB)

// func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status
TEXT ·Sys_process_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_create(SB)

// func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status
TEXT ·Sys_process_start(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_start(SB)

// func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_process_read_memory(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_read_memory(SB)

// func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_process_write_memory(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_process_write_memory(SB)

// func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status
TEXT ·Sys_profile_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_profile_create(SB)

// func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status
TEXT ·Sys_resource_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_resource_create(SB)

// func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status
TEXT ·Sys_smc_call(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_smc_call(SB)

// func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status
TEXT ·Sys_socket_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_create(SB)

// func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_socket_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_write(SB)

// func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
TEXT ·Sys_socket_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_read(SB)

// func Sys_socket_set_disposition(handle Handle, disposition uint32, disposition_peer uint32) Status
TEXT ·Sys_socket_set_disposition(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_set_disposition(SB)

// func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status
TEXT ·Sys_stream_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_create(SB)

// func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_writev(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_writev(SB)

// func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_writev_at(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_writev_at(SB)

// func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_readv(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_readv(SB)

// func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
TEXT ·Sys_stream_readv_at(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_readv_at(SB)

// func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status
TEXT ·Sys_stream_seek(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_stream_seek(SB)

// func Sys_syscall_test_0() Status
TEXT ·Sys_syscall_test_0(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_0(SB)

// func Sys_syscall_test_1(a int32) Status
TEXT ·Sys_syscall_test_1(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_1(SB)

// func Sys_syscall_test_2(a int32, b int32) Status
TEXT ·Sys_syscall_test_2(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_2(SB)

// func Sys_syscall_test_3(a int32, b int32, c int32) Status
TEXT ·Sys_syscall_test_3(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_3(SB)

// func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status
TEXT ·Sys_syscall_test_4(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_4(SB)

// func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status
TEXT ·Sys_syscall_test_5(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_5(SB)

// func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status
TEXT ·Sys_syscall_test_6(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_6(SB)

// func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status
TEXT ·Sys_syscall_test_7(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_7(SB)

// func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status
TEXT ·Sys_syscall_test_8(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_8(SB)

// func Sys_syscall_next_1(arg int32) Status
TEXT ·Sys_syscall_next_1(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_next_1(SB)

// func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status
TEXT ·Sys_syscall_test_wrapper(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_wrapper(SB)

// func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status
TEXT ·Sys_syscall_test_handle_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_handle_create(SB)

// func Sys_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64
TEXT ·Sys_syscall_test_widening_unsigned_narrow(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_unsigned_narrow(SB)

// func Sys_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64
TEXT ·Sys_syscall_test_widening_signed_narrow(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_signed_narrow(SB)

// func Sys_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64
TEXT ·Sys_syscall_test_widening_unsigned_wide(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_unsigned_wide(SB)

// func Sys_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64
TEXT ·Sys_syscall_test_widening_signed_wide(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_syscall_test_widening_signed_wide(SB)

// func Sys_system_get_dcache_line_size() uint32
TEXT ·Sys_system_get_dcache_line_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_dcache_line_size(SB)

// func Sys_system_get_num_cpus() uint32
TEXT ·Sys_system_get_num_cpus(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_num_cpus(SB)

// func Sys_system_get_version_string() unsafe.Pointer
TEXT ·Sys_system_get_version_string(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_version_string(SB)

// func Sys_system_get_page_size() uint32
TEXT ·Sys_system_get_page_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_page_size(SB)

// func Sys_system_get_physmem() uint64
TEXT ·Sys_system_get_physmem(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_physmem(SB)

// func Sys_system_get_features(kind uint32, features *uint32) Status
TEXT ·Sys_system_get_features(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_features(SB)

// func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status
TEXT ·Sys_system_get_event(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_event(SB)

// func Sys_system_set_performance_info(resource Handle, topic uint32, info unsafe.Pointer, count uint) Status
TEXT ·Sys_system_set_performance_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_set_performance_info(SB)

// func Sys_system_get_performance_info(resource Handle, topic uint32, count uint, info unsafe.Pointer, output_count *uint) Status
TEXT ·Sys_system_get_performance_info(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_performance_info(SB)

// func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status
TEXT ·Sys_system_mexec(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_mexec(SB)

// func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_system_mexec_payload_get(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_mexec_payload_get(SB)

// func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status
TEXT ·Sys_system_powerctl(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_powerctl(SB)

// func Sys_task_suspend(handle Handle, token *Handle) Status
TEXT ·Sys_task_suspend(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_suspend(SB)

// func Sys_task_suspend_token(handle Handle, token *Handle) Status
TEXT ·Sys_task_suspend_token(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_suspend_token(SB)

// func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status
TEXT ·Sys_task_create_exception_channel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_create_exception_channel(SB)

// func Sys_task_kill(handle Handle) Status
TEXT ·Sys_task_kill(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_kill(SB)

// func Sys_thread_exit()
TEXT ·Sys_thread_exit(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_exit(SB)

// func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status
TEXT ·Sys_thread_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_create(SB)

// func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status
TEXT ·Sys_thread_start(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_start(SB)

// func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_thread_read_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_read_state(SB)

// func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_thread_write_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_write_state(SB)

// func Sys_thread_legacy_yield(options uint32) Status
TEXT ·Sys_thread_legacy_yield(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_thread_legacy_yield(SB)

// func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status
TEXT ·Sys_timer_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_create(SB)

// func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status
TEXT ·Sys_timer_set(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_set(SB)

// func Sys_timer_cancel(handle Handle) Status
TEXT ·Sys_timer_cancel(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_timer_cancel(SB)

// func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status
TEXT ·Sys_vcpu_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_create(SB)

// func Sys_vcpu_enter(handle Handle, packet *int) Status
TEXT ·Sys_vcpu_enter(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_enter(SB)

// func Sys_vcpu_kick(handle Handle) Status
TEXT ·Sys_vcpu_kick(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_kick(SB)

// func Sys_vcpu_interrupt(handle Handle, vector uint32) Status
TEXT ·Sys_vcpu_interrupt(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_interrupt(SB)

// func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vcpu_read_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_read_state(SB)

// func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vcpu_write_state(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vcpu_write_state(SB)

// func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status
TEXT ·Sys_vmar_allocate(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_allocate(SB)

// func Sys_vmar_destroy(handle Handle) Status
TEXT ·Sys_vmar_destroy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_destroy(SB)

// func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status
TEXT ·Sys_vmar_map(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_map(SB)

// func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status
TEXT ·Sys_vmar_unmap(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_unmap(SB)

// func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status
TEXT ·Sys_vmar_protect(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_protect(SB)

// func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vmar_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_op_range(SB)

// func Sys_vmo_create(size uint64, options uint32, out *Handle) Status
TEXT ·Sys_vmo_create(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create(SB)

// func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
TEXT ·Sys_vmo_read(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_read(SB)

// func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
TEXT ·Sys_vmo_write(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_write(SB)

// func Sys_vmo_get_size(handle Handle, size *uint64) Status
TEXT ·Sys_vmo_get_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_get_size(SB)

// func Sys_vmo_set_size(handle Handle, size uint64) Status
TEXT ·Sys_vmo_set_size(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_set_size(SB)

// func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status
TEXT ·Sys_vmo_op_range(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_op_range(SB)

// func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status
TEXT ·Sys_vmo_create_child(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_child(SB)

// func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status
TEXT ·Sys_vmo_set_cache_policy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_set_cache_policy(SB)

// func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status
TEXT ·Sys_vmo_replace_as_executable(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_replace_as_executable(SB)

// func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status
TEXT ·Sys_vmo_create_contiguous(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_contiguous(SB)

// func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status
TEXT ·Sys_vmo_create_physical(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmo_create_physical(SB)

----- go-syscall-x86-asm.go END -----


----- go-vdso-arm64-calls.s START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

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

// func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_bti_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW iommu+0(FP), R0
	MOVW options+4(FP), R1
	MOVD bti_id+8(FP), R2
	MOVD out+16(FP), R3
	BL vdso_zx_bti_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, num_addrs uint, pmt unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_bti_pin(SB),NOSPLIT,$0-60
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVW vmo+8(FP), R2
	MOVD offset+16(FP), R3
	MOVD size+24(FP), R4
	MOVD addrs+32(FP), R5
	MOVD num_addrs+40(FP), R6
	MOVD pmt+48(FP), R7
	BL vdso_zx_bti_pin(SB)
	MOVW R0, ret+56(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_bti_release_quarantine(handle uint32) int32
TEXT runtime·vdsoCall_zx_bti_release_quarantine(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_bti_release_quarantine(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32
TEXT runtime·vdsoCall_zx_cache_flush(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD addr+0(FP), R0
	MOVD size+8(FP), R1
	MOVW options+16(FP), R2
	BL vdso_zx_cache_flush(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out0+8(FP), R1
	MOVD out1+16(FP), R2
	BL vdso_zx_channel_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-52
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD bytes+8(FP), R2
	MOVD handles+16(FP), R3
	MOVW num_bytes+24(FP), R4
	MOVW num_handles+28(FP), R5
	MOVD actual_bytes+32(FP), R6
	MOVD actual_handles+40(FP), R7
	BL vdso_zx_channel_read(SB)
	MOVW R0, ret+48(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-52
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD bytes+8(FP), R2
	MOVD handles+16(FP), R3
	MOVW num_bytes+24(FP), R4
	MOVW num_handles+28(FP), R5
	MOVD actual_bytes+32(FP), R6
	MOVD actual_handles+40(FP), R7
	BL vdso_zx_channel_read_etc(SB)
	MOVW R0, ret+48(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD bytes+8(FP), R2
	MOVW num_bytes+16(FP), R3
	MOVD handles+24(FP), R4
	MOVW num_handles+32(FP), R5
	BL vdso_zx_channel_write(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD bytes+8(FP), R2
	MOVW num_bytes+16(FP), R3
	MOVD handles+24(FP), R4
	MOVW num_handles+32(FP), R5
	BL vdso_zx_channel_write_etc(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD deadline+8(FP), R2
	MOVD args+16(FP), R3
	MOVD actual_bytes+24(FP), R4
	MOVD actual_handles+32(FP), R5
	BL vdso_zx_channel_call_noretry(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD deadline+0(FP), R0
	MOVD args+8(FP), R1
	MOVD actual_bytes+16(FP), R2
	MOVD actual_handles+24(FP), R3
	BL vdso_zx_channel_call_finish(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD deadline+8(FP), R2
	MOVD args+16(FP), R3
	MOVD actual_bytes+24(FP), R4
	MOVD actual_handles+32(FP), R5
	BL vdso_zx_channel_call(SB)
	MOVW R0, ret+40(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_channel_call_etc_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_etc_noretry(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD deadline+8(FP), R2
	MOVD args+16(FP), R3
	MOVD actual_bytes+24(FP), R4
	MOVD actual_handles+32(FP), R5
	BL vdso_zx_channel_call_etc_noretry(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_etc_finish(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD deadline+0(FP), R0
	MOVD args+8(FP), R1
	MOVD actual_bytes+16(FP), R2
	MOVD actual_handles+24(FP), R3
	BL vdso_zx_channel_call_etc_finish(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_etc(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD deadline+8(FP), R2
	MOVD args+16(FP), R3
	MOVD actual_bytes+24(FP), R4
	MOVD actual_handles+32(FP), R5
	BL vdso_zx_channel_call_etc(SB)
	MOVW R0, ret+40(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_get_monotonic() int64
TEXT runtime·vdsoCall_zx_clock_get_monotonic(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_clock_get_monotonic(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_get_monotonic_via_kernel() int64
TEXT runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_clock_get_monotonic_via_kernel(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD options+0(FP), R0
	MOVD args+8(FP), R1
	MOVD out+16(FP), R2
	BL vdso_zx_clock_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_read(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD now+8(FP), R1
	BL vdso_zx_clock_read(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_get_details(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD options+8(FP), R1
	MOVD details+16(FP), R2
	BL vdso_zx_clock_get_details(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_update(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD options+8(FP), R1
	MOVD args+16(FP), R2
	BL vdso_zx_clock_update(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_cprng_draw_once(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD buffer+0(FP), R0
	MOVD buffer_size+8(FP), R1
	BL vdso_zx_cprng_draw_once(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
TEXT runtime·vdsoCall_zx_cprng_draw(SB),NOSPLIT,$0-16
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD buffer+0(FP), R0
	MOVD buffer_size+8(FP), R1
	BL vdso_zx_cprng_draw(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_cprng_add_entropy(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD buffer+0(FP), R0
	MOVD buffer_size+8(FP), R1
	BL vdso_zx_cprng_add_entropy(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_debug_read(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD buffer+8(FP), R1
	MOVD buffer_size+16(FP), R2
	MOVD actual+24(FP), R3
	BL vdso_zx_debug_read(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_debug_write(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD buffer+0(FP), R0
	MOVD buffer_size+8(FP), R1
	BL vdso_zx_debug_write(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD buffer+8(FP), R1
	MOVD buffer_size+16(FP), R2
	BL vdso_zx_debug_send_command(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_debuglog_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW options+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_debuglog_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_debuglog_write(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_debuglog_read(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_event_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_event_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_eventpair_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out0+8(FP), R1
	MOVD out1+16(FP), R2
	BL vdso_zx_eventpair_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_exception_get_thread(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_exception_get_thread(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_exception_get_process(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_exception_get_process(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD elem_count+0(FP), R0
	MOVD elem_size+8(FP), R1
	MOVW options+16(FP), R2
	MOVD out0+24(FP), R3
	MOVD out1+32(FP), R4
	BL vdso_zx_fifo_create(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, data_size uint, actual_count unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_fifo_read(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD elem_size+8(FP), R1
	MOVD data+16(FP), R2
	MOVD data_size+24(FP), R3
	MOVD actual_count+32(FP), R4
	BL vdso_zx_fifo_read(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD elem_size+8(FP), R1
	MOVD data+16(FP), R2
	MOVD count+24(FP), R3
	MOVD actual_count+32(FP), R4
	BL vdso_zx_fifo_write(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD format+8(FP), R1
	MOVD width+16(FP), R2
	MOVD height+24(FP), R3
	MOVD stride+32(FP), R4
	BL vdso_zx_framebuffer_get_info(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW vmo+4(FP), R1
	MOVW len+8(FP), R2
	MOVW format+12(FP), R3
	MOVW width+16(FP), R4
	MOVW height+20(FP), R5
	MOVW stride+24(FP), R6
	BL vdso_zx_framebuffer_set_range(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVW current_value+8(FP), R1
	MOVW new_futex_owner+12(FP), R2
	MOVD deadline+16(FP), R3
	BL vdso_zx_futex_wait(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32
TEXT runtime·vdsoCall_zx_futex_wake(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVW wake_count+8(FP), R1
	BL vdso_zx_futex_wake(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVW wake_count+8(FP), R1
	MOVW current_value+12(FP), R2
	MOVD requeue_ptr+16(FP), R3
	MOVW requeue_count+24(FP), R4
	MOVW new_requeue_owner+28(FP), R5
	BL vdso_zx_futex_requeue(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	BL vdso_zx_futex_wake_single_owner(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVW current_value+8(FP), R1
	MOVD requeue_ptr+16(FP), R2
	MOVW requeue_count+24(FP), R3
	MOVW new_requeue_owner+28(FP), R4
	BL vdso_zx_futex_requeue_single_owner(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVD koid+8(FP), R1
	BL vdso_zx_futex_get_owner(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_guest_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW options+4(FP), R1
	MOVD guest_handle+8(FP), R2
	MOVD vmar_handle+16(FP), R3
	BL vdso_zx_guest_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32
TEXT runtime·vdsoCall_zx_guest_set_trap(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD addr+8(FP), R2
	MOVD size+16(FP), R3
	MOVW port_handle+24(FP), R4
	MOVD key+32(FP), R5
	BL vdso_zx_guest_set_trap(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_handle_close(handle uint32) int32
TEXT runtime·vdsoCall_zx_handle_close(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_handle_close(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32
TEXT runtime·vdsoCall_zx_handle_close_many(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD handles+0(FP), R0
	MOVD num_handles+8(FP), R1
	BL vdso_zx_handle_close_many(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_handle_duplicate(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW rights+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_handle_duplicate(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_handle_replace(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW rights+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_handle_replace(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW src_obj+0(FP), R0
	MOVW src_num+4(FP), R1
	MOVW options+8(FP), R2
	MOVD out_handle+16(FP), R3
	BL vdso_zx_interrupt_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_bind(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW port_handle+4(FP), R1
	MOVD key+8(FP), R2
	MOVW options+16(FP), R3
	BL vdso_zx_interrupt_bind(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_interrupt_wait(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVD out_timestamp+8(FP), R1
	BL vdso_zx_interrupt_wait(SB)
	MOVW R0, ret+16(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_destroy(handle uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_destroy(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_interrupt_destroy(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_ack(handle uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_ack(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_interrupt_ack(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32
TEXT runtime·vdsoCall_zx_interrupt_trigger(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD timestamp+8(FP), R2
	BL vdso_zx_interrupt_trigger(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_interrupt_bind_vcpu(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW vcpu+4(FP), R1
	MOVW options+8(FP), R2
	BL vdso_zx_interrupt_bind_vcpu(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW typ+4(FP), R1
	MOVD desc+8(FP), R2
	MOVD desc_size+16(FP), R3
	MOVD out+24(FP), R4
	BL vdso_zx_iommu_create(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32
TEXT runtime·vdsoCall_zx_ioports_request(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD io_addr+4(FP), R1
	MOVW len+8(FP), R2
	BL vdso_zx_ioports_request(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ioports_release(resource uint32, io_addr uint16, len uint32) int32
TEXT runtime·vdsoCall_zx_ioports_release(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD io_addr+4(FP), R1
	MOVW len+8(FP), R2
	BL vdso_zx_ioports_release(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_job_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW parent_job+0(FP), R0
	MOVW options+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_job_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) int32
TEXT runtime·vdsoCall_zx_job_set_policy(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVW topic+8(FP), R2
	MOVD policy+16(FP), R3
	MOVW policy_size+24(FP), R4
	BL vdso_zx_job_set_policy(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_job_set_critical(job uint32, options uint32, process uint32) int32
TEXT runtime·vdsoCall_zx_job_set_critical(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW job+0(FP), R0
	MOVW options+4(FP), R1
	MOVW process+8(FP), R2
	BL vdso_zx_job_set_critical(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD data+8(FP), R1
	MOVW offset+16(FP), R2
	MOVD data_size+24(FP), R3
	MOVD actual+32(FP), R4
	BL vdso_zx_ktrace_read(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_ktrace_control(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW action+4(FP), R1
	MOVW options+8(FP), R2
	MOVD ptr+16(FP), R3
	BL vdso_zx_ktrace_control(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32
TEXT runtime·vdsoCall_zx_ktrace_write(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW id+4(FP), R1
	MOVW arg0+8(FP), R2
	MOVW arg1+12(FP), R3
	BL vdso_zx_ktrace_write(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_nanosleep(deadline int64) int32
TEXT runtime·vdsoCall_zx_nanosleep(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD deadline+0(FP), R0
	BL vdso_zx_nanosleep(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ticks_get() int64
TEXT runtime·vdsoCall_zx_ticks_get(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_ticks_get(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ticks_per_second() int64
TEXT runtime·vdsoCall_zx_ticks_per_second(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_ticks_per_second(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_deadline_after(nanoseconds int64) int64
TEXT runtime·vdsoCall_zx_deadline_after(SB),NOSPLIT,$0-16
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD nanoseconds+0(FP), R0
	BL vdso_zx_deadline_after(SB)
	MOVD R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW vmar_handle+0(FP), R0
	MOVD addr+8(FP), R1
	MOVD size+16(FP), R2
	MOVW close_handle+24(FP), R3
	BL vdso_zx_vmar_unmap_handle_close_thread_exit(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-24
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD value_ptr+0(FP), R0
	MOVW wake_count+8(FP), R1
	MOVW new_value+12(FP), R2
	MOVW close_handle+16(FP), R3
	BL vdso_zx_futex_wake_handle_close_thread_exit(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_ticks_get_via_kernel() int64
TEXT runtime·vdsoCall_zx_ticks_get_via_kernel(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_ticks_get_via_kernel(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_msi_allocate(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW count+4(FP), R1
	MOVD out_allocation+8(FP), R2
	BL vdso_zx_msi_allocate(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_msi_create(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVW msi_id+8(FP), R2
	MOVW vmo+12(FP), R3
	MOVD vmo_offset+16(FP), R4
	MOVD out_interrupt+24(FP), R5
	BL vdso_zx_msi_create(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVW action+8(FP), R2
	MOVW options+12(FP), R3
	MOVD ptr+16(FP), R4
	MOVD ptr_size+24(FP), R5
	BL vdso_zx_mtrace_control(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW signals+4(FP), R1
	MOVD deadline+8(FP), R2
	MOVD observed+16(FP), R3
	BL vdso_zx_object_wait_one(SB)
	MOVW R0, ret+24(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_object_wait_many(items unsafe.Pointer, num_items uint, deadline int64) int32
TEXT runtime·vdsoCall_zx_object_wait_many(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVD items+0(FP), R0
	MOVD num_items+8(FP), R1
	MOVD deadline+16(FP), R2
	BL vdso_zx_object_wait_many(SB)
	MOVW R0, ret+24(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW port+4(FP), R1
	MOVD key+8(FP), R2
	MOVW signals+16(FP), R3
	MOVW options+20(FP), R4
	BL vdso_zx_object_wait_async(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32
TEXT runtime·vdsoCall_zx_object_signal(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW clear_mask+4(FP), R1
	MOVW set_mask+8(FP), R2
	BL vdso_zx_object_signal(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW clear_mask+4(FP), R1
	MOVW set_mask+8(FP), R2
	BL vdso_zx_object_signal_peer(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW property+4(FP), R1
	MOVD value+8(FP), R2
	MOVD value_size+16(FP), R3
	BL vdso_zx_object_get_property(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW property+4(FP), R1
	MOVD value+8(FP), R2
	MOVD value_size+16(FP), R3
	BL vdso_zx_object_set_property(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW topic+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	MOVD actual+24(FP), R4
	MOVD avail+32(FP), R5
	BL vdso_zx_object_get_info(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD koid+8(FP), R1
	MOVW rights+16(FP), R2
	MOVD out+24(FP), R3
	BL vdso_zx_object_get_child(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32
TEXT runtime·vdsoCall_zx_object_set_profile(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW profile+4(FP), R1
	MOVW options+8(FP), R2
	BL vdso_zx_object_set_profile(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pager_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_pager_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW options+4(FP), R1
	MOVW port+8(FP), R2
	MOVD key+16(FP), R3
	MOVD size+24(FP), R4
	MOVD out+32(FP), R5
	BL vdso_zx_pager_create_vmo(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32
TEXT runtime·vdsoCall_zx_pager_detach_vmo(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW vmo+4(FP), R1
	BL vdso_zx_pager_detach_vmo(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW pager_vmo+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD length+16(FP), R3
	MOVW aux_vmo+24(FP), R4
	MOVD aux_offset+32(FP), R5
	BL vdso_zx_pager_supply_pages(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32
TEXT runtime·vdsoCall_zx_pager_op_range(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW op+4(FP), R1
	MOVW pager_vmo+8(FP), R2
	MOVD offset+16(FP), R3
	MOVD length+24(FP), R4
	MOVD data+32(FP), R5
	BL vdso_zx_pager_op_range(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pager_query_dirty_ranges(pager uint32, pager_vmo uint32, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pager_query_dirty_ranges(SB),NOSPLIT,$0-60
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW pager_vmo+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD length+16(FP), R3
	MOVD buffer+24(FP), R4
	MOVD buffer_size+32(FP), R5
	MOVD actual+40(FP), R6
	MOVD avail+48(FP), R7
	BL vdso_zx_pager_query_dirty_ranges(SB)
	MOVW R0, ret+56(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pager_query_vmo_stats(pager uint32, pager_vmo uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_pager_query_vmo_stats(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW pager+0(FP), R0
	MOVW pager_vmo+4(FP), R1
	MOVW options+8(FP), R2
	MOVD buffer+16(FP), R3
	MOVD buffer_size+24(FP), R4
	BL vdso_zx_pager_query_vmo_stats(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD acpi_rsdp+8(FP), R1
	MOVD smbios+16(FP), R2
	BL vdso_zx_pc_firmware_tables(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_get_nth_device(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW index+4(FP), R1
	MOVD out_info+8(FP), R2
	MOVD out_handle+16(FP), R3
	BL vdso_zx_pci_get_nth_device(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32
TEXT runtime·vdsoCall_zx_pci_enable_bus_master(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW enable+4(FP), R1
	BL vdso_zx_pci_enable_bus_master(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_reset_device(handle uint32) int32
TEXT runtime·vdsoCall_zx_pci_reset_device(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_pci_reset_device(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_config_read(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD offset+4(FP), R1
	MOVD width+8(FP), R2
	MOVD out_val+16(FP), R3
	BL vdso_zx_pci_config_read(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32
TEXT runtime·vdsoCall_zx_pci_config_write(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD offset+4(FP), R1
	MOVD width+8(FP), R2
	MOVW val+16(FP), R3
	BL vdso_zx_pci_config_write(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32
TEXT runtime·vdsoCall_zx_pci_cfg_pio_rw(SB),NOSPLIT,$0-68
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD bus+8(FP), R1
	MOVD dev+16(FP), R2
	MOVD funk+24(FP), R3
	MOVD offset+32(FP), R4
	MOVD val+40(FP), R5
	MOVD width+48(FP), R6
	MOVW write+56(FP), R7
	BL vdso_zx_pci_cfg_pio_rw(SB)
	MOVW R0, ret+64(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_get_bar(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW bar_num+4(FP), R1
	MOVD out_bar+8(FP), R2
	MOVD out_handle+16(FP), R3
	BL vdso_zx_pci_get_bar(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_map_interrupt(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW which_irq+4(FP), R1
	MOVD out_handle+8(FP), R2
	BL vdso_zx_pci_map_interrupt(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_query_irq_mode(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW mode+4(FP), R1
	MOVD out_max_irqs+8(FP), R2
	BL vdso_zx_pci_query_irq_mode(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32
TEXT runtime·vdsoCall_zx_pci_set_irq_mode(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW mode+4(FP), R1
	MOVW requested_irq_count+8(FP), R2
	BL vdso_zx_pci_set_irq_mode(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32
TEXT runtime·vdsoCall_zx_pci_init(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD init_buf+8(FP), R1
	MOVW len+16(FP), R2
	BL vdso_zx_pci_init(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32
TEXT runtime·vdsoCall_zx_pci_add_subtract_io_range(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW mmio+4(FP), R1
	MOVD base+8(FP), R2
	MOVD len+16(FP), R3
	MOVW add+24(FP), R4
	BL vdso_zx_pci_add_subtract_io_range(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_pmt_unpin(handle uint32) int32
TEXT runtime·vdsoCall_zx_pmt_unpin(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_pmt_unpin(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_port_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_queue(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD packet+8(FP), R1
	BL vdso_zx_port_queue(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_port_wait(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVD deadline+8(FP), R1
	MOVD packet+16(FP), R2
	BL vdso_zx_port_wait(SB)
	MOVW R0, ret+24(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32
TEXT runtime·vdsoCall_zx_port_cancel(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW source+4(FP), R1
	MOVD key+8(FP), R2
	BL vdso_zx_port_cancel(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_process_exit(retcode int64)
TEXT runtime·vdsoCall_zx_process_exit(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD retcode+0(FP), R0
	BL vdso_zx_process_exit(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-52
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW job+0(FP), R0
	MOVD name+8(FP), R1
	MOVD name_size+16(FP), R2
	MOVW options+24(FP), R3
	MOVD proc_handle+32(FP), R4
	MOVD vmar_handle+40(FP), R5
	BL vdso_zx_process_create(SB)
	MOVW R0, ret+48(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW thread+4(FP), R1
	MOVD entry+8(FP), R2
	MOVD stack+16(FP), R3
	MOVW arg1+24(FP), R4
	MOVD arg2+32(FP), R5
	BL vdso_zx_process_start(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD vaddr+8(FP), R1
	MOVD buffer+16(FP), R2
	MOVD buffer_size+24(FP), R3
	MOVD actual+32(FP), R4
	BL vdso_zx_process_read_memory(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD vaddr+8(FP), R1
	MOVD buffer+16(FP), R2
	MOVD buffer_size+24(FP), R3
	MOVD actual+32(FP), R4
	BL vdso_zx_process_write_memory(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW root_job+0(FP), R0
	MOVW options+4(FP), R1
	MOVD profile+8(FP), R2
	MOVD out+16(FP), R3
	BL vdso_zx_profile_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-52
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW parent_rsrc+0(FP), R0
	MOVW options+4(FP), R1
	MOVD base+8(FP), R2
	MOVD size+16(FP), R3
	MOVD name+24(FP), R4
	MOVD name_size+32(FP), R5
	MOVD resource_out+40(FP), R6
	BL vdso_zx_resource_create(SB)
	MOVW R0, ret+48(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD parameters+8(FP), R1
	MOVD out_smc_result+16(FP), R2
	BL vdso_zx_smc_call(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_socket_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVD out0+8(FP), R1
	MOVD out1+16(FP), R2
	BL vdso_zx_socket_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	MOVD actual+24(FP), R4
	BL vdso_zx_socket_write(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	MOVD actual+24(FP), R4
	BL vdso_zx_socket_read(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_socket_set_disposition(handle uint32, disposition uint32, disposition_peer uint32) int32
TEXT runtime·vdsoCall_zx_socket_set_disposition(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW disposition+4(FP), R1
	MOVW disposition_peer+8(FP), R2
	BL vdso_zx_socket_set_disposition(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVW vmo+4(FP), R1
	MOVD seek+8(FP), R2
	MOVD out_stream+16(FP), R3
	BL vdso_zx_stream_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_writev(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD vector+8(FP), R2
	MOVD num_vector+16(FP), R3
	MOVD actual+24(FP), R4
	BL vdso_zx_stream_writev(SB)
	MOVW R0, ret+32(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_writev_at(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD vector+16(FP), R3
	MOVD num_vector+24(FP), R4
	MOVD actual+32(FP), R5
	BL vdso_zx_stream_writev_at(SB)
	MOVW R0, ret+40(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_readv(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD vector+8(FP), R2
	MOVD num_vector+16(FP), R3
	MOVD actual+24(FP), R4
	BL vdso_zx_stream_readv(SB)
	MOVW R0, ret+32(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_readv_at(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD vector+16(FP), R3
	MOVD num_vector+24(FP), R4
	MOVD actual+32(FP), R5
	BL vdso_zx_stream_readv_at(SB)
	MOVW R0, ret+40(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_seek(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW whence+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD out_seek+16(FP), R3
	BL vdso_zx_stream_seek(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_0() int32
TEXT runtime·vdsoCall_zx_syscall_test_0(SB),NOSPLIT,$0-4
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_syscall_test_0(SB)
	MOVW R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_1(a int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_1(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	BL vdso_zx_syscall_test_1(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_2(a int32, b int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_2(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	BL vdso_zx_syscall_test_2(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_3(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	BL vdso_zx_syscall_test_3(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_4(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	MOVW d+12(FP), R3
	BL vdso_zx_syscall_test_4(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_5(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	MOVW d+12(FP), R3
	MOVW e+16(FP), R4
	BL vdso_zx_syscall_test_5(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_6(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	MOVW d+12(FP), R3
	MOVW e+16(FP), R4
	MOVW f+20(FP), R5
	BL vdso_zx_syscall_test_6(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_7(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	MOVW d+12(FP), R3
	MOVW e+16(FP), R4
	MOVW f+20(FP), R5
	MOVW g_+24(FP), R6
	BL vdso_zx_syscall_test_7(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_8(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	MOVW d+12(FP), R3
	MOVW e+16(FP), R4
	MOVW f+20(FP), R5
	MOVW g_+24(FP), R6
	MOVW h+28(FP), R7
	BL vdso_zx_syscall_test_8(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_next_1(arg int32) int32
TEXT runtime·vdsoCall_zx_syscall_next_1(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW arg+0(FP), R0
	BL vdso_zx_syscall_next_1(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_wrapper(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW a+0(FP), R0
	MOVW b+4(FP), R1
	MOVW c+8(FP), R2
	BL vdso_zx_syscall_test_wrapper(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_syscall_test_handle_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW return_value+0(FP), R0
	MOVD out+8(FP), R1
	BL vdso_zx_syscall_test_handle_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64
TEXT runtime·vdsoCall_zx_syscall_test_widening_unsigned_narrow(SB),NOSPLIT,$0-32
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD a+0(FP), R0
	MOVW b+8(FP), R1
	MOVD c+12(FP), R2
	MOVD d+16(FP), R3
	BL vdso_zx_syscall_test_widening_unsigned_narrow(SB)
	MOVD R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64
TEXT runtime·vdsoCall_zx_syscall_test_widening_signed_narrow(SB),NOSPLIT,$0-32
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD a+0(FP), R0
	MOVW b+8(FP), R1
	MOVD c+12(FP), R2
	MOVD d+16(FP), R3
	BL vdso_zx_syscall_test_widening_signed_narrow(SB)
	MOVD R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64
TEXT runtime·vdsoCall_zx_syscall_test_widening_unsigned_wide(SB),NOSPLIT,$0-32
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD a+0(FP), R0
	MOVW b+8(FP), R1
	MOVD c+12(FP), R2
	MOVD d+16(FP), R3
	BL vdso_zx_syscall_test_widening_unsigned_wide(SB)
	MOVD R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64
TEXT runtime·vdsoCall_zx_syscall_test_widening_signed_wide(SB),NOSPLIT,$0-32
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD a+0(FP), R0
	MOVW b+8(FP), R1
	MOVD c+12(FP), R2
	MOVD d+16(FP), R3
	BL vdso_zx_syscall_test_widening_signed_wide(SB)
	MOVD R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_dcache_line_size() uint32
TEXT runtime·vdsoCall_zx_system_get_dcache_line_size(SB),NOSPLIT,$0-4
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_system_get_dcache_line_size(SB)
	MOVW R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_num_cpus() uint32
TEXT runtime·vdsoCall_zx_system_get_num_cpus(SB),NOSPLIT,$0-4
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_system_get_num_cpus(SB)
	MOVW R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_version_string() unsafe.Pointer
TEXT runtime·vdsoCall_zx_system_get_version_string(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_system_get_version_string(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_page_size() uint32
TEXT runtime·vdsoCall_zx_system_get_page_size(SB),NOSPLIT,$0-4
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_system_get_page_size(SB)
	MOVW R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_physmem() uint64
TEXT runtime·vdsoCall_zx_system_get_physmem(SB),NOSPLIT,$0-8
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_system_get_physmem(SB)
	MOVD R0, ret+0(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_get_features(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW kind+0(FP), R0
	MOVD features+8(FP), R1
	BL vdso_zx_system_get_features(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW root_job+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD event+8(FP), R2
	BL vdso_zx_system_get_event(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_set_performance_info(resource uint32, topic uint32, info unsafe.Pointer, count uint) int32
TEXT runtime·vdsoCall_zx_system_set_performance_info(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW topic+4(FP), R1
	MOVD info+8(FP), R2
	MOVD count+16(FP), R3
	BL vdso_zx_system_set_performance_info(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_get_performance_info(resource uint32, topic uint32, count uint, info unsafe.Pointer, output_count unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_get_performance_info(SB),NOSPLIT,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW topic+4(FP), R1
	MOVD count+8(FP), R2
	MOVD info+16(FP), R3
	MOVD output_count+24(FP), R4
	BL vdso_zx_system_get_performance_info(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32
TEXT runtime·vdsoCall_zx_system_mexec(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW kernel_vmo+4(FP), R1
	MOVW bootimage_vmo+8(FP), R2
	BL vdso_zx_system_mexec(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD buffer+8(FP), R1
	MOVD buffer_size+16(FP), R2
	BL vdso_zx_system_mexec_payload_get(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_powerctl(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVW cmd+4(FP), R1
	MOVD arg+8(FP), R2
	BL vdso_zx_system_powerctl(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_task_suspend(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD token+8(FP), R1
	BL vdso_zx_task_suspend(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_task_suspend_token(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD token+8(FP), R1
	BL vdso_zx_task_suspend_token(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_task_create_exception_channel(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_task_kill(handle uint32) int32
TEXT runtime·vdsoCall_zx_task_kill(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_task_kill(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_thread_exit()
TEXT runtime·vdsoCall_zx_thread_exit(SB),NOSPLIT,$0-0
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	BL vdso_zx_thread_exit(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW process+0(FP), R0
	MOVD name+8(FP), R1
	MOVD name_size+16(FP), R2
	MOVW options+24(FP), R3
	MOVD out+32(FP), R4
	BL vdso_zx_thread_create(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD thread_entry+8(FP), R1
	MOVD stack+16(FP), R2
	MOVD arg1+24(FP), R3
	MOVD arg2+32(FP), R4
	BL vdso_zx_thread_start(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_thread_read_state(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_thread_write_state(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_thread_legacy_yield(options uint32) int32
TEXT runtime·vdsoCall_zx_thread_legacy_yield(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	BL vdso_zx_thread_legacy_yield(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_timer_create(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW options+0(FP), R0
	MOVW clock_id+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_timer_create(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32
TEXT runtime·vdsoCall_zx_timer_set(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD deadline+8(FP), R1
	MOVD slack+16(FP), R2
	BL vdso_zx_timer_set(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_timer_cancel(handle uint32) int32
TEXT runtime·vdsoCall_zx_timer_cancel(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_timer_cancel(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vcpu_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW guest+0(FP), R0
	MOVW options+4(FP), R1
	MOVD entry+8(FP), R2
	MOVD out+16(FP), R3
	BL vdso_zx_vcpu_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_enter(handle uint32, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vcpu_enter(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVD packet+8(FP), R1
	BL vdso_zx_vcpu_enter(SB)
	MOVW R0, ret+16(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_kick(handle uint32) int32
TEXT runtime·vdsoCall_zx_vcpu_kick(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_vcpu_kick(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32
TEXT runtime·vdsoCall_zx_vcpu_interrupt(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW vector+4(FP), R1
	BL vdso_zx_vcpu_interrupt(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vcpu_read_state(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_vcpu_read_state(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vcpu_write_state(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW kind+4(FP), R1
	MOVD buffer+8(FP), R2
	MOVD buffer_size+16(FP), R3
	BL vdso_zx_vcpu_write_state(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmar_allocate(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW parent_vmar+0(FP), R0
	MOVW options+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD size+16(FP), R3
	MOVD child_vmar+24(FP), R4
	MOVD child_addr+32(FP), R5
	BL vdso_zx_vmar_allocate(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_destroy(handle uint32) int32
TEXT runtime·vdsoCall_zx_vmar_destroy(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	BL vdso_zx_vmar_destroy(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint, vmo uint32, vmo_offset uint64, len uint, mapped_addr unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmar_map(SB),NOSPLIT,$0-52
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD vmar_offset+8(FP), R2
	MOVW vmo+16(FP), R3
	MOVD vmo_offset+24(FP), R4
	MOVD len+32(FP), R5
	MOVD mapped_addr+40(FP), R6
	BL vdso_zx_vmar_map(SB)
	MOVW R0, ret+48(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint) int32
TEXT runtime·vdsoCall_zx_vmar_unmap(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD addr+8(FP), R1
	MOVD len+16(FP), R2
	BL vdso_zx_vmar_unmap(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint) int32
TEXT runtime·vdsoCall_zx_vmar_protect(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD addr+8(FP), R2
	MOVD len+16(FP), R3
	BL vdso_zx_vmar_protect(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vmar_op_range(SB),NOSPLIT,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW op+4(FP), R1
	MOVD address+8(FP), R2
	MOVD size+16(FP), R3
	MOVD buffer+24(FP), R4
	MOVD buffer_size+32(FP), R5
	BL vdso_zx_vmar_op_range(SB)
	MOVW R0, ret+40(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_create(SB),NOSPLIT,$0-28
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVD size+0(FP), R0
	MOVW options+8(FP), R1
	MOVD out+16(FP), R2
	BL vdso_zx_vmo_create(SB)
	MOVW R0, ret+24(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVD buffer+8(FP), R1
	MOVD offset+16(FP), R2
	MOVD buffer_size+24(FP), R3
	BL vdso_zx_vmo_read(SB)
	MOVW R0, ret+32(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVD buffer+8(FP), R1
	MOVD offset+16(FP), R2
	MOVD buffer_size+24(FP), R3
	BL vdso_zx_vmo_write(SB)
	MOVW R0, ret+32(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vmo_get_size(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD size+8(FP), R1
	BL vdso_zx_vmo_get_size(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32
TEXT runtime·vdsoCall_zx_vmo_set_size(SB),NOSPLIT,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVD size+8(FP), R1
	BL vdso_zx_vmo_set_size(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-44
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	CALL runtime·entersyscall(SB)
	MOVW handle+0(FP), R0
	MOVW op+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD size+16(FP), R3
	MOVD buffer+24(FP), R4
	MOVD buffer_size+32(FP), R5
	BL vdso_zx_vmo_op_range(SB)
	MOVW R0, ret+40(FP)
	BL runtime·exitsyscall(SB)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW options+4(FP), R1
	MOVD offset+8(FP), R2
	MOVD size+16(FP), R3
	MOVD out+24(FP), R4
	BL vdso_zx_vmo_create_child(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

// func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32
TEXT runtime·vdsoCall_zx_vmo_set_cache_policy(SB),NOSPLIT,$0-12
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW cache_policy+4(FP), R1
	BL vdso_zx_vmo_set_cache_policy(SB)
	MOVW R0, ret+8(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-20
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW handle+0(FP), R0
	MOVW vmex+4(FP), R1
	MOVD out+8(FP), R2
	BL vdso_zx_vmo_replace_as_executable(SB)
	MOVW R0, ret+16(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW bti+0(FP), R0
	MOVD size+8(FP), R1
	MOVW alignment_log2+16(FP), R2
	MOVD out+24(FP), R3
	BL vdso_zx_vmo_create_contiguous(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	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,$0-36
	GO_ARGS
	NO_LOCAL_POINTERS
	MOVD g_m(g), R21
	MOVD LR, m_vdsoPC(R21)
	DMB $0xe
	MOVD RSP, R20
	MOVD R20, m_vdsoSP(R21)
	MOVW resource+0(FP), R0
	MOVD paddr+8(FP), R1
	MOVD size+16(FP), R2
	MOVD out+24(FP), R3
	BL vdso_zx_vmo_create_physical(SB)
	MOVW R0, ret+32(FP)
	MOVD g_m(g), R21
	MOVD $0, m_vdsoSP(R21)
	RET

----- go-vdso-arm64-calls.s END -----


----- go-vdso-keys.go START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

package runtime

import "unsafe"

const (
	// vdsoArrayMax is the byte-size of a maximally sized array on this architecture.
	// See cmd/compile/internal/amd64/galign.go arch.MAXWIDTH initialization.
	vdsoArrayMax = 1<<50 - 1
)

var vdsoSymbolKeys = []vdsoSymbolKey{
	{"_zx_bti_create", 0x7833987, &vdso_zx_bti_create},
	{"_zx_bti_pin", 0x2aa0e6da, &vdso_zx_bti_pin},
	{"_zx_bti_release_quarantine", 0x441c1c6b, &vdso_zx_bti_release_quarantine},
	{"_zx_cache_flush", 0x319eccca, &vdso_zx_cache_flush},
	{"_zx_channel_create", 0xe5199281, &vdso_zx_channel_create},
	{"_zx_channel_read", 0xe7169b09, &vdso_zx_channel_read},
	{"_zx_channel_read_etc", 0x77c4cc84, &vdso_zx_channel_read_etc},
	{"_zx_channel_write", 0xca4bbc18, &vdso_zx_channel_write},
	{"_zx_channel_write_etc", 0x43b1dd13, &vdso_zx_channel_write_etc},
	{"_zx_channel_call_noretry", 0xb5ad0b5b, &vdso_zx_channel_call_noretry},
	{"_zx_channel_call_finish", 0x85ce3de9, &vdso_zx_channel_call_finish},
	{"_zx_channel_call", 0xe70e51c9, &vdso_zx_channel_call},
	{"_zx_channel_call_etc_noretry", 0xc3a3e7d6, &vdso_zx_channel_call_etc_noretry},
	{"_zx_channel_call_etc_finish", 0xd3cdf704, &vdso_zx_channel_call_etc_finish},
	{"_zx_channel_call_etc", 0x8639e344, &vdso_zx_channel_call_etc},
	{"_zx_clock_get_monotonic", 0xb00e6115, &vdso_zx_clock_get_monotonic},
	{"_zx_clock_get_monotonic_via_kernel", 0x3dc12b54, &vdso_zx_clock_get_monotonic_via_kernel},
	{"_zx_clock_create", 0x8d73ce14, &vdso_zx_clock_create},
	{"_zx_clock_read", 0x3676d5dc, &vdso_zx_clock_read},
	{"_zx_clock_get_details", 0xb7227265, &vdso_zx_clock_get_details},
	{"_zx_clock_update", 0xb74bec03, &vdso_zx_clock_update},
	{"_zx_cprng_draw_once", 0x40248ce0, &vdso_zx_cprng_draw_once},
	{"_zx_cprng_draw", 0x12929c5c, &vdso_zx_cprng_draw},
	{"_zx_cprng_add_entropy", 0x1617dd47, &vdso_zx_cprng_add_entropy},
	{"_zx_debug_read", 0x6c062397, &vdso_zx_debug_read},
	{"_zx_debug_write", 0xed2c5666, &vdso_zx_debug_write},
	{"_zx_debug_send_command", 0xac6e8203, &vdso_zx_debug_send_command},
	{"_zx_debuglog_create", 0x2504f1, &vdso_zx_debuglog_create},
	{"_zx_debuglog_write", 0x3f7aa088, &vdso_zx_debuglog_write},
	{"_zx_debuglog_read", 0x66c2b179, &vdso_zx_debuglog_read},
	{"_zx_event_create", 0x4c39490a, &vdso_zx_event_create},
	{"_zx_eventpair_create", 0xe3fd9c16, &vdso_zx_eventpair_create},
	{"_zx_exception_get_thread", 0xb1c70bba, &vdso_zx_exception_get_thread},
	{"_zx_exception_get_process", 0xcddbd761, &vdso_zx_exception_get_process},
	{"_zx_fifo_create", 0xf197cb2c, &vdso_zx_fifo_create},
	{"_zx_fifo_read", 0x3ec8acf4, &vdso_zx_fifo_read},
	{"_zx_fifo_write", 0x18400b63, &vdso_zx_fifo_write},
	{"_zx_framebuffer_get_info", 0xe6c88924, &vdso_zx_framebuffer_get_info},
	{"_zx_framebuffer_set_range", 0x364ad6b1, &vdso_zx_framebuffer_set_range},
	{"_zx_futex_wait", 0xb089e255, &vdso_zx_futex_wait},
	{"_zx_futex_wake", 0xb089e288, &vdso_zx_futex_wake},
	{"_zx_futex_requeue", 0xd509be7c, &vdso_zx_futex_requeue},
	{"_zx_futex_wake_single_owner", 0x63970173, &vdso_zx_futex_wake_single_owner},
	{"_zx_futex_requeue_single_owner", 0x8f9a9e7, &vdso_zx_futex_requeue_single_owner},
	{"_zx_futex_get_owner", 0xf16dec6a, &vdso_zx_futex_get_owner},
	{"_zx_guest_create", 0x6f318390, &vdso_zx_guest_create},
	{"_zx_guest_set_trap", 0xffe2547e, &vdso_zx_guest_set_trap},
	{"_zx_handle_close", 0xe769f876, &vdso_zx_handle_close},
	{"_zx_handle_close_many", 0x8a9a3aaa, &vdso_zx_handle_close_many},
	{"_zx_handle_duplicate", 0x3f0a83b, &vdso_zx_handle_duplicate},
	{"_zx_handle_replace", 0xdc2d9edc, &vdso_zx_handle_replace},
	{"_zx_interrupt_create", 0xaa939795, &vdso_zx_interrupt_create},
	{"_zx_interrupt_bind", 0xa25b97be, &vdso_zx_interrupt_bind},
	{"_zx_interrupt_wait", 0xa266f916, &vdso_zx_interrupt_wait},
	{"_zx_interrupt_destroy", 0x2cb5724b, &vdso_zx_interrupt_destroy},
	{"_zx_interrupt_ack", 0x3b390f10, &vdso_zx_interrupt_ack},
	{"_zx_interrupt_trigger", 0x19f00875, &vdso_zx_interrupt_trigger},
	{"_zx_interrupt_bind_vcpu", 0x505f9f1b, &vdso_zx_interrupt_bind_vcpu},
	{"_zx_iommu_create", 0x297b6af, &vdso_zx_iommu_create},
	{"_zx_ioports_request", 0xb8f1c0ad, &vdso_zx_ioports_request},
	{"_zx_ioports_release", 0xb88e6f05, &vdso_zx_ioports_release},
	{"_zx_job_create", 0x6b9cbb63, &vdso_zx_job_create},
	{"_zx_job_set_policy", 0xa45d60ea, &vdso_zx_job_set_policy},
	{"_zx_job_set_critical", 0x129ab785, &vdso_zx_job_set_critical},
	{"_zx_ktrace_read", 0x7a59dbca, &vdso_zx_ktrace_read},
	{"_zx_ktrace_control", 0x15debecf, &vdso_zx_ktrace_control},
	{"_zx_ktrace_write", 0xc5f714f9, &vdso_zx_ktrace_write},
	{"_zx_nanosleep", 0xe9d6145a, &vdso_zx_nanosleep},
	{"_zx_ticks_get", 0xaeb30a32, &vdso_zx_ticks_get},
	{"_zx_ticks_per_second", 0x6ed47574, &vdso_zx_ticks_per_second},
	{"_zx_deadline_after", 0x6253eb5c, &vdso_zx_deadline_after},
	{"_zx_vmar_unmap_handle_close_thread_exit", 0x5a372afb, &vdso_zx_vmar_unmap_handle_close_thread_exit},
	{"_zx_futex_wake_handle_close_thread_exit", 0x49731cb8, &vdso_zx_futex_wake_handle_close_thread_exit},
	{"_zx_ticks_get_via_kernel", 0x821bc851, &vdso_zx_ticks_get_via_kernel},
	{"_zx_msi_allocate", 0xf5370e42, &vdso_zx_msi_allocate},
	{"_zx_msi_create", 0xbf7b04f1, &vdso_zx_msi_create},
	{"_zx_mtrace_control", 0x8c5f3211, &vdso_zx_mtrace_control},
	{"_zx_object_wait_one", 0xed850621, &vdso_zx_object_wait_one},
	{"_zx_object_wait_many", 0x9e247bd4, &vdso_zx_object_wait_many},
	{"_zx_object_wait_async", 0x61e4dcdd, &vdso_zx_object_wait_async},
	{"_zx_object_signal", 0x460ab89, &vdso_zx_object_signal},
	{"_zx_object_signal_peer", 0xe90c8694, &vdso_zx_object_signal_peer},
	{"_zx_object_get_property", 0xd60c8aef, &vdso_zx_object_get_property},
	{"_zx_object_set_property", 0x2174eb7b, &vdso_zx_object_set_property},
	{"_zx_object_get_info", 0x7582ddf6, &vdso_zx_object_get_info},
	{"_zx_object_get_child", 0x256ecc2e, &vdso_zx_object_get_child},
	{"_zx_object_set_profile", 0x7d1d2727, &vdso_zx_object_set_profile},
	{"_zx_pager_create", 0x8d44ed57, &vdso_zx_pager_create},
	{"_zx_pager_create_vmo", 0x564fdd48, &vdso_zx_pager_create_vmo},
	{"_zx_pager_detach_vmo", 0x2072c15d, &vdso_zx_pager_detach_vmo},
	{"_zx_pager_supply_pages", 0x69d1fc7f, &vdso_zx_pager_supply_pages},
	{"_zx_pager_op_range", 0x5e8195ae, &vdso_zx_pager_op_range},
	{"_zx_pager_query_dirty_ranges", 0x1e13a323, &vdso_zx_pager_query_dirty_ranges},
	{"_zx_pager_query_vmo_stats", 0xd3f95338, &vdso_zx_pager_query_vmo_stats},
	{"_zx_pc_firmware_tables", 0x1a05d1fe, &vdso_zx_pc_firmware_tables},
	{"_zx_pci_get_nth_device", 0x32106f08, &vdso_zx_pci_get_nth_device},
	{"_zx_pci_enable_bus_master", 0x76091cab, &vdso_zx_pci_enable_bus_master},
	{"_zx_pci_reset_device", 0xc6496142, &vdso_zx_pci_reset_device},
	{"_zx_pci_config_read", 0xc765eb61, &vdso_zx_pci_config_read},
	{"_zx_pci_config_write", 0xb4851770, &vdso_zx_pci_config_write},
	{"_zx_pci_cfg_pio_rw", 0xda224f4f, &vdso_zx_pci_cfg_pio_rw},
	{"_zx_pci_get_bar", 0x14ec9dc4, &vdso_zx_pci_get_bar},
	{"_zx_pci_map_interrupt", 0x3c5aa3fa, &vdso_zx_pci_map_interrupt},
	{"_zx_pci_query_irq_mode", 0xdf173875, &vdso_zx_pci_query_irq_mode},
	{"_zx_pci_set_irq_mode", 0xedfcadcb, &vdso_zx_pci_set_irq_mode},
	{"_zx_pci_init", 0x4db59c04, &vdso_zx_pci_init},
	{"_zx_pci_add_subtract_io_range", 0x5fcd4b03, &vdso_zx_pci_add_subtract_io_range},
	{"_zx_pmt_unpin", 0x8e954c6f, &vdso_zx_pmt_unpin},
	{"_zx_port_create", 0x5294baed, &vdso_zx_port_create},
	{"_zx_port_queue", 0x8f22883e, &vdso_zx_port_queue},
	{"_zx_port_wait", 0xfc97666e, &vdso_zx_port_wait},
	{"_zx_port_cancel", 0x5166105f, &vdso_zx_port_cancel},
	{"_zx_process_exit", 0xc7f8a64d, &vdso_zx_process_exit},
	{"_zx_process_create", 0xa3a21647, &vdso_zx_process_create},
	{"_zx_process_start", 0xc80873a1, &vdso_zx_process_start},
	{"_zx_process_read_memory", 0x883ab627, &vdso_zx_process_read_memory},
	{"_zx_process_write_memory", 0x18162116, &vdso_zx_process_write_memory},
	{"_zx_profile_create", 0x28e1bf39, &vdso_zx_profile_create},
	{"_zx_resource_create", 0x22a0d150, &vdso_zx_resource_create},
	{"_zx_smc_call", 0x63f0533, &vdso_zx_smc_call},
	{"_zx_socket_create", 0xf536e851, &vdso_zx_socket_create},
	{"_zx_socket_write", 0x5e2d97e8, &vdso_zx_socket_write},
	{"_zx_socket_read", 0xb5443cd9, &vdso_zx_socket_read},
	{"_zx_socket_set_disposition", 0x63347abd, &vdso_zx_socket_set_disposition},
	{"_zx_stream_create", 0x5a685d14, &vdso_zx_stream_create},
	{"_zx_stream_writev", 0x89120a21, &vdso_zx_stream_writev},
	{"_zx_stream_writev_at", 0xcd618395, &vdso_zx_stream_writev_at},
	{"_zx_stream_readv", 0xae7040d2, &vdso_zx_stream_readv},
	{"_zx_stream_readv_at", 0x7bfd08a6, &vdso_zx_stream_readv_at},
	{"_zx_stream_seek", 0xcefc31c8, &vdso_zx_stream_seek},
	{"_zx_syscall_test_0", 0xb62fbcde, &vdso_zx_syscall_test_0},
	{"_zx_syscall_test_1", 0xb62fbcdf, &vdso_zx_syscall_test_1},
	{"_zx_syscall_test_2", 0xb62fbce0, &vdso_zx_syscall_test_2},
	{"_zx_syscall_test_3", 0xb62fbce1, &vdso_zx_syscall_test_3},
	{"_zx_syscall_test_4", 0xb62fbce2, &vdso_zx_syscall_test_4},
	{"_zx_syscall_test_5", 0xb62fbce3, &vdso_zx_syscall_test_5},
	{"_zx_syscall_test_6", 0xb62fbce4, &vdso_zx_syscall_test_6},
	{"_zx_syscall_test_7", 0xb62fbce5, &vdso_zx_syscall_test_7},
	{"_zx_syscall_test_8", 0xb62fbce6, &vdso_zx_syscall_test_8},
	{"_zx_syscall_next_1", 0xa83386fe, &vdso_zx_syscall_next_1},
	{"_zx_syscall_test_wrapper", 0x4d7af9cf, &vdso_zx_syscall_test_wrapper},
	{"_zx_syscall_test_handle_create", 0xb996e56d, &vdso_zx_syscall_test_handle_create},
	{"_zx_syscall_test_widening_unsigned_narrow", 0x2b822f37, &vdso_zx_syscall_test_widening_unsigned_narrow},
	{"_zx_syscall_test_widening_signed_narrow", 0x215c6254, &vdso_zx_syscall_test_widening_signed_narrow},
	{"_zx_syscall_test_widening_unsigned_wide", 0xbaf25fc7, &vdso_zx_syscall_test_widening_unsigned_wide},
	{"_zx_syscall_test_widening_signed_wide", 0x6b7b27a4, &vdso_zx_syscall_test_widening_signed_wide},
	{"_zx_system_get_dcache_line_size", 0x2d6d6511, &vdso_zx_system_get_dcache_line_size},
	{"_zx_system_get_num_cpus", 0x8e92a0c2, &vdso_zx_system_get_num_cpus},
	{"_zx_system_get_version_string", 0xf2daeaf4, &vdso_zx_system_get_version_string},
	{"_zx_system_get_page_size", 0x1495920f, &vdso_zx_system_get_page_size},
	{"_zx_system_get_physmem", 0x5a0e027b, &vdso_zx_system_get_physmem},
	{"_zx_system_get_features", 0x42682df7, &vdso_zx_system_get_features},
	{"_zx_system_get_event", 0x7a0b68da, &vdso_zx_system_get_event},
	{"_zx_system_set_performance_info", 0x17cc1da1, &vdso_zx_system_set_performance_info},
	{"_zx_system_get_performance_info", 0x85f5f115, &vdso_zx_system_get_performance_info},
	{"_zx_system_mexec", 0xd142362b, &vdso_zx_system_mexec},
	{"_zx_system_mexec_payload_get", 0x34bd22b3, &vdso_zx_system_mexec_payload_get},
	{"_zx_system_powerctl", 0x43f6ae09, &vdso_zx_system_powerctl},
	{"_zx_task_suspend", 0xe13ad509, &vdso_zx_task_suspend},
	{"_zx_task_suspend_token", 0x341e98a9, &vdso_zx_task_suspend_token},
	{"_zx_task_create_exception_channel", 0x5318f181, &vdso_zx_task_create_exception_channel},
	{"_zx_task_kill", 0x1ae4e313, &vdso_zx_task_kill},
	{"_zx_thread_exit", 0xed44fe6, &vdso_zx_thread_exit},
	{"_zx_thread_create", 0x100e8a20, &vdso_zx_thread_create},
	{"_zx_thread_start", 0xea59505a, &vdso_zx_thread_start},
	{"_zx_thread_read_state", 0x82fd0a88, &vdso_zx_thread_read_state},
	{"_zx_thread_write_state", 0xb9265eb7, &vdso_zx_thread_write_state},
	{"_zx_thread_legacy_yield", 0x1b146d17, &vdso_zx_thread_legacy_yield},
	{"_zx_timer_create", 0x943773a9, &vdso_zx_timer_create},
	{"_zx_timer_set", 0xa2689081, &vdso_zx_timer_set},
	{"_zx_timer_cancel", 0x9308c91b, &vdso_zx_timer_cancel},
	{"_zx_vcpu_create", 0x458b1fc6, &vdso_zx_vcpu_create},
	{"_zx_vcpu_enter", 0xa5267710, &vdso_zx_vcpu_enter},
	{"_zx_vcpu_kick", 0xcc64db4, &vdso_zx_vcpu_kick},
	{"_zx_vcpu_interrupt", 0x4ddc6df, &vdso_zx_vcpu_interrupt},
	{"_zx_vcpu_read_state", 0xaa78032e, &vdso_zx_vcpu_read_state},
	{"_zx_vcpu_write_state", 0xd0006c1d, &vdso_zx_vcpu_write_state},
	{"_zx_vmar_allocate", 0x4cac85ef, &vdso_zx_vmar_allocate},
	{"_zx_vmar_destroy", 0xc2294134, &vdso_zx_vmar_destroy},
	{"_zx_vmar_map", 0xc7b00448, &vdso_zx_vmar_map},
	{"_zx_vmar_unmap", 0x745a1b6b, &vdso_zx_vmar_unmap},
	{"_zx_vmar_protect", 0x7bee8f8b, &vdso_zx_vmar_protect},
	{"_zx_vmar_op_range", 0x4e117375, &vdso_zx_vmar_op_range},
	{"_zx_vmo_create", 0xb27a765a, &vdso_zx_vmo_create},
	{"_zx_vmo_read", 0xe70ab4a2, &vdso_zx_vmo_read},
	{"_zx_vmo_write", 0xc8c308d1, &vdso_zx_vmo_write},
	{"_zx_vmo_get_size", 0x261c77c0, &vdso_zx_vmo_get_size},
	{"_zx_vmo_set_size", 0x3932724c, &vdso_zx_vmo_set_size},
	{"_zx_vmo_op_range", 0xa73d6b71, &vdso_zx_vmo_op_range},
	{"_zx_vmo_create_child", 0x72c8b3dd, &vdso_zx_vmo_create_child},
	{"_zx_vmo_set_cache_policy", 0xe509bad4, &vdso_zx_vmo_set_cache_policy},
	{"_zx_vmo_replace_as_executable", 0xbd38e576, &vdso_zx_vmo_replace_as_executable},
	{"_zx_vmo_create_contiguous", 0x466a8289, &vdso_zx_vmo_create_contiguous},
	{"_zx_vmo_create_physical", 0x659677b6, &vdso_zx_vmo_create_physical},
}

//go:cgo_import_dynamic vdso_zx_bti_create zx_bti_create
//go:cgo_import_dynamic vdso_zx_bti_pin zx_bti_pin
//go:cgo_import_dynamic vdso_zx_bti_release_quarantine zx_bti_release_quarantine
//go:cgo_import_dynamic vdso_zx_cache_flush zx_cache_flush
//go:cgo_import_dynamic vdso_zx_channel_create zx_channel_create
//go:cgo_import_dynamic vdso_zx_channel_read zx_channel_read
//go:cgo_import_dynamic vdso_zx_channel_read_etc zx_channel_read_etc
//go:cgo_import_dynamic vdso_zx_channel_write zx_channel_write
//go:cgo_import_dynamic vdso_zx_channel_write_etc zx_channel_write_etc
//go:cgo_import_dynamic vdso_zx_channel_call_noretry zx_channel_call_noretry
//go:cgo_import_dynamic vdso_zx_channel_call_finish zx_channel_call_finish
//go:cgo_import_dynamic vdso_zx_channel_call zx_channel_call
//go:cgo_import_dynamic vdso_zx_channel_call_etc_noretry zx_channel_call_etc_noretry
//go:cgo_import_dynamic vdso_zx_channel_call_etc_finish zx_channel_call_etc_finish
//go:cgo_import_dynamic vdso_zx_channel_call_etc zx_channel_call_etc
//go:cgo_import_dynamic vdso_zx_clock_get_monotonic zx_clock_get_monotonic
//go:cgo_import_dynamic vdso_zx_clock_get_monotonic_via_kernel zx_clock_get_monotonic_via_kernel
//go:cgo_import_dynamic vdso_zx_clock_create zx_clock_create
//go:cgo_import_dynamic vdso_zx_clock_read zx_clock_read
//go:cgo_import_dynamic vdso_zx_clock_get_details zx_clock_get_details
//go:cgo_import_dynamic vdso_zx_clock_update zx_clock_update
//go:cgo_import_dynamic vdso_zx_cprng_draw_once zx_cprng_draw_once
//go:cgo_import_dynamic vdso_zx_cprng_draw zx_cprng_draw
//go:cgo_import_dynamic vdso_zx_cprng_add_entropy zx_cprng_add_entropy
//go:cgo_import_dynamic vdso_zx_debug_read zx_debug_read
//go:cgo_import_dynamic vdso_zx_debug_write zx_debug_write
//go:cgo_import_dynamic vdso_zx_debug_send_command zx_debug_send_command
//go:cgo_import_dynamic vdso_zx_debuglog_create zx_debuglog_create
//go:cgo_import_dynamic vdso_zx_debuglog_write zx_debuglog_write
//go:cgo_import_dynamic vdso_zx_debuglog_read zx_debuglog_read
//go:cgo_import_dynamic vdso_zx_event_create zx_event_create
//go:cgo_import_dynamic vdso_zx_eventpair_create zx_eventpair_create
//go:cgo_import_dynamic vdso_zx_exception_get_thread zx_exception_get_thread
//go:cgo_import_dynamic vdso_zx_exception_get_process zx_exception_get_process
//go:cgo_import_dynamic vdso_zx_fifo_create zx_fifo_create
//go:cgo_import_dynamic vdso_zx_fifo_read zx_fifo_read
//go:cgo_import_dynamic vdso_zx_fifo_write zx_fifo_write
//go:cgo_import_dynamic vdso_zx_framebuffer_get_info zx_framebuffer_get_info
//go:cgo_import_dynamic vdso_zx_framebuffer_set_range zx_framebuffer_set_range
//go:cgo_import_dynamic vdso_zx_futex_wait zx_futex_wait
//go:cgo_import_dynamic vdso_zx_futex_wake zx_futex_wake
//go:cgo_import_dynamic vdso_zx_futex_requeue zx_futex_requeue
//go:cgo_import_dynamic vdso_zx_futex_wake_single_owner zx_futex_wake_single_owner
//go:cgo_import_dynamic vdso_zx_futex_requeue_single_owner zx_futex_requeue_single_owner
//go:cgo_import_dynamic vdso_zx_futex_get_owner zx_futex_get_owner
//go:cgo_import_dynamic vdso_zx_guest_create zx_guest_create
//go:cgo_import_dynamic vdso_zx_guest_set_trap zx_guest_set_trap
//go:cgo_import_dynamic vdso_zx_handle_close zx_handle_close
//go:cgo_import_dynamic vdso_zx_handle_close_many zx_handle_close_many
//go:cgo_import_dynamic vdso_zx_handle_duplicate zx_handle_duplicate
//go:cgo_import_dynamic vdso_zx_handle_replace zx_handle_replace
//go:cgo_import_dynamic vdso_zx_interrupt_create zx_interrupt_create
//go:cgo_import_dynamic vdso_zx_interrupt_bind zx_interrupt_bind
//go:cgo_import_dynamic vdso_zx_interrupt_wait zx_interrupt_wait
//go:cgo_import_dynamic vdso_zx_interrupt_destroy zx_interrupt_destroy
//go:cgo_import_dynamic vdso_zx_interrupt_ack zx_interrupt_ack
//go:cgo_import_dynamic vdso_zx_interrupt_trigger zx_interrupt_trigger
//go:cgo_import_dynamic vdso_zx_interrupt_bind_vcpu zx_interrupt_bind_vcpu
//go:cgo_import_dynamic vdso_zx_iommu_create zx_iommu_create
//go:cgo_import_dynamic vdso_zx_ioports_request zx_ioports_request
//go:cgo_import_dynamic vdso_zx_ioports_release zx_ioports_release
//go:cgo_import_dynamic vdso_zx_job_create zx_job_create
//go:cgo_import_dynamic vdso_zx_job_set_policy zx_job_set_policy
//go:cgo_import_dynamic vdso_zx_job_set_critical zx_job_set_critical
//go:cgo_import_dynamic vdso_zx_ktrace_read zx_ktrace_read
//go:cgo_import_dynamic vdso_zx_ktrace_control zx_ktrace_control
//go:cgo_import_dynamic vdso_zx_ktrace_write zx_ktrace_write
//go:cgo_import_dynamic vdso_zx_nanosleep zx_nanosleep
//go:cgo_import_dynamic vdso_zx_ticks_get zx_ticks_get
//go:cgo_import_dynamic vdso_zx_ticks_per_second zx_ticks_per_second
//go:cgo_import_dynamic vdso_zx_deadline_after zx_deadline_after
//go:cgo_import_dynamic vdso_zx_vmar_unmap_handle_close_thread_exit zx_vmar_unmap_handle_close_thread_exit
//go:cgo_import_dynamic vdso_zx_futex_wake_handle_close_thread_exit zx_futex_wake_handle_close_thread_exit
//go:cgo_import_dynamic vdso_zx_ticks_get_via_kernel zx_ticks_get_via_kernel
//go:cgo_import_dynamic vdso_zx_msi_allocate zx_msi_allocate
//go:cgo_import_dynamic vdso_zx_msi_create zx_msi_create
//go:cgo_import_dynamic vdso_zx_mtrace_control zx_mtrace_control
//go:cgo_import_dynamic vdso_zx_object_wait_one zx_object_wait_one
//go:cgo_import_dynamic vdso_zx_object_wait_many zx_object_wait_many
//go:cgo_import_dynamic vdso_zx_object_wait_async zx_object_wait_async
//go:cgo_import_dynamic vdso_zx_object_signal zx_object_signal
//go:cgo_import_dynamic vdso_zx_object_signal_peer zx_object_signal_peer
//go:cgo_import_dynamic vdso_zx_object_get_property zx_object_get_property
//go:cgo_import_dynamic vdso_zx_object_set_property zx_object_set_property
//go:cgo_import_dynamic vdso_zx_object_get_info zx_object_get_info
//go:cgo_import_dynamic vdso_zx_object_get_child zx_object_get_child
//go:cgo_import_dynamic vdso_zx_object_set_profile zx_object_set_profile
//go:cgo_import_dynamic vdso_zx_pager_create zx_pager_create
//go:cgo_import_dynamic vdso_zx_pager_create_vmo zx_pager_create_vmo
//go:cgo_import_dynamic vdso_zx_pager_detach_vmo zx_pager_detach_vmo
//go:cgo_import_dynamic vdso_zx_pager_supply_pages zx_pager_supply_pages
//go:cgo_import_dynamic vdso_zx_pager_op_range zx_pager_op_range
//go:cgo_import_dynamic vdso_zx_pager_query_dirty_ranges zx_pager_query_dirty_ranges
//go:cgo_import_dynamic vdso_zx_pager_query_vmo_stats zx_pager_query_vmo_stats
//go:cgo_import_dynamic vdso_zx_pc_firmware_tables zx_pc_firmware_tables
//go:cgo_import_dynamic vdso_zx_pci_get_nth_device zx_pci_get_nth_device
//go:cgo_import_dynamic vdso_zx_pci_enable_bus_master zx_pci_enable_bus_master
//go:cgo_import_dynamic vdso_zx_pci_reset_device zx_pci_reset_device
//go:cgo_import_dynamic vdso_zx_pci_config_read zx_pci_config_read
//go:cgo_import_dynamic vdso_zx_pci_config_write zx_pci_config_write
//go:cgo_import_dynamic vdso_zx_pci_cfg_pio_rw zx_pci_cfg_pio_rw
//go:cgo_import_dynamic vdso_zx_pci_get_bar zx_pci_get_bar
//go:cgo_import_dynamic vdso_zx_pci_map_interrupt zx_pci_map_interrupt
//go:cgo_import_dynamic vdso_zx_pci_query_irq_mode zx_pci_query_irq_mode
//go:cgo_import_dynamic vdso_zx_pci_set_irq_mode zx_pci_set_irq_mode
//go:cgo_import_dynamic vdso_zx_pci_init zx_pci_init
//go:cgo_import_dynamic vdso_zx_pci_add_subtract_io_range zx_pci_add_subtract_io_range
//go:cgo_import_dynamic vdso_zx_pmt_unpin zx_pmt_unpin
//go:cgo_import_dynamic vdso_zx_port_create zx_port_create
//go:cgo_import_dynamic vdso_zx_port_queue zx_port_queue
//go:cgo_import_dynamic vdso_zx_port_wait zx_port_wait
//go:cgo_import_dynamic vdso_zx_port_cancel zx_port_cancel
//go:cgo_import_dynamic vdso_zx_process_exit zx_process_exit
//go:cgo_import_dynamic vdso_zx_process_create zx_process_create
//go:cgo_import_dynamic vdso_zx_process_start zx_process_start
//go:cgo_import_dynamic vdso_zx_process_read_memory zx_process_read_memory
//go:cgo_import_dynamic vdso_zx_process_write_memory zx_process_write_memory
//go:cgo_import_dynamic vdso_zx_profile_create zx_profile_create
//go:cgo_import_dynamic vdso_zx_resource_create zx_resource_create
//go:cgo_import_dynamic vdso_zx_smc_call zx_smc_call
//go:cgo_import_dynamic vdso_zx_socket_create zx_socket_create
//go:cgo_import_dynamic vdso_zx_socket_write zx_socket_write
//go:cgo_import_dynamic vdso_zx_socket_read zx_socket_read
//go:cgo_import_dynamic vdso_zx_socket_set_disposition zx_socket_set_disposition
//go:cgo_import_dynamic vdso_zx_stream_create zx_stream_create
//go:cgo_import_dynamic vdso_zx_stream_writev zx_stream_writev
//go:cgo_import_dynamic vdso_zx_stream_writev_at zx_stream_writev_at
//go:cgo_import_dynamic vdso_zx_stream_readv zx_stream_readv
//go:cgo_import_dynamic vdso_zx_stream_readv_at zx_stream_readv_at
//go:cgo_import_dynamic vdso_zx_stream_seek zx_stream_seek
//go:cgo_import_dynamic vdso_zx_syscall_test_0 zx_syscall_test_0
//go:cgo_import_dynamic vdso_zx_syscall_test_1 zx_syscall_test_1
//go:cgo_import_dynamic vdso_zx_syscall_test_2 zx_syscall_test_2
//go:cgo_import_dynamic vdso_zx_syscall_test_3 zx_syscall_test_3
//go:cgo_import_dynamic vdso_zx_syscall_test_4 zx_syscall_test_4
//go:cgo_import_dynamic vdso_zx_syscall_test_5 zx_syscall_test_5
//go:cgo_import_dynamic vdso_zx_syscall_test_6 zx_syscall_test_6
//go:cgo_import_dynamic vdso_zx_syscall_test_7 zx_syscall_test_7
//go:cgo_import_dynamic vdso_zx_syscall_test_8 zx_syscall_test_8
//go:cgo_import_dynamic vdso_zx_syscall_next_1 zx_syscall_next_1
//go:cgo_import_dynamic vdso_zx_syscall_test_wrapper zx_syscall_test_wrapper
//go:cgo_import_dynamic vdso_zx_syscall_test_handle_create zx_syscall_test_handle_create
//go:cgo_import_dynamic vdso_zx_syscall_test_widening_unsigned_narrow zx_syscall_test_widening_unsigned_narrow
//go:cgo_import_dynamic vdso_zx_syscall_test_widening_signed_narrow zx_syscall_test_widening_signed_narrow
//go:cgo_import_dynamic vdso_zx_syscall_test_widening_unsigned_wide zx_syscall_test_widening_unsigned_wide
//go:cgo_import_dynamic vdso_zx_syscall_test_widening_signed_wide zx_syscall_test_widening_signed_wide
//go:cgo_import_dynamic vdso_zx_system_get_dcache_line_size zx_system_get_dcache_line_size
//go:cgo_import_dynamic vdso_zx_system_get_num_cpus zx_system_get_num_cpus
//go:cgo_import_dynamic vdso_zx_system_get_version_string zx_system_get_version_string
//go:cgo_import_dynamic vdso_zx_system_get_page_size zx_system_get_page_size
//go:cgo_import_dynamic vdso_zx_system_get_physmem zx_system_get_physmem
//go:cgo_import_dynamic vdso_zx_system_get_features zx_system_get_features
//go:cgo_import_dynamic vdso_zx_system_get_event zx_system_get_event
//go:cgo_import_dynamic vdso_zx_system_set_performance_info zx_system_set_performance_info
//go:cgo_import_dynamic vdso_zx_system_get_performance_info zx_system_get_performance_info
//go:cgo_import_dynamic vdso_zx_system_mexec zx_system_mexec
//go:cgo_import_dynamic vdso_zx_system_mexec_payload_get zx_system_mexec_payload_get
//go:cgo_import_dynamic vdso_zx_system_powerctl zx_system_powerctl
//go:cgo_import_dynamic vdso_zx_task_suspend zx_task_suspend
//go:cgo_import_dynamic vdso_zx_task_suspend_token zx_task_suspend_token
//go:cgo_import_dynamic vdso_zx_task_create_exception_channel zx_task_create_exception_channel
//go:cgo_import_dynamic vdso_zx_task_kill zx_task_kill
//go:cgo_import_dynamic vdso_zx_thread_exit zx_thread_exit
//go:cgo_import_dynamic vdso_zx_thread_create zx_thread_create
//go:cgo_import_dynamic vdso_zx_thread_start zx_thread_start
//go:cgo_import_dynamic vdso_zx_thread_read_state zx_thread_read_state
//go:cgo_import_dynamic vdso_zx_thread_write_state zx_thread_write_state
//go:cgo_import_dynamic vdso_zx_thread_legacy_yield zx_thread_legacy_yield
//go:cgo_import_dynamic vdso_zx_timer_create zx_timer_create
//go:cgo_import_dynamic vdso_zx_timer_set zx_timer_set
//go:cgo_import_dynamic vdso_zx_timer_cancel zx_timer_cancel
//go:cgo_import_dynamic vdso_zx_vcpu_create zx_vcpu_create
//go:cgo_import_dynamic vdso_zx_vcpu_enter zx_vcpu_enter
//go:cgo_import_dynamic vdso_zx_vcpu_kick zx_vcpu_kick
//go:cgo_import_dynamic vdso_zx_vcpu_interrupt zx_vcpu_interrupt
//go:cgo_import_dynamic vdso_zx_vcpu_read_state zx_vcpu_read_state
//go:cgo_import_dynamic vdso_zx_vcpu_write_state zx_vcpu_write_state
//go:cgo_import_dynamic vdso_zx_vmar_allocate zx_vmar_allocate
//go:cgo_import_dynamic vdso_zx_vmar_destroy zx_vmar_destroy
//go:cgo_import_dynamic vdso_zx_vmar_map zx_vmar_map
//go:cgo_import_dynamic vdso_zx_vmar_unmap zx_vmar_unmap
//go:cgo_import_dynamic vdso_zx_vmar_protect zx_vmar_protect
//go:cgo_import_dynamic vdso_zx_vmar_op_range zx_vmar_op_range
//go:cgo_import_dynamic vdso_zx_vmo_create zx_vmo_create
//go:cgo_import_dynamic vdso_zx_vmo_read zx_vmo_read
//go:cgo_import_dynamic vdso_zx_vmo_write zx_vmo_write
//go:cgo_import_dynamic vdso_zx_vmo_get_size zx_vmo_get_size
//go:cgo_import_dynamic vdso_zx_vmo_set_size zx_vmo_set_size
//go:cgo_import_dynamic vdso_zx_vmo_op_range zx_vmo_op_range
//go:cgo_import_dynamic vdso_zx_vmo_create_child zx_vmo_create_child
//go:cgo_import_dynamic vdso_zx_vmo_set_cache_policy zx_vmo_set_cache_policy
//go:cgo_import_dynamic vdso_zx_vmo_replace_as_executable zx_vmo_replace_as_executable
//go:cgo_import_dynamic vdso_zx_vmo_create_contiguous zx_vmo_create_contiguous
//go:cgo_import_dynamic vdso_zx_vmo_create_physical zx_vmo_create_physical

//go:linkname vdso_zx_bti_create vdso_zx_bti_create
//go:linkname vdso_zx_bti_pin vdso_zx_bti_pin
//go:linkname vdso_zx_bti_release_quarantine vdso_zx_bti_release_quarantine
//go:linkname vdso_zx_cache_flush vdso_zx_cache_flush
//go:linkname vdso_zx_channel_create vdso_zx_channel_create
//go:linkname vdso_zx_channel_read vdso_zx_channel_read
//go:linkname vdso_zx_channel_read_etc vdso_zx_channel_read_etc
//go:linkname vdso_zx_channel_write vdso_zx_channel_write
//go:linkname vdso_zx_channel_write_etc vdso_zx_channel_write_etc
//go:linkname vdso_zx_channel_call_noretry vdso_zx_channel_call_noretry
//go:linkname vdso_zx_channel_call_finish vdso_zx_channel_call_finish
//go:linkname vdso_zx_channel_call vdso_zx_channel_call
//go:linkname vdso_zx_channel_call_etc_noretry vdso_zx_channel_call_etc_noretry
//go:linkname vdso_zx_channel_call_etc_finish vdso_zx_channel_call_etc_finish
//go:linkname vdso_zx_channel_call_etc vdso_zx_channel_call_etc
//go:linkname vdso_zx_clock_get_monotonic vdso_zx_clock_get_monotonic
//go:linkname vdso_zx_clock_get_monotonic_via_kernel vdso_zx_clock_get_monotonic_via_kernel
//go:linkname vdso_zx_clock_create vdso_zx_clock_create
//go:linkname vdso_zx_clock_read vdso_zx_clock_read
//go:linkname vdso_zx_clock_get_details vdso_zx_clock_get_details
//go:linkname vdso_zx_clock_update vdso_zx_clock_update
//go:linkname vdso_zx_cprng_draw_once vdso_zx_cprng_draw_once
//go:linkname vdso_zx_cprng_draw vdso_zx_cprng_draw
//go:linkname vdso_zx_cprng_add_entropy vdso_zx_cprng_add_entropy
//go:linkname vdso_zx_debug_read vdso_zx_debug_read
//go:linkname vdso_zx_debug_write vdso_zx_debug_write
//go:linkname vdso_zx_debug_send_command vdso_zx_debug_send_command
//go:linkname vdso_zx_debuglog_create vdso_zx_debuglog_create
//go:linkname vdso_zx_debuglog_write vdso_zx_debuglog_write
//go:linkname vdso_zx_debuglog_read vdso_zx_debuglog_read
//go:linkname vdso_zx_event_create vdso_zx_event_create
//go:linkname vdso_zx_eventpair_create vdso_zx_eventpair_create
//go:linkname vdso_zx_exception_get_thread vdso_zx_exception_get_thread
//go:linkname vdso_zx_exception_get_process vdso_zx_exception_get_process
//go:linkname vdso_zx_fifo_create vdso_zx_fifo_create
//go:linkname vdso_zx_fifo_read vdso_zx_fifo_read
//go:linkname vdso_zx_fifo_write vdso_zx_fifo_write
//go:linkname vdso_zx_framebuffer_get_info vdso_zx_framebuffer_get_info
//go:linkname vdso_zx_framebuffer_set_range vdso_zx_framebuffer_set_range
//go:linkname vdso_zx_futex_wait vdso_zx_futex_wait
//go:linkname vdso_zx_futex_wake vdso_zx_futex_wake
//go:linkname vdso_zx_futex_requeue vdso_zx_futex_requeue
//go:linkname vdso_zx_futex_wake_single_owner vdso_zx_futex_wake_single_owner
//go:linkname vdso_zx_futex_requeue_single_owner vdso_zx_futex_requeue_single_owner
//go:linkname vdso_zx_futex_get_owner vdso_zx_futex_get_owner
//go:linkname vdso_zx_guest_create vdso_zx_guest_create
//go:linkname vdso_zx_guest_set_trap vdso_zx_guest_set_trap
//go:linkname vdso_zx_handle_close vdso_zx_handle_close
//go:linkname vdso_zx_handle_close_many vdso_zx_handle_close_many
//go:linkname vdso_zx_handle_duplicate vdso_zx_handle_duplicate
//go:linkname vdso_zx_handle_replace vdso_zx_handle_replace
//go:linkname vdso_zx_interrupt_create vdso_zx_interrupt_create
//go:linkname vdso_zx_interrupt_bind vdso_zx_interrupt_bind
//go:linkname vdso_zx_interrupt_wait vdso_zx_interrupt_wait
//go:linkname vdso_zx_interrupt_destroy vdso_zx_interrupt_destroy
//go:linkname vdso_zx_interrupt_ack vdso_zx_interrupt_ack
//go:linkname vdso_zx_interrupt_trigger vdso_zx_interrupt_trigger
//go:linkname vdso_zx_interrupt_bind_vcpu vdso_zx_interrupt_bind_vcpu
//go:linkname vdso_zx_iommu_create vdso_zx_iommu_create
//go:linkname vdso_zx_ioports_request vdso_zx_ioports_request
//go:linkname vdso_zx_ioports_release vdso_zx_ioports_release
//go:linkname vdso_zx_job_create vdso_zx_job_create
//go:linkname vdso_zx_job_set_policy vdso_zx_job_set_policy
//go:linkname vdso_zx_job_set_critical vdso_zx_job_set_critical
//go:linkname vdso_zx_ktrace_read vdso_zx_ktrace_read
//go:linkname vdso_zx_ktrace_control vdso_zx_ktrace_control
//go:linkname vdso_zx_ktrace_write vdso_zx_ktrace_write
//go:linkname vdso_zx_nanosleep vdso_zx_nanosleep
//go:linkname vdso_zx_ticks_get vdso_zx_ticks_get
//go:linkname vdso_zx_ticks_per_second vdso_zx_ticks_per_second
//go:linkname vdso_zx_deadline_after vdso_zx_deadline_after
//go:linkname vdso_zx_vmar_unmap_handle_close_thread_exit vdso_zx_vmar_unmap_handle_close_thread_exit
//go:linkname vdso_zx_futex_wake_handle_close_thread_exit vdso_zx_futex_wake_handle_close_thread_exit
//go:linkname vdso_zx_ticks_get_via_kernel vdso_zx_ticks_get_via_kernel
//go:linkname vdso_zx_msi_allocate vdso_zx_msi_allocate
//go:linkname vdso_zx_msi_create vdso_zx_msi_create
//go:linkname vdso_zx_mtrace_control vdso_zx_mtrace_control
//go:linkname vdso_zx_object_wait_one vdso_zx_object_wait_one
//go:linkname vdso_zx_object_wait_many vdso_zx_object_wait_many
//go:linkname vdso_zx_object_wait_async vdso_zx_object_wait_async
//go:linkname vdso_zx_object_signal vdso_zx_object_signal
//go:linkname vdso_zx_object_signal_peer vdso_zx_object_signal_peer
//go:linkname vdso_zx_object_get_property vdso_zx_object_get_property
//go:linkname vdso_zx_object_set_property vdso_zx_object_set_property
//go:linkname vdso_zx_object_get_info vdso_zx_object_get_info
//go:linkname vdso_zx_object_get_child vdso_zx_object_get_child
//go:linkname vdso_zx_object_set_profile vdso_zx_object_set_profile
//go:linkname vdso_zx_pager_create vdso_zx_pager_create
//go:linkname vdso_zx_pager_create_vmo vdso_zx_pager_create_vmo
//go:linkname vdso_zx_pager_detach_vmo vdso_zx_pager_detach_vmo
//go:linkname vdso_zx_pager_supply_pages vdso_zx_pager_supply_pages
//go:linkname vdso_zx_pager_op_range vdso_zx_pager_op_range
//go:linkname vdso_zx_pager_query_dirty_ranges vdso_zx_pager_query_dirty_ranges
//go:linkname vdso_zx_pager_query_vmo_stats vdso_zx_pager_query_vmo_stats
//go:linkname vdso_zx_pc_firmware_tables vdso_zx_pc_firmware_tables
//go:linkname vdso_zx_pci_get_nth_device vdso_zx_pci_get_nth_device
//go:linkname vdso_zx_pci_enable_bus_master vdso_zx_pci_enable_bus_master
//go:linkname vdso_zx_pci_reset_device vdso_zx_pci_reset_device
//go:linkname vdso_zx_pci_config_read vdso_zx_pci_config_read
//go:linkname vdso_zx_pci_config_write vdso_zx_pci_config_write
//go:linkname vdso_zx_pci_cfg_pio_rw vdso_zx_pci_cfg_pio_rw
//go:linkname vdso_zx_pci_get_bar vdso_zx_pci_get_bar
//go:linkname vdso_zx_pci_map_interrupt vdso_zx_pci_map_interrupt
//go:linkname vdso_zx_pci_query_irq_mode vdso_zx_pci_query_irq_mode
//go:linkname vdso_zx_pci_set_irq_mode vdso_zx_pci_set_irq_mode
//go:linkname vdso_zx_pci_init vdso_zx_pci_init
//go:linkname vdso_zx_pci_add_subtract_io_range vdso_zx_pci_add_subtract_io_range
//go:linkname vdso_zx_pmt_unpin vdso_zx_pmt_unpin
//go:linkname vdso_zx_port_create vdso_zx_port_create
//go:linkname vdso_zx_port_queue vdso_zx_port_queue
//go:linkname vdso_zx_port_wait vdso_zx_port_wait
//go:linkname vdso_zx_port_cancel vdso_zx_port_cancel
//go:linkname vdso_zx_process_exit vdso_zx_process_exit
//go:linkname vdso_zx_process_create vdso_zx_process_create
//go:linkname vdso_zx_process_start vdso_zx_process_start
//go:linkname vdso_zx_process_read_memory vdso_zx_process_read_memory
//go:linkname vdso_zx_process_write_memory vdso_zx_process_write_memory
//go:linkname vdso_zx_profile_create vdso_zx_profile_create
//go:linkname vdso_zx_resource_create vdso_zx_resource_create
//go:linkname vdso_zx_smc_call vdso_zx_smc_call
//go:linkname vdso_zx_socket_create vdso_zx_socket_create
//go:linkname vdso_zx_socket_write vdso_zx_socket_write
//go:linkname vdso_zx_socket_read vdso_zx_socket_read
//go:linkname vdso_zx_socket_set_disposition vdso_zx_socket_set_disposition
//go:linkname vdso_zx_stream_create vdso_zx_stream_create
//go:linkname vdso_zx_stream_writev vdso_zx_stream_writev
//go:linkname vdso_zx_stream_writev_at vdso_zx_stream_writev_at
//go:linkname vdso_zx_stream_readv vdso_zx_stream_readv
//go:linkname vdso_zx_stream_readv_at vdso_zx_stream_readv_at
//go:linkname vdso_zx_stream_seek vdso_zx_stream_seek
//go:linkname vdso_zx_syscall_test_0 vdso_zx_syscall_test_0
//go:linkname vdso_zx_syscall_test_1 vdso_zx_syscall_test_1
//go:linkname vdso_zx_syscall_test_2 vdso_zx_syscall_test_2
//go:linkname vdso_zx_syscall_test_3 vdso_zx_syscall_test_3
//go:linkname vdso_zx_syscall_test_4 vdso_zx_syscall_test_4
//go:linkname vdso_zx_syscall_test_5 vdso_zx_syscall_test_5
//go:linkname vdso_zx_syscall_test_6 vdso_zx_syscall_test_6
//go:linkname vdso_zx_syscall_test_7 vdso_zx_syscall_test_7
//go:linkname vdso_zx_syscall_test_8 vdso_zx_syscall_test_8
//go:linkname vdso_zx_syscall_next_1 vdso_zx_syscall_next_1
//go:linkname vdso_zx_syscall_test_wrapper vdso_zx_syscall_test_wrapper
//go:linkname vdso_zx_syscall_test_handle_create vdso_zx_syscall_test_handle_create
//go:linkname vdso_zx_syscall_test_widening_unsigned_narrow vdso_zx_syscall_test_widening_unsigned_narrow
//go:linkname vdso_zx_syscall_test_widening_signed_narrow vdso_zx_syscall_test_widening_signed_narrow
//go:linkname vdso_zx_syscall_test_widening_unsigned_wide vdso_zx_syscall_test_widening_unsigned_wide
//go:linkname vdso_zx_syscall_test_widening_signed_wide vdso_zx_syscall_test_widening_signed_wide
//go:linkname vdso_zx_system_get_dcache_line_size vdso_zx_system_get_dcache_line_size
//go:linkname vdso_zx_system_get_num_cpus vdso_zx_system_get_num_cpus
//go:linkname vdso_zx_system_get_version_string vdso_zx_system_get_version_string
//go:linkname vdso_zx_system_get_page_size vdso_zx_system_get_page_size
//go:linkname vdso_zx_system_get_physmem vdso_zx_system_get_physmem
//go:linkname vdso_zx_system_get_features vdso_zx_system_get_features
//go:linkname vdso_zx_system_get_event vdso_zx_system_get_event
//go:linkname vdso_zx_system_set_performance_info vdso_zx_system_set_performance_info
//go:linkname vdso_zx_system_get_performance_info vdso_zx_system_get_performance_info
//go:linkname vdso_zx_system_mexec vdso_zx_system_mexec
//go:linkname vdso_zx_system_mexec_payload_get vdso_zx_system_mexec_payload_get
//go:linkname vdso_zx_system_powerctl vdso_zx_system_powerctl
//go:linkname vdso_zx_task_suspend vdso_zx_task_suspend
//go:linkname vdso_zx_task_suspend_token vdso_zx_task_suspend_token
//go:linkname vdso_zx_task_create_exception_channel vdso_zx_task_create_exception_channel
//go:linkname vdso_zx_task_kill vdso_zx_task_kill
//go:linkname vdso_zx_thread_exit vdso_zx_thread_exit
//go:linkname vdso_zx_thread_create vdso_zx_thread_create
//go:linkname vdso_zx_thread_start vdso_zx_thread_start
//go:linkname vdso_zx_thread_read_state vdso_zx_thread_read_state
//go:linkname vdso_zx_thread_write_state vdso_zx_thread_write_state
//go:linkname vdso_zx_thread_legacy_yield vdso_zx_thread_legacy_yield
//go:linkname vdso_zx_timer_create vdso_zx_timer_create
//go:linkname vdso_zx_timer_set vdso_zx_timer_set
//go:linkname vdso_zx_timer_cancel vdso_zx_timer_cancel
//go:linkname vdso_zx_vcpu_create vdso_zx_vcpu_create
//go:linkname vdso_zx_vcpu_enter vdso_zx_vcpu_enter
//go:linkname vdso_zx_vcpu_kick vdso_zx_vcpu_kick
//go:linkname vdso_zx_vcpu_interrupt vdso_zx_vcpu_interrupt
//go:linkname vdso_zx_vcpu_read_state vdso_zx_vcpu_read_state
//go:linkname vdso_zx_vcpu_write_state vdso_zx_vcpu_write_state
//go:linkname vdso_zx_vmar_allocate vdso_zx_vmar_allocate
//go:linkname vdso_zx_vmar_destroy vdso_zx_vmar_destroy
//go:linkname vdso_zx_vmar_map vdso_zx_vmar_map
//go:linkname vdso_zx_vmar_unmap vdso_zx_vmar_unmap
//go:linkname vdso_zx_vmar_protect vdso_zx_vmar_protect
//go:linkname vdso_zx_vmar_op_range vdso_zx_vmar_op_range
//go:linkname vdso_zx_vmo_create vdso_zx_vmo_create
//go:linkname vdso_zx_vmo_read vdso_zx_vmo_read
//go:linkname vdso_zx_vmo_write vdso_zx_vmo_write
//go:linkname vdso_zx_vmo_get_size vdso_zx_vmo_get_size
//go:linkname vdso_zx_vmo_set_size vdso_zx_vmo_set_size
//go:linkname vdso_zx_vmo_op_range vdso_zx_vmo_op_range
//go:linkname vdso_zx_vmo_create_child vdso_zx_vmo_create_child
//go:linkname vdso_zx_vmo_set_cache_policy vdso_zx_vmo_set_cache_policy
//go:linkname vdso_zx_vmo_replace_as_executable vdso_zx_vmo_replace_as_executable
//go:linkname vdso_zx_vmo_create_contiguous vdso_zx_vmo_create_contiguous
//go:linkname vdso_zx_vmo_create_physical vdso_zx_vmo_create_physical

//go:noescape
//go:nosplit
func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, num_addrs uint, pmt unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_bti_release_quarantine(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32

//go:noescape
//go:nosplit
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

//go:noescape
//go:nosplit
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

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_write(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_write_etc(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call_etc_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_get_monotonic() int64

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_get_monotonic_via_kernel() int64

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)

//go:noescape
//go:nosplit
func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debug_send_command(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debuglog_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_debuglog_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_fifo_create(elem_count uint, elem_size uint, options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, data_size uint, actual_count unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_fifo_write(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_framebuffer_get_info(resource uint32, format unsafe.Pointer, width unsafe.Pointer, height unsafe.Pointer, stride unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_framebuffer_set_range(resource uint32, vmo uint32, len uint32, format uint32, width uint32, height uint32, stride uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32

//go:noescape
//go:nosplit
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

//go:noescape
//go:nosplit
func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32

//go:noescape
//go:nosplit
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

//go:noescape
//go:nosplit
func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_handle_close(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_create(src_obj uint32, src_num uint32, options uint32, out_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_destroy(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_ack(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_iommu_create(resource uint32, typ uint32, desc unsafe.Pointer, desc_size uint, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ioports_release(resource uint32, io_addr uint16, len uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_job_set_critical(job uint32, options uint32, process uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ktrace_read(handle uint32, data unsafe.Pointer, offset uint32, data_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_nanosleep(deadline int64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_ticks_get() int64

//go:noescape
//go:nosplit
func vdsoCall_zx_ticks_per_second() int64

//go:noescape
//go:nosplit
func vdsoCall_zx_deadline_after(nanoseconds int64) int64

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_unmap_handle_close_thread_exit(vmar_handle uint32, addr uintptr, size uint, close_handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_futex_wake_handle_close_thread_exit(value_ptr unsafe.Pointer, wake_count uint32, new_value int32, close_handle uint32)

//go:noescape
//go:nosplit
func vdsoCall_zx_ticks_get_via_kernel() int64

//go:noescape
//go:nosplit
func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_mtrace_control(handle uint32, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_wait_one(handle uint32, signals uint32, deadline int64, observed unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_wait_many(items unsafe.Pointer, num_items uint, deadline int64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_wait_async(handle uint32, port uint32, key uint64, signals uint32, options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_signal_peer(handle uint32, clear_mask uint32, set_mask uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_get_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_get_info(handle uint32, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_get_child(handle uint32, koid uint64, rights uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_create_vmo(pager uint32, options uint32, port uint32, key uint64, size uint64, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_supply_pages(pager uint32, pager_vmo uint32, offset uint64, length uint64, aux_vmo uint32, aux_offset uint64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_query_dirty_ranges(pager uint32, pager_vmo uint32, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pager_query_vmo_stats(pager uint32, pager_vmo uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pc_firmware_tables(handle uint32, acpi_rsdp unsafe.Pointer, smbios unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_reset_device(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_pmt_unpin(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_process_exit(retcode int64)

//go:noescape
//go:nosplit
func vdsoCall_zx_process_create(job uint32, name unsafe.Pointer, name_size uint, options uint32, proc_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_process_start(handle uint32, thread uint32, entry uintptr, stack uintptr, arg1 uint32, arg2 uintptr) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_process_read_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_process_write_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_profile_create(root_job uint32, options uint32, profile unsafe.Pointer, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
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

//go:noescape
//go:nosplit
func vdsoCall_zx_smc_call(handle uint32, parameters unsafe.Pointer, out_smc_result unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_socket_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_socket_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_socket_set_disposition(handle uint32, disposition uint32, disposition_peer uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_0() int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_1(a int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_2(a int32, b int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_next_1(arg int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64

//go:noescape
//go:nosplit
func vdsoCall_zx_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_dcache_line_size() uint32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_num_cpus() uint32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_version_string() unsafe.Pointer

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_page_size() uint32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_physmem() uint64

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_event(root_job uint32, kind uint32, event unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_set_performance_info(resource uint32, topic uint32, info unsafe.Pointer, count uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_get_performance_info(resource uint32, topic uint32, count uint, info unsafe.Pointer, output_count unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_mexec_payload_get(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_task_create_exception_channel(handle uint32, options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_task_kill(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_exit()

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_create(process uint32, name unsafe.Pointer, name_size uint, options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_start(handle uint32, thread_entry uintptr, stack uintptr, arg1 uintptr, arg2 uintptr) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_thread_legacy_yield(options uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_timer_cancel(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_enter(handle uint32, packet unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_kick(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_destroy(handle uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint, vmo uint32, vmo_offset uint64, len uint, mapped_addr unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_read(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_write(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_op_range(handle uint32, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_create_child(handle uint32, options uint32, offset uint64, size uint64, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_replace_as_executable(handle uint32, vmex uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_create_contiguous(bti uint32, size uint, alignment_log2 uint32, out unsafe.Pointer) int32

//go:noescape
//go:nosplit
func vdsoCall_zx_vmo_create_physical(resource uint32, paddr uintptr, size uint, out unsafe.Pointer) int32

var (
	vdso_zx_bti_create uintptr
	vdso_zx_bti_pin uintptr
	vdso_zx_bti_release_quarantine uintptr
	vdso_zx_cache_flush uintptr
	vdso_zx_channel_create uintptr
	vdso_zx_channel_read uintptr
	vdso_zx_channel_read_etc uintptr
	vdso_zx_channel_write uintptr
	vdso_zx_channel_write_etc uintptr
	vdso_zx_channel_call_noretry uintptr
	vdso_zx_channel_call_finish uintptr
	vdso_zx_channel_call uintptr
	vdso_zx_channel_call_etc_noretry uintptr
	vdso_zx_channel_call_etc_finish uintptr
	vdso_zx_channel_call_etc uintptr
	vdso_zx_clock_get_monotonic uintptr
	vdso_zx_clock_get_monotonic_via_kernel uintptr
	vdso_zx_clock_create uintptr
	vdso_zx_clock_read uintptr
	vdso_zx_clock_get_details uintptr
	vdso_zx_clock_update uintptr
	vdso_zx_cprng_draw_once uintptr
	vdso_zx_cprng_draw uintptr
	vdso_zx_cprng_add_entropy uintptr
	vdso_zx_debug_read uintptr
	vdso_zx_debug_write uintptr
	vdso_zx_debug_send_command uintptr
	vdso_zx_debuglog_create uintptr
	vdso_zx_debuglog_write uintptr
	vdso_zx_debuglog_read uintptr
	vdso_zx_event_create uintptr
	vdso_zx_eventpair_create uintptr
	vdso_zx_exception_get_thread uintptr
	vdso_zx_exception_get_process uintptr
	vdso_zx_fifo_create uintptr
	vdso_zx_fifo_read uintptr
	vdso_zx_fifo_write uintptr
	vdso_zx_framebuffer_get_info uintptr
	vdso_zx_framebuffer_set_range uintptr
	vdso_zx_futex_wait uintptr
	vdso_zx_futex_wake uintptr
	vdso_zx_futex_requeue uintptr
	vdso_zx_futex_wake_single_owner uintptr
	vdso_zx_futex_requeue_single_owner uintptr
	vdso_zx_futex_get_owner uintptr
	vdso_zx_guest_create uintptr
	vdso_zx_guest_set_trap uintptr
	vdso_zx_handle_close uintptr
	vdso_zx_handle_close_many uintptr
	vdso_zx_handle_duplicate uintptr
	vdso_zx_handle_replace uintptr
	vdso_zx_interrupt_create uintptr
	vdso_zx_interrupt_bind uintptr
	vdso_zx_interrupt_wait uintptr
	vdso_zx_interrupt_destroy uintptr
	vdso_zx_interrupt_ack uintptr
	vdso_zx_interrupt_trigger uintptr
	vdso_zx_interrupt_bind_vcpu uintptr
	vdso_zx_iommu_create uintptr
	vdso_zx_ioports_request uintptr
	vdso_zx_ioports_release uintptr
	vdso_zx_job_create uintptr
	vdso_zx_job_set_policy uintptr
	vdso_zx_job_set_critical uintptr
	vdso_zx_ktrace_read uintptr
	vdso_zx_ktrace_control uintptr
	vdso_zx_ktrace_write uintptr
	vdso_zx_nanosleep uintptr
	vdso_zx_ticks_get uintptr
	vdso_zx_ticks_per_second uintptr
	vdso_zx_deadline_after uintptr
	vdso_zx_vmar_unmap_handle_close_thread_exit uintptr
	vdso_zx_futex_wake_handle_close_thread_exit uintptr
	vdso_zx_ticks_get_via_kernel uintptr
	vdso_zx_msi_allocate uintptr
	vdso_zx_msi_create uintptr
	vdso_zx_mtrace_control uintptr
	vdso_zx_object_wait_one uintptr
	vdso_zx_object_wait_many uintptr
	vdso_zx_object_wait_async uintptr
	vdso_zx_object_signal uintptr
	vdso_zx_object_signal_peer uintptr
	vdso_zx_object_get_property uintptr
	vdso_zx_object_set_property uintptr
	vdso_zx_object_get_info uintptr
	vdso_zx_object_get_child uintptr
	vdso_zx_object_set_profile uintptr
	vdso_zx_pager_create uintptr
	vdso_zx_pager_create_vmo uintptr
	vdso_zx_pager_detach_vmo uintptr
	vdso_zx_pager_supply_pages uintptr
	vdso_zx_pager_op_range uintptr
	vdso_zx_pager_query_dirty_ranges uintptr
	vdso_zx_pager_query_vmo_stats uintptr
	vdso_zx_pc_firmware_tables uintptr
	vdso_zx_pci_get_nth_device uintptr
	vdso_zx_pci_enable_bus_master uintptr
	vdso_zx_pci_reset_device uintptr
	vdso_zx_pci_config_read uintptr
	vdso_zx_pci_config_write uintptr
	vdso_zx_pci_cfg_pio_rw uintptr
	vdso_zx_pci_get_bar uintptr
	vdso_zx_pci_map_interrupt uintptr
	vdso_zx_pci_query_irq_mode uintptr
	vdso_zx_pci_set_irq_mode uintptr
	vdso_zx_pci_init uintptr
	vdso_zx_pci_add_subtract_io_range uintptr
	vdso_zx_pmt_unpin uintptr
	vdso_zx_port_create uintptr
	vdso_zx_port_queue uintptr
	vdso_zx_port_wait uintptr
	vdso_zx_port_cancel uintptr
	vdso_zx_process_exit uintptr
	vdso_zx_process_create uintptr
	vdso_zx_process_start uintptr
	vdso_zx_process_read_memory uintptr
	vdso_zx_process_write_memory uintptr
	vdso_zx_profile_create uintptr
	vdso_zx_resource_create uintptr
	vdso_zx_smc_call uintptr
	vdso_zx_socket_create uintptr
	vdso_zx_socket_write uintptr
	vdso_zx_socket_read uintptr
	vdso_zx_socket_set_disposition uintptr
	vdso_zx_stream_create uintptr
	vdso_zx_stream_writev uintptr
	vdso_zx_stream_writev_at uintptr
	vdso_zx_stream_readv uintptr
	vdso_zx_stream_readv_at uintptr
	vdso_zx_stream_seek uintptr
	vdso_zx_syscall_test_0 uintptr
	vdso_zx_syscall_test_1 uintptr
	vdso_zx_syscall_test_2 uintptr
	vdso_zx_syscall_test_3 uintptr
	vdso_zx_syscall_test_4 uintptr
	vdso_zx_syscall_test_5 uintptr
	vdso_zx_syscall_test_6 uintptr
	vdso_zx_syscall_test_7 uintptr
	vdso_zx_syscall_test_8 uintptr
	vdso_zx_syscall_next_1 uintptr
	vdso_zx_syscall_test_wrapper uintptr
	vdso_zx_syscall_test_handle_create uintptr
	vdso_zx_syscall_test_widening_unsigned_narrow uintptr
	vdso_zx_syscall_test_widening_signed_narrow uintptr
	vdso_zx_syscall_test_widening_unsigned_wide uintptr
	vdso_zx_syscall_test_widening_signed_wide uintptr
	vdso_zx_system_get_dcache_line_size uintptr
	vdso_zx_system_get_num_cpus uintptr
	vdso_zx_system_get_version_string uintptr
	vdso_zx_system_get_page_size uintptr
	vdso_zx_system_get_physmem uintptr
	vdso_zx_system_get_features uintptr
	vdso_zx_system_get_event uintptr
	vdso_zx_system_set_performance_info uintptr
	vdso_zx_system_get_performance_info uintptr
	vdso_zx_system_mexec uintptr
	vdso_zx_system_mexec_payload_get uintptr
	vdso_zx_system_powerctl uintptr
	vdso_zx_task_suspend uintptr
	vdso_zx_task_suspend_token uintptr
	vdso_zx_task_create_exception_channel uintptr
	vdso_zx_task_kill uintptr
	vdso_zx_thread_exit uintptr
	vdso_zx_thread_create uintptr
	vdso_zx_thread_start uintptr
	vdso_zx_thread_read_state uintptr
	vdso_zx_thread_write_state uintptr
	vdso_zx_thread_legacy_yield uintptr
	vdso_zx_timer_create uintptr
	vdso_zx_timer_set uintptr
	vdso_zx_timer_cancel uintptr
	vdso_zx_vcpu_create uintptr
	vdso_zx_vcpu_enter uintptr
	vdso_zx_vcpu_kick uintptr
	vdso_zx_vcpu_interrupt uintptr
	vdso_zx_vcpu_read_state uintptr
	vdso_zx_vcpu_write_state uintptr
	vdso_zx_vmar_allocate uintptr
	vdso_zx_vmar_destroy uintptr
	vdso_zx_vmar_map uintptr
	vdso_zx_vmar_unmap uintptr
	vdso_zx_vmar_protect uintptr
	vdso_zx_vmar_op_range uintptr
	vdso_zx_vmo_create uintptr
	vdso_zx_vmo_read uintptr
	vdso_zx_vmo_write uintptr
	vdso_zx_vmo_get_size uintptr
	vdso_zx_vmo_set_size uintptr
	vdso_zx_vmo_op_range uintptr
	vdso_zx_vmo_create_child uintptr
	vdso_zx_vmo_set_cache_policy uintptr
	vdso_zx_vmo_replace_as_executable uintptr
	vdso_zx_vmo_create_contiguous uintptr
	vdso_zx_vmo_create_physical uintptr
)
----- go-vdso-keys.go END -----


----- go-vdso-x86-calls.s START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

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

// 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, num_addrs 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 num_addrs+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_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_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_channel_call_etc_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_etc_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_etc_noretry(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_etc_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_etc_finish(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_channel_call_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)
	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_etc(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	CALL runtime·exitsyscall(SB)
	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_clock_get_monotonic_via_kernel() int64
TEXT runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(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_via_kernel(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_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 options+0(FP), DI
	MOVQ args+8(FP), SI
	MOVQ out+16(FP), DX
	MOVQ vdso_zx_clock_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_read(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 now+8(FP), SI
	MOVQ vdso_zx_clock_read(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_get_details(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 options+8(FP), SI
	MOVQ details+16(FP), DX
	MOVQ vdso_zx_clock_get_details(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_clock_update(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 options+8(FP), SI
	MOVQ args+16(FP), DX
	MOVQ vdso_zx_clock_update(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_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_debug_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 buffer_size+16(FP), DX
	MOVQ actual+24(FP), CX
	MOVQ vdso_zx_debug_read(SB), AX
	CALL AX
	MOVL AX, ret+32(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_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_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_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_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, data_size 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 data_size+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_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_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_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_guest_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 resource+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ guest_handle+8(FP), DX
	MOVQ vmar_handle+16(FP), CX
	MOVQ vdso_zx_guest_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32
TEXT runtime·vdsoCall_zx_guest_set_trap(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 kind+4(FP), SI
	MOVQ addr+8(FP), DX
	MOVQ size+16(FP), CX
	MOVL port_handle+24(FP), R8
	MOVQ key+32(FP), R9
	MOVQ vdso_zx_guest_set_trap(SB), AX
	CALL AX
	MOVL AX, ret+40(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_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)
	CALL runtime·entersyscall(SB)
	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)
	CALL runtime·exitsyscall(SB)
	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_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_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_ioports_release(resource uint32, io_addr uint16, len uint32) int32
TEXT runtime·vdsoCall_zx_ioports_release(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_release(SB), AX
	CALL AX
	MOVL AX, ret+16(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, policy_size 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 policy_size+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_job_set_critical(job uint32, options uint32, process uint32) int32
TEXT runtime·vdsoCall_zx_job_set_critical(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 job+0(FP), DI
	MOVL options+4(FP), SI
	MOVL process+8(FP), DX
	MOVQ vdso_zx_job_set_critical(SB), AX
	CALL AX
	MOVL AX, ret+16(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_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_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_ticks_get_via_kernel() int64
TEXT runtime·vdsoCall_zx_ticks_get_via_kernel(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_via_kernel(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_msi_allocate(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 count+4(FP), SI
	MOVQ out_allocation+8(FP), DX
	MOVQ vdso_zx_msi_allocate(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_msi_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 handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVL msi_id+8(FP), DX
	MOVL vmo+12(FP), CX
	MOVQ vmo_offset+16(FP), R8
	MOVQ out_interrupt+24(FP), R9
	MOVQ vdso_zx_msi_create(SB), AX
	CALL AX
	MOVL AX, ret+32(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_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, num_items 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 num_items+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_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

// func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32
TEXT runtime·vdsoCall_zx_pager_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 pager+0(FP), DI
	MOVL op+4(FP), SI
	MOVL pager_vmo+8(FP), DX
	MOVQ offset+16(FP), CX
	MOVQ length+24(FP), R8
	MOVQ data+32(FP), R9
	MOVQ vdso_zx_pager_op_range(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pager_query_dirty_ranges(pager uint32, pager_vmo uint32, offset uint64, length uint64, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pager_query_dirty_ranges(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 pager+0(FP), DI
	MOVL pager_vmo+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ length+16(FP), CX
	MOVQ buffer+24(FP), R8
	MOVQ buffer_size+32(FP), R9
	MOVQ actual+40(FP), R12
	MOVQ avail+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_pager_query_dirty_ranges(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_pager_query_vmo_stats(pager uint32, pager_vmo uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_pager_query_vmo_stats(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 pager+0(FP), DI
	MOVL pager_vmo+4(FP), SI
	MOVL options+8(FP), DX
	MOVQ buffer+16(FP), CX
	MOVQ buffer_size+24(FP), R8
	MOVQ vdso_zx_pager_query_vmo_stats(SB), AX
	CALL AX
	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_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_get_nth_device(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 index+4(FP), SI
	MOVQ out_info+8(FP), DX
	MOVQ out_handle+16(FP), CX
	MOVQ vdso_zx_pci_get_nth_device(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32
TEXT runtime·vdsoCall_zx_pci_enable_bus_master(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 enable+4(FP), SI
	MOVQ vdso_zx_pci_enable_bus_master(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_reset_device(handle uint32) int32
TEXT runtime·vdsoCall_zx_pci_reset_device(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_pci_reset_device(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_config_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 offset+4(FP), SI
	MOVQ width+8(FP), DX
	MOVQ out_val+16(FP), CX
	MOVQ vdso_zx_pci_config_read(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32
TEXT runtime·vdsoCall_zx_pci_config_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
	MOVQ offset+4(FP), SI
	MOVQ width+8(FP), DX
	MOVL val+16(FP), CX
	MOVQ vdso_zx_pci_config_write(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32
TEXT runtime·vdsoCall_zx_pci_cfg_pio_rw(SB),NOSPLIT,$40-36
	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
	MOVQ bus+4(FP), SI
	MOVQ dev+5(FP), DX
	MOVQ funk+6(FP), CX
	MOVQ offset+7(FP), R8
	MOVQ val+8(FP), R9
	MOVQ width+16(FP), R12
	MOVL write+24(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_pci_cfg_pio_rw(SB), AX
	CALL AX
	POPQ R12
	POPQ R13
	MOVQ BP, SP
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_get_bar(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 bar_num+4(FP), SI
	MOVQ out_bar+8(FP), DX
	MOVQ out_handle+16(FP), CX
	MOVQ vdso_zx_pci_get_bar(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_map_interrupt(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 which_irq+4(FP), SI
	MOVQ out_handle+8(FP), DX
	MOVQ vdso_zx_pci_map_interrupt(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_pci_query_irq_mode(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 mode+4(FP), SI
	MOVQ out_max_irqs+8(FP), DX
	MOVQ vdso_zx_pci_query_irq_mode(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32
TEXT runtime·vdsoCall_zx_pci_set_irq_mode(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 mode+4(FP), SI
	MOVL requested_irq_count+8(FP), DX
	MOVQ vdso_zx_pci_set_irq_mode(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32
TEXT runtime·vdsoCall_zx_pci_init(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 init_buf+8(FP), SI
	MOVL len+16(FP), DX
	MOVQ vdso_zx_pci_init(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32
TEXT runtime·vdsoCall_zx_pci_add_subtract_io_range(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 mmio+4(FP), SI
	MOVQ base+8(FP), DX
	MOVQ len+16(FP), CX
	MOVL add+24(FP), R8
	MOVQ vdso_zx_pci_add_subtract_io_range(SB), AX
	CALL AX
	MOVL AX, ret+32(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_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_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_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_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_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_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_set_disposition(handle uint32, disposition uint32, disposition_peer uint32) int32
TEXT runtime·vdsoCall_zx_socket_set_disposition(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 disposition+4(FP), SI
	MOVL disposition_peer+8(FP), DX
	MOVQ vdso_zx_socket_set_disposition(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_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
	MOVL vmo+4(FP), SI
	MOVQ seek+8(FP), DX
	MOVQ out_stream+16(FP), CX
	MOVQ vdso_zx_stream_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_writev(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)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ vector+8(FP), DX
	MOVQ num_vector+16(FP), CX
	MOVQ actual+24(FP), R8
	MOVQ vdso_zx_stream_writev(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_writev_at(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 offset+8(FP), DX
	MOVQ vector+16(FP), CX
	MOVQ num_vector+24(FP), R8
	MOVQ actual+32(FP), R9
	MOVQ vdso_zx_stream_writev_at(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_readv(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)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ vector+8(FP), DX
	MOVQ num_vector+16(FP), CX
	MOVQ actual+24(FP), R8
	MOVQ vdso_zx_stream_readv(SB), AX
	CALL AX
	MOVL AX, ret+32(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_readv_at(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 offset+8(FP), DX
	MOVQ vector+16(FP), CX
	MOVQ num_vector+24(FP), R8
	MOVQ actual+32(FP), R9
	MOVQ vdso_zx_stream_readv_at(SB), AX
	CALL AX
	MOVL AX, ret+40(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_stream_seek(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 whence+4(FP), SI
	MOVQ offset+8(FP), DX
	MOVQ out_seek+16(FP), CX
	MOVQ vdso_zx_stream_seek(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_0() int32
TEXT runtime·vdsoCall_zx_syscall_test_0(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_syscall_test_0(SB), AX
	CALL AX
	MOVL AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_1(a int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_1(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 a+0(FP), DI
	MOVQ vdso_zx_syscall_test_1(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_2(a int32, b int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_2(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVQ vdso_zx_syscall_test_2(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_3(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVQ vdso_zx_syscall_test_3(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_4(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVL d+12(FP), CX
	MOVQ vdso_zx_syscall_test_4(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_5(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVL d+12(FP), CX
	MOVL e+16(FP), R8
	MOVQ vdso_zx_syscall_test_5(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_6(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVL d+12(FP), CX
	MOVL e+16(FP), R8
	MOVL f+20(FP), R9
	MOVQ vdso_zx_syscall_test_6(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_7(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVL d+12(FP), CX
	MOVL e+16(FP), R8
	MOVL f+20(FP), R9
	MOVL g_+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_syscall_test_7(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_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_8(SB),NOSPLIT,$40-36
	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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVL d+12(FP), CX
	MOVL e+16(FP), R8
	MOVL f+20(FP), R9
	MOVL g_+24(FP), R12
	MOVL h+28(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_syscall_test_8(SB), AX
	CALL AX
	POPQ R12
	POPQ R13
	MOVQ BP, SP
	MOVL AX, ret+32(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_next_1(arg int32) int32
TEXT runtime·vdsoCall_zx_syscall_next_1(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 arg+0(FP), DI
	MOVQ vdso_zx_syscall_next_1(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32
TEXT runtime·vdsoCall_zx_syscall_test_wrapper(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 a+0(FP), DI
	MOVL b+4(FP), SI
	MOVL c+8(FP), DX
	MOVQ vdso_zx_syscall_test_wrapper(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_syscall_test_handle_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 return_value+0(FP), DI
	MOVQ out+8(FP), SI
	MOVQ vdso_zx_syscall_test_handle_create(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_widening_unsigned_narrow(a uint64, b uint32, c uint16, d uint8) uint64
TEXT runtime·vdsoCall_zx_syscall_test_widening_unsigned_narrow(SB),NOSPLIT,$8-23
	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 a+0(FP), DI
	MOVL b+8(FP), SI
	MOVQ c+12(FP), DX
	MOVQ d+14(FP), CX
	MOVQ vdso_zx_syscall_test_widening_unsigned_narrow(SB), AX
	CALL AX
	MOVQ AX, ret+15(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_widening_signed_narrow(a int64, b int32, c int16, d int8) int64
TEXT runtime·vdsoCall_zx_syscall_test_widening_signed_narrow(SB),NOSPLIT,$8-23
	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 a+0(FP), DI
	MOVL b+8(FP), SI
	MOVQ c+12(FP), DX
	MOVQ d+14(FP), CX
	MOVQ vdso_zx_syscall_test_widening_signed_narrow(SB), AX
	CALL AX
	MOVQ AX, ret+15(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_widening_unsigned_wide(a uint64, b uint32, c uint16, d uint8) uint64
TEXT runtime·vdsoCall_zx_syscall_test_widening_unsigned_wide(SB),NOSPLIT,$8-23
	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 a+0(FP), DI
	MOVL b+8(FP), SI
	MOVQ c+12(FP), DX
	MOVQ d+14(FP), CX
	MOVQ vdso_zx_syscall_test_widening_unsigned_wide(SB), AX
	CALL AX
	MOVQ AX, ret+15(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_syscall_test_widening_signed_wide(a int64, b int32, c int16, d int8) int64
TEXT runtime·vdsoCall_zx_syscall_test_widening_signed_wide(SB),NOSPLIT,$8-23
	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 a+0(FP), DI
	MOVL b+8(FP), SI
	MOVQ c+12(FP), DX
	MOVQ d+14(FP), CX
	MOVQ vdso_zx_syscall_test_widening_signed_wide(SB), AX
	CALL AX
	MOVQ AX, ret+15(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_string() unsafe.Pointer
TEXT runtime·vdsoCall_zx_system_get_version_string(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_version_string(SB), AX
	CALL AX
	MOVQ AX, ret+0(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_page_size() uint32
TEXT runtime·vdsoCall_zx_system_get_page_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_page_size(SB), AX
	CALL AX
	MOVL AX, ret+0(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_system_set_performance_info(resource uint32, topic uint32, info unsafe.Pointer, count uint) int32
TEXT runtime·vdsoCall_zx_system_set_performance_info(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
	MOVL topic+4(FP), SI
	MOVQ info+8(FP), DX
	MOVQ count+16(FP), CX
	MOVQ vdso_zx_system_set_performance_info(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_system_get_performance_info(resource uint32, topic uint32, count uint, info unsafe.Pointer, output_count unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_system_get_performance_info(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 topic+4(FP), SI
	MOVQ count+8(FP), DX
	MOVQ info+16(FP), CX
	MOVQ output_count+24(FP), R8
	MOVQ vdso_zx_system_get_performance_info(SB), AX
	CALL AX
	MOVL AX, ret+32(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_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_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_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_thread_legacy_yield(options uint32) int32
TEXT runtime·vdsoCall_zx_thread_legacy_yield(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 options+0(FP), DI
	MOVQ vdso_zx_thread_legacy_yield(SB), AX
	CALL AX
	MOVL AX, ret+8(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_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vcpu_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 guest+0(FP), DI
	MOVL options+4(FP), SI
	MOVQ entry+8(FP), DX
	MOVQ out+16(FP), CX
	MOVQ vdso_zx_vcpu_create(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vcpu_enter(handle uint32, packet unsafe.Pointer) int32
TEXT runtime·vdsoCall_zx_vcpu_enter(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)
	CALL runtime·entersyscall(SB)
	MOVL handle+0(FP), DI
	MOVQ packet+8(FP), SI
	MOVQ vdso_zx_vcpu_enter(SB), AX
	CALL AX
	MOVL AX, ret+16(FP)
	CALL runtime·exitsyscall(SB)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vcpu_kick(handle uint32) int32
TEXT runtime·vdsoCall_zx_vcpu_kick(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_vcpu_kick(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32
TEXT runtime·vdsoCall_zx_vcpu_interrupt(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 vector+4(FP), SI
	MOVQ vdso_zx_vcpu_interrupt(SB), AX
	CALL AX
	MOVL AX, ret+8(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vcpu_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_vcpu_read_state(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vcpu_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_vcpu_write_state(SB), AX
	CALL AX
	MOVL AX, ret+24(FP)
	POPQ R14
	MOVQ $0, m_vdsoSP(R14)
	RET

// func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, 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 uint, vmo uint32, vmo_offset uint64, len uint, 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 uint) 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 uint) 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_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32
TEXT runtime·vdsoCall_zx_vmar_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 address+8(FP), DX
	MOVQ size+16(FP), CX
	MOVQ buffer+24(FP), R8
	MOVQ buffer_size+32(FP), R9
	MOVQ vdso_zx_vmar_op_range(SB), AX
	CALL AX
	MOVL AX, ret+40(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)
	CALL runtime·entersyscall(SB)
	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)
	CALL runtime·exitsyscall(SB)
	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)
	CALL runtime·entersyscall(SB)
	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)
	CALL runtime·exitsyscall(SB)
	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)
	CALL runtime·entersyscall(SB)
	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)
	CALL runtime·exitsyscall(SB)
	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_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

----- go-vdso-x86-calls.s END -----


----- json.json START -----
{
  "syscalls": [
    {
      "name": "bti_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "bus", "transaction", "initiator", "."
      ],
      "requirements": [
        "iommu", "must", "be", "of", "type", "ZX_OBJ_TYPE_IOMMU", "and", "have", "ZX_RIGHT_NONE", "."
      ],
      "arguments": [
        {
          "name": "iommu",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bti_id",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "bti_pin",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Pin", "pages", "and", "grant", "devices", "access", "to", "them", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_BTI", "and", "have", "ZX_RIGHT_MAP", ".",
        "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_MAP", ".",
        "If", "options", "&", "ZX_BTI_PERM_READ", ",", "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", ".",
        "If", "options", "&", "ZX_BTI_PERM_WRITE", ",", "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "options", "&", "ZX_BTI_PERM_EXECUTE", ",", "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "addrs",
          "type": "zx_paddr_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_addrs",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "pmt",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "bti_release_quarantine",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Releases", "all", "quarantined", "PMTs", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_BTI", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "cache_flush",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Flush", "CPU", "data", "and", "/", "or", "instruction", "caches", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "addr",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "channel", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_CHANNEL", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out0",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out1",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_read",
      "attributes": [
        "*",
        "handle_unchecked"
      ],
      "top_description": [
        "Read", "a", "message", "from", "a", "channel", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bytes",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "handles",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_bytes",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "num_handles",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_read_etc",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "a", "message", "from", "a", "channel", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bytes",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "handles",
          "type": "zx_handle_info_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_bytes",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "num_handles",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "a", "message", "to", "a", "channel", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_WRITE", ".",
        "Every", "entry", "of", "handles", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bytes",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_bytes",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "handles",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_handles",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_write_etc",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "a", "message", "to", "a", "channel", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_WRITE", ".",
        "Every", "entry", "of", "handles", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bytes",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_bytes",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "handles",
          "type": "zx_handle_disposition_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_handles",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call_noretry",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", ".",
        "All", "wr_handles", "of", "args", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_args_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call_finish",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_args_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call",
      "attributes": [
        "*",
        "blocking",
        "vdsocall"
      ],
      "top_description": [
        "Send", "a", "message", "to", "a", "channel", "and", "await", "a", "reply", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", ".",
        "All", "wr_handles", "of", "args", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_args_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call_etc_noretry",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", ".",
        "All", "wr_handles", "of", "args", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_etc_args_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call_etc_finish",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_etc_args_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "channel_call_etc",
      "attributes": [
        "*",
        "blocking",
        "vdsocall"
      ],
      "top_description": [
        "Send", "a", "message", "to", "a", "channel", "and", "await", "a", "reply", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CHANNEL", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", ".",
        "All", "wr_handles", "of", "args", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "zx_channel_call_etc_args_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_bytes",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "actual_handles",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "clock_get_monotonic",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Acquire", "the", "current", "monotonic", "time", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_time_t"
    },
    {
      "name": "clock_get_monotonic_via_kernel",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_time_t"
    },
    {
      "name": "clock_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "clock", "object", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "clock_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Perform", "a", "basic", "read", "of", "the", "clock", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CLOCK", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "now",
          "type": "zx_time_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "clock_get_details",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Fetch", "all", "of", "the", "low", "level", "details", "of", "the", "clock", "'", "s", "current", "status", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CLOCK", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "details",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "clock_update",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Make", "adjustments", "to", "a", "clock", "object", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_CLOCK", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "args",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "cprng_draw_once",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "cprng_draw",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Draw", "from", "the", "kernel", "'", "s", "CPRNG", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "void"
    },
    {
      "name": "cprng_add_entropy",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Add", "entropy", "to", "the", "kernel", "CPRNG", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debug_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "a", "message", "from", "the", "debug", "serial", "port", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "char",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debug_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "a", "message", "to", "the", "debug", "serial", "port", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "buffer",
          "type": "char",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debug_send_command",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "char",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debuglog_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "object", "allowing", "access", "to", "the", "kernel", "debuglog", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debuglog_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "a", "message", "to", "the", "kernel", "debuglog", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_LOG", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "debuglog_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "a", "single", "log", "record", "from", "the", "kernel", "debuglog", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_LOG", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "event_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "event", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_EVENT", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "eventpair_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "event", "pair", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_EVENTPAIR", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out0",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out1",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "exception_get_thread",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "handle", "for", "the", "exception", "'", "s", "thread", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_EXCEPTION", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "exception_get_process",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "handle", "for", "the", "exception", "'", "s", "process", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_EXCEPTION", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "fifo_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "fifo", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_FIFO", "."
      ],
      "arguments": [
        {
          "name": "elem_count",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "elem_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out0",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out1",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "fifo_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "data", "from", "a", "fifo", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_FIFO", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "elem_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "data",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "data_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual_count",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "fifo_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "data", "to", "a", "fifo", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_FIFO", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "elem_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "data",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "count",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual_count",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "framebuffer_get_info",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "format",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "width",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "height",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "stride",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "framebuffer_set_range",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "format",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "width",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "height",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "stride",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_wait",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Wait", "on", "a", "futex", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "current_value",
          "type": "zx_futex_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "new_futex_owner",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_wake",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Wake", "some", "number", "of", "threads", "waiting", "on", "a", "futex", ",", "and", "set", "the", "ownership", "of", "the", "futex", "to", "nothing", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "wake_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_requeue",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Wake", "some", "number", "of", "threads", "waiting", "on", "a", "futex", ",", "and", "move", "more", "waiters", "to", "another", "wait", "queue", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "wake_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "current_value",
          "type": "zx_futex_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "requeue_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "requeue_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "new_requeue_owner",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_wake_single_owner",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Wake", "one", "thread", "waiting", "on", "a", "futex", ",", "and", "set", "the", "ownership", "of", "the", "futex", "to", "that", "thread", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_requeue_single_owner",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Wake", "one", "thread", "waiting", "on", "a", "futex", ",", "and", "requeue", "more", "waiters", "to", "another", "futex", "wait", "queue", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "current_value",
          "type": "zx_futex_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "requeue_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "requeue_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "new_requeue_owner",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_get_owner",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Fetch", "the", "koid", "current", "owner", "of", "a", "futex", ",", "if", "any", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "koid",
          "type": "zx_koid_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "guest_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "guest", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_HYPERVISOR", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "guest_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "vmar_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "guest_set_trap",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Sets", "a", "trap", "within", "a", "guest", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_GUEST", "and", "have", "ZX_RIGHT_WRITE", ".",
        "port_handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "addr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "port_handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "key",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "handle_close",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Close", "a", "handle", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "handle_close_many",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Close", "a", "number", "of", "handles", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "handles",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_handles",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "handle_duplicate",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Duplicate", "a", "handle", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_DUPLICATE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "rights",
          "type": "zx_rights_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "handle_replace",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Replace", "a", "handle", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "rights",
          "type": "zx_rights_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "interrupt", "object", "."
      ],
      "requirements": [
        "src_obj", "must", "have", "resource", "kind", "ZX_RSRC_KIND_IRQ", "."
      ],
      "arguments": [
        {
          "name": "src_obj",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "src_num",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_bind",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Bind", "an", "interrupt", "object", "to", "a", "port", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_INTERRUPT", "and", "have", "ZX_RIGHT_READ", ".",
        "port_handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "port_handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "key",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_wait",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Wait", "for", "an", "interrupt", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_INTERRUPT", "and", "have", "ZX_RIGHT_WAIT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_timestamp",
          "type": "zx_time_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_destroy",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Destroys", "an", "interrupt", "object", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_ack",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Acknowledge", "an", "interrupt", "and", "re", "-", "arm", "it", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_INTERRUPT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_trigger",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Triggers", "a", "virtual", "interrupt", "object", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_INTERRUPT", "and", "have", "ZX_RIGHT_SIGNAL", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "timestamp",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "interrupt_bind_vcpu",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Bind", "an", "interrupt", "object", "to", "a", "VCPU", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_INTERRUPT", "and", "have", "ZX_RIGHT_READ", ".",
        "vcpu", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vcpu",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "iommu_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "IOMMU", "object", "in", "the", "kernel", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "type",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "desc",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "desc_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ioports_request",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_IOPORT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "io_addr",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ioports_release",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_IOPORT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "io_addr",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "job_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "job", "."
      ],
      "requirements": [
        "parent_job", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_MANAGE_JOB", "."
      ],
      "arguments": [
        {
          "name": "parent_job",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "job_set_policy",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "job", "security", "and", "resource", "policies", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_SET_POLICY", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "topic",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "policy",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "policy_size",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "job_set_critical",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "a", "process", "as", "critical", "to", "a", "job", "."
      ],
      "requirements": [
        "job", "must", "have", "ZX_RIGHT_DESTROY", ".",
        "process", "must", "have", "ZX_RIGHT_WAIT", "."
      ],
      "arguments": [
        {
          "name": "job",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "process",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ktrace_read",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "data",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "data_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ktrace_control",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "action",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "ptr",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ktrace_write",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "id",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg0",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg1",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "nanosleep",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "High", "resolution", "sleep", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "ticks_get",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Read", "the", "number", "of", "high", "-", "precision", "timer", "ticks", "since", "boot", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_ticks_t"
    },
    {
      "name": "ticks_per_second",
      "attributes": [
        "*",
        "const",
        "vdsocall"
      ],
      "top_description": [
        "Read", "the", "number", "of", "high", "-", "precision", "timer", "ticks", "in", "a", "second", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_ticks_t"
    },
    {
      "name": "deadline_after",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Convert", "a", "time", "relative", "to", "now", "to", "an", "absolute", "deadline", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "nanoseconds",
          "type": "zx_duration_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_time_t"
    },
    {
      "name": "vmar_unmap_handle_close_thread_exit",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Unmap", "memory", ",", "close", "handle", ",", "exit", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "vmar_handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "addr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "close_handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "futex_wake_handle_close_thread_exit",
      "attributes": [
        "*",
        "noreturn",
        "vdsocall"
      ],
      "top_description": [
        "Write", "to", "futex", ",", "wake", "futex", ",", "close", "handle", ",", "exit", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "value_ptr",
          "type": "zx_futex_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "wake_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "new_value",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "close_handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "void"
    },
    {
      "name": "ticks_get_via_kernel",
      "attributes": [
        "*",
        "internal"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_ticks_t"
    },
    {
      "name": "msi_allocate",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Allocate", "Message", "-", "Signaled", "Interrupts", "(", "MSIs", ")", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_allocation",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "msi_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "Interrupt", "object", "from", "a", "Messaged", "-", "Signaled", "Interrupt", "(", "MSI", ")", "allocation", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_MSI", ".",
        "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", ".",
        "vmo", "must", "have", "ZX_RIGHT_MAP", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "msi_id",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo_offset",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_interrupt",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "mtrace_control",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "action",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "ptr",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "ptr_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_wait_one",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Wait", "for", "signals", "on", "an", "object", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_WAIT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "signals",
          "type": "zx_signals_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "observed",
          "type": "zx_signals_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_wait_many",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Wait", "for", "signals", "on", "multiple", "objects", "."
      ],
      "requirements": [
        "Every", "entry", "of", "items", "must", "have", "a", "handle", "field", "with", "ZX_RIGHT_WAIT", "."
      ],
      "arguments": [
        {
          "name": "items",
          "type": "zx_wait_item_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_items",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_wait_async",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Subscribe", "for", "signals", "on", "an", "object", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_WAIT", ".",
        "port", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "port",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "key",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "signals",
          "type": "zx_signals_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_signal",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Signal", "an", "object", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_SIGNAL", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "clear_mask",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "set_mask",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_signal_peer",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Signal", "an", "object", "'", "s", "peer", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_SIGNAL_PEER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "clear_mask",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "set_mask",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_get_property",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Ask", "for", "various", "properties", "of", "various", "kernel", "objects", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_GET_PROPERTY", ".",
        "If", "property", "is", "ZX_PROP_PROCESS_DEBUG_ADDR", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", ".",
        "If", "property", "is", "ZX_PROP_PROCESS_BREAK_ON_LOAD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", ".",
        "If", "property", "is", "ZX_PROP_PROCESS_VDSO_BASE_ADDRESS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", ".",
        "If", "property", "is", "ZX_PROP_SOCKET_RX_THRESHOLD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", ".",
        "If", "property", "is", "ZX_PROP_SOCKET_TX_THRESHOLD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "property",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "value",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "value_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_set_property",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "various", "properties", "of", "various", "kernel", "objects", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_SET_PROPERTY", ".",
        "If", "property", "is", "ZX_PROP_PROCESS_DEBUG_ADDR", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", ".",
        "If", "property", "is", "ZX_PROP_PROCESS_BREAK_ON_LOAD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", ".",
        "If", "property", "is", "ZX_PROP_SOCKET_RX_THRESHOLD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", ".",
        "If", "property", "is", "ZX_PROP_SOCKET_TX_THRESHOLD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", ".",
        "If", "property", "is", "ZX_PROP_JOB_KILL_ON_OOM", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "property",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "value",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "value_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_get_info",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Query", "information", "about", "an", "object", "."
      ],
      "requirements": [
        "If", "topic", "is", "ZX_INFO_PROCESS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_JOB", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_PROCESS_THREADS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_ENUMERATE", ".",
        "If", "topic", "is", "ZX_INFO_JOB_CHILDREN", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_ENUMERATE", ".",
        "If", "topic", "is", "ZX_INFO_JOB_PROCESSES", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_ENUMERATE", ".",
        "If", "topic", "is", "ZX_INFO_THREAD", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_THREAD_EXCEPTION_REPORT", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_THREAD_STATS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_TASK_STATS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_PROCESS_MAPS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_PROCESS_VMOS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_VMO", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", ".",
        "If", "topic", "is", "ZX_INFO_VMAR", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_GUEST_STATS", ",", "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "with", "base", "ZX_RSRC_SYSTEM_INFO_BASE", ".",
        "If", "topic", "is", "ZX_INFO_CPU_STATS", ",", "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "with", "base", "ZX_RSRC_SYSTEM_INFO_BASE", ".",
        "If", "topic", "is", "ZX_INFO_KMEM_STATS", ",", "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "with", "base", "ZX_RSRC_SYSTEM_INFO_BASE", ".",
        "If", "topic", "is", "ZX_INFO_KMEM_STATS_EXTENDED", ",", "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "with", "base", "ZX_RSRC_SYSTEM_INFO_BASE", ".",
        "If", "topic", "is", "ZX_INFO_RESOURCE", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_RESOURCE", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_HANDLE_COUNT", ",", "handle", "must", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_BTI", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_BTI", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_PROCESS_HANDLE_STATS", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_SOCKET", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_MSI", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_MSI", "and", "have", "ZX_RIGHT_INSPECT", ".",
        "If", "topic", "is", "ZX_INFO_TASK_RUNTIME", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", ",", "ZX_OBJ_TYPE_PROCESS", ",", "or", "ZX_OBJ_TYPE_JOB", ",", "and", "have", "ZX_RIGHT_INSPECT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "topic",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "avail",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_get_child",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Given", "a", "kernel", "object", "with", "children", "objects", ",", "obtain", "a", "handle", "to", "the", "child", "specified", "by", "the", "provided", "kernel", "object", "id", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_ENUMERATE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "koid",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "rights",
          "type": "zx_rights_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "object_set_profile",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Apply", "a", "scheduling", "profile", "to", "a", "thread", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_MANAGE_THREAD", ".",
        "profile", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROFILE", "and", "have", "ZX_RIGHT_APPLY_PROFILE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "profile",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "pager", "object", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_PAGER", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_create_vmo",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "pager", "owned", "vmo", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "port", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "port",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "key",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_detach_vmo",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Detaches", "a", "vmo", "from", "a", "pager", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_supply_pages",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Supply", "pages", "into", "a", "pager", "owned", "vmo", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "pager_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", ".",
        "aux_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "pager_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "length",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "aux_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "aux_offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_op_range",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Perform", "an", "operation", "on", "a", "range", "of", "a", "pager", "owned", "vmo", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "pager_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "op",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "pager_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "length",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "data",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_query_dirty_ranges",
      "attributes": [
        "*",
        "next"
      ],
      "top_description": [
        "Query", "contiguous", "ranges", "of", "dirty", "pages", "in", "a", "pager", "owned", "vmo", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "pager_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "pager_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "length",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "avail",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pager_query_vmo_stats",
      "attributes": [
        "*",
        "next"
      ],
      "top_description": [
        "Query", "pager", "related", "statistics", "on", "a", "pager", "owned", "VMO", "."
      ],
      "requirements": [
        "pager", "must", "be", "of", "type", "ZX_OBJ_TYPE_PAGER", ".",
        "pager_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "."
      ],
      "arguments": [
        {
          "name": "pager",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "pager_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pc_firmware_tables",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "acpi_rsdp",
          "type": "zx_paddr_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "smbios",
          "type": "zx_paddr_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_get_nth_device",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "index",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_info",
          "type": "zx_pcie_device_info_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_enable_bus_master",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "enable",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_reset_device",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_config_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "width",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_val",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_config_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "width",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "val",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_cfg_pio_rw",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bus",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "dev",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "func",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "val",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "width",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "write",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_get_bar",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bar_num",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_bar",
          "type": "zx_pci_bar_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_map_interrupt",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "which_irq",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_query_irq_mode",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "mode",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_max_irqs",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_set_irq_mode",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PCI_DEVICE", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "mode",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "requested_irq_count",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_init",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "init_buf",
          "type": "zx_pci_init_arg_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "len",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pci_add_subtract_io_range",
      "attributes": [
        "*"
      ],
      "top_description": [
        "This", "function", "is", "obsolete", "and", "should", "not", "be", "used", "."
      ],
      "requirements": [
        "handle", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "mmio",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "base",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "add",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "pmt_unpin",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Unpin", "pages", "and", "revoke", "device", "access", "to", "them", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "port_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "IO", "port", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_PORT", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "port_queue",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Queue", "a", "packet", "to", "a", "port", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "packet",
          "type": "zx_port_packet_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "port_wait",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Wait", "for", "a", "packet", "arrival", "in", "a", "port", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "packet",
          "type": "zx_port_packet_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "port_cancel",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Cancels", "async", "port", "notifications", "on", "an", "object", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PORT", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "source",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "key",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "process_exit",
      "attributes": [
        "*",
        "noreturn"
      ],
      "top_description": [
        "Exits", "the", "currently", "running", "process", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "retcode",
          "type": "int64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "void"
    },
    {
      "name": "process_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "new", "process", "."
      ],
      "requirements": [
        "job", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_MANAGE_PROCESS", ".",
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_PROCESS", "."
      ],
      "arguments": [
        {
          "name": "job",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "name",
          "type": "char",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "name_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "proc_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "vmar_handle",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "process_start",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Start", "execution", "on", "a", "process", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_WRITE", ".",
        "thread", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_WRITE", ".",
        "arg1", "must", "have", "ZX_RIGHT_TRANSFER", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "thread",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "entry",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "stack",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg1",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg2",
          "type": "uintptr_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "process_read_memory",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "from", "the", "given", "process", "'", "s", "address", "space", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_READ", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vaddr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "process_write_memory",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "into", "the", "given", "process", "'", "s", "address", "space", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vaddr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "profile_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "scheduler", "profile", "."
      ],
      "requirements": [
        "root_job", "must", "be", "of", "type", "ZX_OBJ_TYPE_JOB", "and", "have", "ZX_RIGHT_MANAGE_PROCESS", ".",
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_PROFILE", "."
      ],
      "arguments": [
        {
          "name": "root_job",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "profile",
          "type": "zx_profile_info_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "resource_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "resource", "object", "."
      ],
      "requirements": [
        "parent_rsrc", "must", "be", "of", "type", "ZX_OBJ_TYPE_RESOURCE", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "parent_rsrc",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "base",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "name",
          "type": "char",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "name_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "resource_out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "smc_call",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Make", "Secure", "Monitor", "Call", "(", "SMC", ")", "from", "user", "space", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "parameters",
          "type": "zx_smc_parameters_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "out_smc_result",
          "type": "zx_smc_result_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "socket_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "socket", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_SOCKET", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out0",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "out1",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "socket_write",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "data", "to", "a", "socket", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "socket_read",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "data", "from", "a", "socket", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "socket_set_disposition",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "disposition", "of", "writes", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_SOCKET", "and", "have", "ZX_RIGHT_MANAGE_SOCKET", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "disposition",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "disposition_peer",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "stream", "from", "a", "VMO", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "seek",
          "type": "zx_off_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_stream",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_writev",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Write", "data", "to", "a", "stream", "at", "the", "current", "seek", "offset", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_STREAM", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vector",
          "type": "zx_iovec_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_vector",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_writev_at",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Write", "data", "to", "a", "stream", "at", "the", "given", "offset", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_STREAM", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "zx_off_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vector",
          "type": "zx_iovec_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "num_vector",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_readv",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Read", "data", "from", "a", "stream", "at", "the", "current", "seek", "offset", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_STREAM", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vector",
          "type": "zx_iovec_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_vector",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_readv_at",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Read", "data", "from", "a", "stream", "at", "the", "given", "offset", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_STREAM", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "zx_off_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vector",
          "type": "zx_iovec_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "num_vector",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "actual",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "stream_seek",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Modify", "the", "seek", "offset", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_STREAM", "and", "have", "ZX_RIGHT_READ", "or", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "whence",
          "type": "zx_stream_seek_origin_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "int64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out_seek",
          "type": "zx_off_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_0",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_1",
      "attributes": [
        "*",
        "test_category1",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_2",
      "attributes": [
        "*",
        "test_category1",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_3",
      "attributes": [
        "*",
        "test_category2",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_4",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_5",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "e",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_6",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "e",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "f",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_7",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "e",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "f",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "g",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_8",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "e",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "f",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "g",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "h",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_next_1",
      "attributes": [
        "*",
        "next"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "arg",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_wrapper",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_handle_create",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "return_value",
          "type": "zx_status_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "syscall_test_widening_unsigned_narrow",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "uint64_t"
    },
    {
      "name": "syscall_test_widening_signed_narrow",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int8_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "int64_t"
    },
    {
      "name": "syscall_test_widening_unsigned_wide",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "uint16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "uint8_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "uint64_t"
    },
    {
      "name": "syscall_test_widening_signed_wide",
      "attributes": [
        "*",
        "testonly"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "a",
          "type": "int64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "b",
          "type": "int32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "c",
          "type": "int16_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "d",
          "type": "int8_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "int64_t"
    },
    {
      "name": "system_get_dcache_line_size",
      "attributes": [
        "*",
        "const",
        "vdsocall"
      ],
      "top_description": [
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "uint32_t"
    },
    {
      "name": "system_get_num_cpus",
      "attributes": [
        "*",
        "const",
        "vdsocall"
      ],
      "top_description": [
        "Get", "number", "of", "logical", "processors", "on", "the", "system", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "uint32_t"
    },
    {
      "name": "system_get_version_string",
      "attributes": [
        "*",
        "const",
        "vdsocall"
      ],
      "top_description": [
        "Get", "version", "string", "for", "system", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "zx_string_view_t"
    },
    {
      "name": "system_get_page_size",
      "attributes": [
        "*",
        "const",
        "vdsocall"
      ],
      "top_description": [
        "Get", "the", "page", "size", "for", "the", "system", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "uint32_t"
    },
    {
      "name": "system_get_physmem",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Get", "amount", "of", "physical", "memory", "on", "the", "system", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "uint64_t"
    },
    {
      "name": "system_get_features",
      "attributes": [
        "*",
        "vdsocall"
      ],
      "top_description": [
        "Get", "supported", "hardware", "capabilities", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "features",
          "type": "uint32_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_get_event",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Retrieve", "a", "handle", "to", "a", "system", "event", "."
      ],
      "requirements": [
        "None", "."
      ],
      "arguments": [
        {
          "name": "root_job",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "event",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_set_performance_info",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "CPU", "performance", "parameters", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "topic",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "info",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "count",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_get_performance_info",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Get", "CPU", "performance", "parameters", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "topic",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "count",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "info",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "output_count",
          "type": "size_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_mexec",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Soft", "reboot", "the", "system", "with", "a", "new", "kernel", "and", "bootimage", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", ".",
        "kernel_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", ".",
        "bootimage_vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kernel_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "bootimage_vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_mexec_payload_get",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Return", "a", "ZBI", "containing", "ZBI", "entries", "necessary", "to", "boot", "this", "system", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_ROOT", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "system_powerctl",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_SYSTEM", "with", "base", "ZX_RSRC_SYSTEM_POWER_BASE", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "cmd",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg",
          "type": "zx_system_powerctl_arg_t",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "task_suspend",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Suspend", "the", "given", "task", ".", "Currently", "only", "thread", "or", "process", "handles", "may", "be", "suspended", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "or", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "token",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "task_suspend_token",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Suspend", "the", "given", "task", ".", "Currently", "only", "thread", "or", "process", "handles", "may", "be", "suspended", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "or", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "token",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "task_create_exception_channel",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "an", "exception", "channel", "for", "a", "given", "job", ",", "process", ",", "or", "thread", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_INSPECT", "and", "have", "ZX_RIGHT_DUPLICATE", "and", "have", "ZX_RIGHT_TRANSFER", "and", "have", "ZX_RIGHT_MANAGE_THREAD", ".",
        "If", "handle", "is", "of", "type", "ZX_OBJ_TYPE_JOB", "or", "ZX_OBJ_TYPE_PROCESS", ",", "it", "must", "have", "ZX_RIGHT_ENUMERATE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "task_kill",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Kill", "the", "provided", "task", "(", "job", ",", "process", ",", "or", "thread", ")", "."
      ],
      "requirements": [
        "handle", "must", "have", "ZX_RIGHT_DESTROY", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "thread_exit",
      "attributes": [
        "*",
        "noreturn"
      ],
      "top_description": [
        "Terminate", "the", "current", "running", "thread", "."
      ],
      "requirements": [
      ],
      "arguments": [
      ],
      "return_type": "void"
    },
    {
      "name": "thread_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "thread", "."
      ],
      "requirements": [
        "process", "must", "be", "of", "type", "ZX_OBJ_TYPE_PROCESS", "and", "have", "ZX_RIGHT_MANAGE_THREAD", "."
      ],
      "arguments": [
        {
          "name": "process",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "name",
          "type": "char",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "name_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "thread_start",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Start", "execution", "on", "a", "thread", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_MANAGE_THREAD", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "thread_entry",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "stack",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg1",
          "type": "uintptr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "arg2",
          "type": "uintptr_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "thread_read_state",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "one", "aspect", "of", "thread", "state", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "thread_write_state",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "one", "aspect", "of", "thread", "state", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_THREAD", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "thread_legacy_yield",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Yield", "the", "CPU", "of", "the", "current", "thread", "back", "to", "the", "scheduler", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "timer_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "timer", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_TIMER", "."
      ],
      "arguments": [
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "clock_id",
          "type": "zx_clock_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "timer_set",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Start", "a", "timer", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_TIMER", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "deadline",
          "type": "zx_time_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "slack",
          "type": "zx_duration_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "timer_cancel",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Cancel", "a", "timer", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_TIMER", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "VCPU", "."
      ],
      "requirements": [
        "guest", "must", "be", "of", "type", "ZX_OBJ_TYPE_GUEST", "and", "have", "ZX_RIGHT_MANAGE_PROCESS", "."
      ],
      "arguments": [
        {
          "name": "guest",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "entry",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_enter",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Enter", "a", "VCPU", ",", "causing", "it", "to", "resume", "execution", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_EXECUTE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "packet",
          "type": "zx_port_packet_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_kick",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Kick", "a", "VCPU", ",", "causing", "it", "to", "stop", "execution", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_EXECUTE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_interrupt",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Raise", "an", "interrupt", "on", "a", "VCPU", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_SIGNAL", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vector",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_read_state",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "the", "state", "of", "a", "VCPU", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vcpu_write_state",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Write", "the", "state", "of", "a", "VCPU", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VCPU", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "kind",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_allocate",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Allocate", "a", "new", "subregion", "."
      ],
      "requirements": [
        "If", "options", "&", "ZX_VM_CAN_MAP_READ", ",", "parent_vmar", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_READ", ".",
        "If", "options", "&", "ZX_VM_CAN_MAP_WRITE", ",", "parent_vmar", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "options", "&", "ZX_VM_CAN_MAP_EXECUTE", ",", "parent_vmar", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_EXECUTE", "."
      ],
      "arguments": [
        {
          "name": "parent_vmar",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "zx_vm_option_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "child_vmar",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "child_addr",
          "type": "zx_vaddr_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_destroy",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Destroy", "a", "virtual", "memory", "address", "region", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_map",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Add", "a", "memory", "mapping", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", ".",
        "vmo", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "zx_vm_option_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmar_offset",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmo_offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "mapped_addr",
          "type": "zx_vaddr_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_unmap",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Unmap", "virtual", "memory", "pages", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "addr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_protect",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "protection", "of", "virtual", "memory", "pages", "."
      ],
      "requirements": [
        "If", "options", "&", "ZX_VM_PERM_READ", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_READ", ".",
        "If", "options", "&", "ZX_VM_PERM_WRITE", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "options", "&", "ZX_VM_PERM_EXECUTE", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMAR", "and", "have", "ZX_RIGHT_EXECUTE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "zx_vm_option_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "addr",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "len",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmar_op_range",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Perform", "an", "operation", "on", "VMOs", "mapped", "into", "this", "VMAR", "."
      ],
      "requirements": [
        "If", "op", "is", "ZX_VMAR_OP_DECOMMIT", ",", "handle", "must", "have", "ZX_RIGHT_WRITE", ".",
        "If", "op", "is", "ZX_VMAR_OP_COMMIT", ",", "handle", "must", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "op",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "address",
          "type": "zx_vaddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_create",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "VM", "object", "."
      ],
      "requirements": [
        "Caller", "job", "policy", "must", "allow", "ZX_POL_NEW_VMO", "."
      ],
      "arguments": [
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_read",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Read", "bytes", "from", "the", "VMO", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_write",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Write", "bytes", "to", "the", "VMO", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
            "IN"
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_get_size",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Read", "the", "current", "size", "of", "a", "VMO", "object", "."
      ],
      "requirements": [
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_set_size",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Resize", "a", "VMO", "object", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_op_range",
      "attributes": [
        "*",
        "blocking"
      ],
      "top_description": [
        "Perform", "an", "operation", "on", "a", "range", "of", "a", "VMO", "."
      ],
      "requirements": [
        "If", "op", "is", "ZX_VMO_OP_COMMIT", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "op", "is", "ZX_VMO_OP_DECOMMIT", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "op", "is", "ZX_VMO_OP_CACHE_SYNC", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", ".",
        "If", "op", "is", "ZX_VMO_OP_CACHE_INVALIDATE", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_WRITE", ".",
        "If", "op", "is", "ZX_VMO_OP_CACHE_CLEAN", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", ".",
        "If", "op", "is", "ZX_VMO_OP_CACHE_CLEAN_INVALIDATE", ",", "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "op",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "buffer",
          "type": "any",
          "is_array": true,
          "attributes": [
          ]
        },
        {
          "name": "buffer_size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_create_child",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "child", "of", "a", "VM", "Object", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_DUPLICATE", "and", "have", "ZX_RIGHT_READ", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "options",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "offset",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "uint64_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_set_cache_policy",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Set", "the", "caching", "policy", "for", "pages", "held", "by", "a", "VMO", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", "and", "have", "ZX_RIGHT_MAP", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "cache_policy",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_replace_as_executable",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Add", "execute", "rights", "to", "a", "VMO", "."
      ],
      "requirements": [
        "handle", "must", "be", "of", "type", "ZX_OBJ_TYPE_VMO", ".",
        "vmex", "must", "have", "resource", "kind", "ZX_RSRC_KIND_VMEX", "."
      ],
      "arguments": [
        {
          "name": "handle",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "vmex",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_create_contiguous",
      "attributes": [
        "*"
      ],
      "top_description": [
      ],
      "requirements": [
        "bti", "must", "be", "of", "type", "ZX_OBJ_TYPE_BTI", "and", "have", "ZX_RIGHT_MAP", "."
      ],
      "arguments": [
        {
          "name": "bti",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "alignment_log2",
          "type": "uint32_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    },
    {
      "name": "vmo_create_physical",
      "attributes": [
        "*"
      ],
      "top_description": [
        "Create", "a", "VM", "object", "referring", "to", "a", "specific", "contiguous", "range", "of", "physical", "memory", "."
      ],
      "requirements": [
        "resource", "must", "have", "resource", "kind", "ZX_RSRC_KIND_MMIO", "."
      ],
      "arguments": [
        {
          "name": "resource",
          "type": "zx_handle_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "paddr",
          "type": "zx_paddr_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "size",
          "type": "size_t",
          "is_array": false,
          "attributes": [
          ]
        },
        {
          "name": "out",
          "type": "zx_handle_t",
          "is_array": true,
          "attributes": [
          ]
        }
      ],
      "return_type": "zx_status_t"
    }
  ]
}
----- json.json END -----


----- kernel-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

KERNEL_SYSCALL(bti_create, zx_status_t, /* no attributes */, 4,
    (iommu, options, bti_id, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t iommu,
    uint32_t options,
    uint64_t bti_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(bti_pin, zx_status_t, /* no attributes */, 8,
    (handle, options, vmo, offset, size, addrs, num_addrs, pmt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t offset,
    uint64_t size,
    user_out_ptr<zx_paddr_t> addrs,
    size_t num_addrs,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* pmt))

KERNEL_SYSCALL(bti_release_quarantine, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

VDSO_SYSCALL(cache_flush, zx_status_t, /* no attributes */, 3,
    (addr, size, options), (
    user_in_ptr<const void> addr,
    size_t size,
    uint32_t options))

KERNEL_SYSCALL(channel_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out1))

KERNEL_SYSCALL(channel_read, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("FuchsiaUnchecked")) zx_handle_t handle,
    uint32_t options,
    user_out_ptr<void> bytes,
    _ZX_SYSCALL_ANNO(acquire_handle("FuchsiaUnchecked")) user_out_ptr<zx_handle_t> handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

KERNEL_SYSCALL(channel_read_etc, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_out_ptr<void> bytes,
    user_out_ptr<zx_handle_info_t> handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

KERNEL_SYSCALL(channel_write, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_in_ptr<const void> bytes,
    uint32_t num_bytes,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) user_in_ptr<const zx_handle_t> handles,
    uint32_t num_handles))

KERNEL_SYSCALL(channel_write_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_in_ptr<const void> bytes,
    uint32_t num_bytes,
    user_inout_ptr<zx_handle_disposition_t> handles,
    uint32_t num_handles))

INTERNAL_SYSCALL(channel_call_noretry, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    user_in_ptr<const zx_channel_call_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

INTERNAL_SYSCALL(channel_call_finish, zx_status_t, /* no attributes */, 4,
    (deadline, args, actual_bytes, actual_handles), (
    zx_time_t deadline,
    user_in_ptr<const zx_channel_call_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

VDSO_SYSCALL(channel_call, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    user_in_ptr<const zx_channel_call_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

INTERNAL_SYSCALL(channel_call_etc_noretry, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    user_inout_ptr<zx_channel_call_etc_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

INTERNAL_SYSCALL(channel_call_etc_finish, zx_status_t, /* no attributes */, 4,
    (deadline, args, actual_bytes, actual_handles), (
    zx_time_t deadline,
    user_inout_ptr<zx_channel_call_etc_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

VDSO_SYSCALL(channel_call_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    user_inout_ptr<zx_channel_call_etc_args_t> args,
    user_out_ptr<uint32_t> actual_bytes,
    user_out_ptr<uint32_t> actual_handles))

VDSO_SYSCALL(clock_get_monotonic, zx_time_t, /* no attributes */, 0,
    (), (void))

INTERNAL_SYSCALL(clock_get_monotonic_via_kernel, zx_time_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(clock_create, zx_status_t, /* no attributes */, 3,
    (options, args, out), (
    uint64_t options,
    user_in_ptr<const void> args,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(clock_read, zx_status_t, /* no attributes */, 2,
    (handle, now), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<zx_time_t> now))

KERNEL_SYSCALL(clock_get_details, zx_status_t, /* no attributes */, 3,
    (handle, options, details), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    user_out_ptr<void> details))

KERNEL_SYSCALL(clock_update, zx_status_t, /* no attributes */, 3,
    (handle, options, args), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    user_in_ptr<const void> args))

INTERNAL_SYSCALL(cprng_draw_once, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    user_out_ptr<void> buffer,
    size_t buffer_size))

VDSO_SYSCALL(cprng_draw, void, /* no attributes */, 2,
    (buffer, buffer_size), (
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(cprng_add_entropy, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    user_in_ptr<const void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debug_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<char> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(debug_write, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    user_in_ptr<const char> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debug_send_command, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    user_in_ptr<const char> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debuglog_create, zx_status_t, /* no attributes */, 3,
    (resource, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(debuglog_write, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_in_ptr<const void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debuglog_read, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(event_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(eventpair_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out1))

KERNEL_SYSCALL(exception_get_thread, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(exception_get_process, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(fifo_create, zx_status_t, /* no attributes */, 5,
    (elem_count, elem_size, options, out0, out1), (
    size_t elem_count,
    size_t elem_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out1))

KERNEL_SYSCALL(fifo_read, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, data_size, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    user_out_ptr<void> data,
    size_t data_size,
    user_out_ptr<size_t> actual_count))

KERNEL_SYSCALL(fifo_write, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, count, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    user_in_ptr<const void> data,
    size_t count,
    user_out_ptr<size_t> actual_count))

KERNEL_SYSCALL(framebuffer_get_info, zx_status_t, /* no attributes */, 5,
    (resource, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    user_out_ptr<uint32_t> format,
    user_out_ptr<uint32_t> width,
    user_out_ptr<uint32_t> height,
    user_out_ptr<uint32_t> stride))

KERNEL_SYSCALL(framebuffer_set_range, zx_status_t, /* no attributes */, 7,
    (resource, vmo, len, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint32_t len,
    uint32_t format,
    uint32_t width,
    uint32_t height,
    uint32_t stride))

BLOCKING_SYSCALL(futex_wait, zx_status_t, /* no attributes */, 4,
    (value_ptr, current_value, new_futex_owner, deadline), (
    user_in_ptr<const zx_futex_t> value_ptr,
    zx_futex_t current_value,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_futex_owner,
    zx_time_t deadline))

KERNEL_SYSCALL(futex_wake, zx_status_t, /* no attributes */, 2,
    (value_ptr, wake_count), (
    user_in_ptr<const zx_futex_t> value_ptr,
    uint32_t wake_count))

KERNEL_SYSCALL(futex_requeue, zx_status_t, /* no attributes */, 6,
    (value_ptr, wake_count, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    user_in_ptr<const zx_futex_t> value_ptr,
    uint32_t wake_count,
    zx_futex_t current_value,
    user_in_ptr<const zx_futex_t> requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

KERNEL_SYSCALL(futex_wake_single_owner, zx_status_t, /* no attributes */, 1,
    (value_ptr), (
    user_in_ptr<const zx_futex_t> value_ptr))

KERNEL_SYSCALL(futex_requeue_single_owner, zx_status_t, /* no attributes */, 5,
    (value_ptr, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    user_in_ptr<const zx_futex_t> value_ptr,
    zx_futex_t current_value,
    user_in_ptr<const zx_futex_t> requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

KERNEL_SYSCALL(futex_get_owner, zx_status_t, /* no attributes */, 2,
    (value_ptr, koid), (
    user_in_ptr<const zx_futex_t> value_ptr,
    user_out_ptr<zx_koid_t> koid))

KERNEL_SYSCALL(guest_create, zx_status_t, /* no attributes */, 4,
    (resource, options, guest_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* guest_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* vmar_handle))

KERNEL_SYSCALL(guest_set_trap, zx_status_t, /* no attributes */, 6,
    (handle, kind, addr, size, port_handle, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key))

KERNEL_SYSCALL(handle_close, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(handle_close_many, zx_status_t, /* no attributes */, 2,
    (handles, num_handles), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) user_in_ptr<const zx_handle_t> handles,
    size_t num_handles))

KERNEL_SYSCALL(handle_duplicate, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(handle_replace, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(interrupt_create, zx_status_t, /* no attributes */, 4,
    (src_obj, src_num, options, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t src_obj,
    uint32_t src_num,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_handle))

KERNEL_SYSCALL(interrupt_bind, zx_status_t, /* no attributes */, 4,
    (handle, port_handle, key, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key,
    uint32_t options))

BLOCKING_SYSCALL(interrupt_wait, zx_status_t, /* no attributes */, 2,
    (handle, out_timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<zx_time_t> out_timestamp))

KERNEL_SYSCALL(interrupt_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(interrupt_ack, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(interrupt_trigger, zx_status_t, /* no attributes */, 3,
    (handle, options, timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t timestamp))

KERNEL_SYSCALL(interrupt_bind_vcpu, zx_status_t, /* no attributes */, 3,
    (handle, vcpu, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vcpu,
    uint32_t options))

KERNEL_SYSCALL(iommu_create, zx_status_t, /* no attributes */, 5,
    (resource, type, desc, desc_size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t type,
    user_in_ptr<const void> desc,
    size_t desc_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(ioports_request, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

KERNEL_SYSCALL(ioports_release, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

KERNEL_SYSCALL(job_create, zx_status_t, /* no attributes */, 3,
    (parent_job, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(job_set_policy, zx_status_t, /* no attributes */, 5,
    (handle, options, topic, policy, policy_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t topic,
    user_in_ptr<const void> policy,
    uint32_t policy_size))

KERNEL_SYSCALL(job_set_critical, zx_status_t, /* no attributes */, 3,
    (job, options, process), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process))

KERNEL_SYSCALL(ktrace_read, zx_status_t, /* no attributes */, 5,
    (handle, data, offset, data_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<void> data,
    uint32_t offset,
    size_t data_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(ktrace_control, zx_status_t, /* no attributes */, 4,
    (handle, action, options, ptr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t action,
    uint32_t options,
    user_inout_ptr<void> ptr))

KERNEL_SYSCALL(ktrace_write, zx_status_t, /* no attributes */, 4,
    (handle, id, arg0, arg1), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t id,
    uint32_t arg0,
    uint32_t arg1))

BLOCKING_SYSCALL(nanosleep, zx_status_t, /* no attributes */, 1,
    (deadline), (
    zx_time_t deadline))

VDSO_SYSCALL(ticks_get, zx_ticks_t, /* no attributes */, 0,
    (), (void))

VDSO_SYSCALL(ticks_per_second, zx_ticks_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(deadline_after, zx_time_t, /* no attributes */, 1,
    (nanoseconds), (
    zx_duration_t nanoseconds))

VDSO_SYSCALL(vmar_unmap_handle_close_thread_exit, zx_status_t, /* no attributes */, 4,
    (vmar_handle, addr, size, close_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmar_handle,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

VDSO_SYSCALL(futex_wake_handle_close_thread_exit, void, __NO_RETURN, 4,
    (value_ptr, wake_count, new_value, close_handle), (
    user_in_ptr<const zx_futex_t> value_ptr,
    uint32_t wake_count,
    int32_t new_value,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

INTERNAL_SYSCALL(ticks_get_via_kernel, zx_ticks_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(msi_allocate, zx_status_t, /* no attributes */, 3,
    (handle, count, out_allocation), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t count,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_allocation))

KERNEL_SYSCALL(msi_create, zx_status_t, /* no attributes */, 6,
    (handle, options, msi_id, vmo, vmo_offset, out_interrupt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t msi_id,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    size_t vmo_offset,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_interrupt))

KERNEL_SYSCALL(mtrace_control, zx_status_t, /* no attributes */, 6,
    (handle, kind, action, options, ptr, ptr_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    uint32_t action,
    uint32_t options,
    user_inout_ptr<void> ptr,
    size_t ptr_size))

BLOCKING_SYSCALL(object_wait_one, zx_status_t, /* no attributes */, 4,
    (handle, signals, deadline, observed), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_signals_t signals,
    zx_time_t deadline,
    user_out_ptr<zx_signals_t> observed))

BLOCKING_SYSCALL(object_wait_many, zx_status_t, /* no attributes */, 3,
    (items, num_items, deadline), (
    user_inout_ptr<zx_wait_item_t> items,
    size_t num_items,
    zx_time_t deadline))

KERNEL_SYSCALL(object_wait_async, zx_status_t, /* no attributes */, 5,
    (handle, port, key, signals, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    zx_signals_t signals,
    uint32_t options))

KERNEL_SYSCALL(object_signal, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

KERNEL_SYSCALL(object_signal_peer, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

KERNEL_SYSCALL(object_get_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    user_out_ptr<void> value,
    size_t value_size))

KERNEL_SYSCALL(object_set_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    user_in_ptr<const void> value,
    size_t value_size))

KERNEL_SYSCALL(object_get_info, zx_status_t, /* no attributes */, 6,
    (handle, topic, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t topic,
    user_out_ptr<void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual,
    user_out_ptr<size_t> avail))

KERNEL_SYSCALL(object_get_child, zx_status_t, /* no attributes */, 4,
    (handle, koid, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t koid,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(object_set_profile, zx_status_t, /* no attributes */, 3,
    (handle, profile, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t profile,
    uint32_t options))

KERNEL_SYSCALL(pager_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(pager_create_vmo, zx_status_t, /* no attributes */, 6,
    (pager, options, port, key, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(pager_detach_vmo, zx_status_t, /* no attributes */, 2,
    (pager, vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo))

KERNEL_SYSCALL(pager_supply_pages, zx_status_t, /* no attributes */, 6,
    (pager, pager_vmo, offset, length, aux_vmo, aux_offset), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t aux_vmo,
    uint64_t aux_offset))

KERNEL_SYSCALL(pager_op_range, zx_status_t, /* no attributes */, 6,
    (pager, op, pager_vmo, offset, length, data), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t op,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    uint64_t data))

KERNEL_SYSCALL(pager_query_dirty_ranges, zx_status_t, /* no attributes */, 8,
    (pager, pager_vmo, offset, length, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    user_out_ptr<void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual,
    user_out_ptr<size_t> avail))

KERNEL_SYSCALL(pager_query_vmo_stats, zx_status_t, /* no attributes */, 5,
    (pager, pager_vmo, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint32_t options,
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(pc_firmware_tables, zx_status_t, /* no attributes */, 3,
    (handle, acpi_rsdp, smbios), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<zx_paddr_t> acpi_rsdp,
    user_out_ptr<zx_paddr_t> smbios))

KERNEL_SYSCALL(pci_get_nth_device, zx_status_t, /* no attributes */, 4,
    (handle, index, out_info, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t index,
    user_out_ptr<zx_pcie_device_info_t> out_info,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_handle))

KERNEL_SYSCALL(pci_enable_bus_master, zx_status_t, /* no attributes */, 2,
    (handle, enable), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t enable))

KERNEL_SYSCALL(pci_reset_device, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(pci_config_read, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, out_val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    user_out_ptr<uint32_t> out_val))

KERNEL_SYSCALL(pci_config_write, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    uint32_t val))

KERNEL_SYSCALL(pci_cfg_pio_rw, zx_status_t, /* no attributes */, 8,
    (handle, bus, dev, func, offset, val, width, write), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint8_t bus,
    uint8_t dev,
    uint8_t func,
    uint8_t offset,
    user_inout_ptr<uint32_t> val,
    size_t width,
    uint32_t write))

KERNEL_SYSCALL(pci_get_bar, zx_status_t, /* no attributes */, 4,
    (handle, bar_num, out_bar, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t bar_num,
    user_out_ptr<zx_pci_bar_t> out_bar,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_handle))

KERNEL_SYSCALL(pci_map_interrupt, zx_status_t, /* no attributes */, 3,
    (handle, which_irq, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    int32_t which_irq,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_handle))

KERNEL_SYSCALL(pci_query_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, out_max_irqs), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    user_out_ptr<uint32_t> out_max_irqs))

KERNEL_SYSCALL(pci_set_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, requested_irq_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    uint32_t requested_irq_count))

KERNEL_SYSCALL(pci_init, zx_status_t, /* no attributes */, 3,
    (handle, init_buf, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_in_ptr<const zx_pci_init_arg_t> init_buf,
    uint32_t len))

KERNEL_SYSCALL(pci_add_subtract_io_range, zx_status_t, /* no attributes */, 5,
    (handle, mmio, base, len, add), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mmio,
    uint64_t base,
    uint64_t len,
    uint32_t add))

KERNEL_SYSCALL(pmt_unpin, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(port_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(port_queue, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_in_ptr<const zx_port_packet_t> packet))

BLOCKING_SYSCALL(port_wait, zx_status_t, /* no attributes */, 3,
    (handle, deadline, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    user_out_ptr<zx_port_packet_t> packet))

KERNEL_SYSCALL(port_cancel, zx_status_t, /* no attributes */, 3,
    (handle, source, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t source,
    uint64_t key))

KERNEL_SYSCALL(process_exit, void, __NO_RETURN, 1,
    (retcode), (
    int64_t retcode))

KERNEL_SYSCALL(process_create, zx_status_t, /* no attributes */, 6,
    (job, name, name_size, options, proc_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    user_in_ptr<const char> name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* proc_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* vmar_handle))

KERNEL_SYSCALL(process_start, zx_status_t, /* no attributes */, 6,
    (handle, thread, entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t thread,
    zx_vaddr_t entry,
    zx_vaddr_t stack,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t arg1,
    uintptr_t arg2))

KERNEL_SYSCALL(process_read_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    user_out_ptr<void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(process_write_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    user_in_ptr<const void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(profile_create, zx_status_t, /* no attributes */, 4,
    (root_job, options, profile, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t options,
    user_in_ptr<const zx_profile_info_t> profile,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(resource_create, zx_status_t, /* no attributes */, 7,
    (parent_rsrc, options, base, size, name, name_size, resource_out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_rsrc,
    uint32_t options,
    uint64_t base,
    size_t size,
    user_in_ptr<const char> name,
    size_t name_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* resource_out))

KERNEL_SYSCALL(smc_call, zx_status_t, /* no attributes */, 3,
    (handle, parameters, out_smc_result), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_in_ptr<const zx_smc_parameters_t> parameters,
    user_out_ptr<zx_smc_result_t> out_smc_result))

KERNEL_SYSCALL(socket_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out1))

KERNEL_SYSCALL(socket_write, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_in_ptr<const void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(socket_read, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_out_ptr<void> buffer,
    size_t buffer_size,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(socket_set_disposition, zx_status_t, /* no attributes */, 3,
    (handle, disposition, disposition_peer), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t disposition,
    uint32_t disposition_peer))

KERNEL_SYSCALL(stream_create, zx_status_t, /* no attributes */, 4,
    (options, vmo, seek, out_stream), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    zx_off_t seek,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out_stream))

BLOCKING_SYSCALL(stream_writev, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_in_ptr<const zx_iovec_t> vector,
    size_t num_vector,
    user_out_ptr<size_t> actual))

BLOCKING_SYSCALL(stream_writev_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    user_in_ptr<const zx_iovec_t> vector,
    size_t num_vector,
    user_out_ptr<size_t> actual))

BLOCKING_SYSCALL(stream_readv, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    user_out_ptr<zx_iovec_t> vector,
    size_t num_vector,
    user_out_ptr<size_t> actual))

BLOCKING_SYSCALL(stream_readv_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    user_out_ptr<zx_iovec_t> vector,
    size_t num_vector,
    user_out_ptr<size_t> actual))

KERNEL_SYSCALL(stream_seek, zx_status_t, /* no attributes */, 4,
    (handle, whence, offset, out_seek), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_stream_seek_origin_t whence,
    int64_t offset,
    user_out_ptr<zx_off_t> out_seek))

KERNEL_SYSCALL(syscall_test_0, zx_status_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(syscall_test_1, zx_status_t, /* no attributes */, 1,
    (a), (
    int32_t a))

KERNEL_SYSCALL(syscall_test_2, zx_status_t, /* no attributes */, 2,
    (a, b), (
    int32_t a,
    int32_t b))

KERNEL_SYSCALL(syscall_test_3, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

KERNEL_SYSCALL(syscall_test_4, zx_status_t, /* no attributes */, 4,
    (a, b, c, d), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d))

KERNEL_SYSCALL(syscall_test_5, zx_status_t, /* no attributes */, 5,
    (a, b, c, d, e), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e))

KERNEL_SYSCALL(syscall_test_6, zx_status_t, /* no attributes */, 6,
    (a, b, c, d, e, f), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f))

KERNEL_SYSCALL(syscall_test_7, zx_status_t, /* no attributes */, 7,
    (a, b, c, d, e, f, g), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g))

KERNEL_SYSCALL(syscall_test_8, zx_status_t, /* no attributes */, 8,
    (a, b, c, d, e, f, g, h), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g,
    int32_t h))

KERNEL_SYSCALL(syscall_next_1, zx_status_t, /* no attributes */, 1,
    (arg), (
    int32_t arg))

KERNEL_SYSCALL(syscall_test_wrapper, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

KERNEL_SYSCALL(syscall_test_handle_create, zx_status_t, /* no attributes */, 2,
    (return_value, out), (
    zx_status_t return_value,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(syscall_test_widening_unsigned_narrow, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

KERNEL_SYSCALL(syscall_test_widening_signed_narrow, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

KERNEL_SYSCALL(syscall_test_widening_unsigned_wide, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

KERNEL_SYSCALL(syscall_test_widening_signed_wide, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

VDSO_SYSCALL(system_get_dcache_line_size, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_num_cpus, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_version_string, zx_string_view_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_page_size, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_physmem, uint64_t, /* no attributes */, 0,
    (), (void))

VDSO_SYSCALL(system_get_features, zx_status_t, /* no attributes */, 2,
    (kind, features), (
    uint32_t kind,
    user_out_ptr<uint32_t> features))

KERNEL_SYSCALL(system_get_event, zx_status_t, /* no attributes */, 3,
    (root_job, kind, event), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t kind,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* event))

KERNEL_SYSCALL(system_set_performance_info, zx_status_t, /* no attributes */, 4,
    (resource, topic, info, count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    user_in_ptr<const void> info,
    size_t count))

KERNEL_SYSCALL(system_get_performance_info, zx_status_t, /* no attributes */, 5,
    (resource, topic, count, info, output_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    size_t count,
    user_out_ptr<void> info,
    user_out_ptr<size_t> output_count))

KERNEL_SYSCALL(system_mexec, zx_status_t, /* no attributes */, 3,
    (resource, kernel_vmo, bootimage_vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t kernel_vmo,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bootimage_vmo))

KERNEL_SYSCALL(system_mexec_payload_get, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(system_powerctl, zx_status_t, /* no attributes */, 3,
    (resource, cmd, arg), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t cmd,
    user_in_ptr<const zx_system_powerctl_arg_t> arg))

KERNEL_SYSCALL(task_suspend, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* token))

KERNEL_SYSCALL(task_suspend_token, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* token))

KERNEL_SYSCALL(task_create_exception_channel, zx_status_t, /* no attributes */, 3,
    (handle, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(task_kill, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(thread_exit, void, __NO_RETURN, 0,
    (), (void))

KERNEL_SYSCALL(thread_create, zx_status_t, /* no attributes */, 5,
    (process, name, name_size, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process,
    user_in_ptr<const char> name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(thread_start, zx_status_t, /* no attributes */, 5,
    (handle, thread_entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t thread_entry,
    zx_vaddr_t stack,
    uintptr_t arg1,
    uintptr_t arg2))

KERNEL_SYSCALL(thread_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(thread_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    user_in_ptr<const void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(thread_legacy_yield, zx_status_t, /* no attributes */, 1,
    (options), (
    uint32_t options))

KERNEL_SYSCALL(timer_create, zx_status_t, /* no attributes */, 3,
    (options, clock_id, out), (
    uint32_t options,
    zx_clock_t clock_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(timer_set, zx_status_t, /* no attributes */, 3,
    (handle, deadline, slack), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    zx_duration_t slack))

KERNEL_SYSCALL(timer_cancel, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vcpu_create, zx_status_t, /* no attributes */, 4,
    (guest, options, entry, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t guest,
    uint32_t options,
    zx_vaddr_t entry,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

BLOCKING_SYSCALL(vcpu_enter, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<zx_port_packet_t> packet))

KERNEL_SYSCALL(vcpu_kick, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vcpu_interrupt, zx_status_t, /* no attributes */, 2,
    (handle, vector), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t vector))

KERNEL_SYSCALL(vcpu_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    user_out_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vcpu_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    user_in_ptr<const void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmar_allocate, zx_status_t, /* no attributes */, 6,
    (parent_vmar, options, offset, size, child_vmar, child_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_vmar,
    zx_vm_option_t options,
    size_t offset,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* child_vmar,
    user_out_ptr<zx_vaddr_t> child_addr))

KERNEL_SYSCALL(vmar_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vmar_map, zx_status_t, /* no attributes */, 7,
    (handle, options, vmar_offset, vmo, vmo_offset, len, mapped_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    size_t vmar_offset,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t vmo_offset,
    size_t len,
    user_out_ptr<zx_vaddr_t> mapped_addr))

KERNEL_SYSCALL(vmar_unmap, zx_status_t, /* no attributes */, 3,
    (handle, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t addr,
    size_t len))

KERNEL_SYSCALL(vmar_protect, zx_status_t, /* no attributes */, 4,
    (handle, options, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    zx_vaddr_t addr,
    size_t len))

KERNEL_SYSCALL(vmar_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, address, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    zx_vaddr_t address,
    size_t size,
    user_inout_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_create, zx_status_t, /* no attributes */, 3,
    (size, options, out), (
    uint64_t size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

BLOCKING_SYSCALL(vmo_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<void> buffer,
    uint64_t offset,
    size_t buffer_size))

BLOCKING_SYSCALL(vmo_write, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_in_ptr<const void> buffer,
    uint64_t offset,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_get_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    user_out_ptr<uint64_t> size))

KERNEL_SYSCALL(vmo_set_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t size))

BLOCKING_SYSCALL(vmo_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, offset, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    uint64_t offset,
    uint64_t size,
    user_inout_ptr<void> buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_create_child, zx_status_t, /* no attributes */, 5,
    (handle, options, offset, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint64_t offset,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(vmo_set_cache_policy, zx_status_t, /* no attributes */, 2,
    (handle, cache_policy), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t cache_policy))

KERNEL_SYSCALL(vmo_replace_as_executable, zx_status_t, /* no attributes */, 3,
    (handle, vmex, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmex,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(vmo_create_contiguous, zx_status_t, /* no attributes */, 4,
    (bti, size, alignment_log2, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bti,
    size_t size,
    uint32_t alignment_log2,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

KERNEL_SYSCALL(vmo_create_physical, zx_status_t, /* no attributes */, 4,
    (resource, paddr, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    zx_paddr_t paddr,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) user_out_handle* out))

----- kernel-header.h END -----


----- kernel-wrappers.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

extern "C" {

syscall_result wrapper_bti_create(SafeSyscallArgument<zx_handle_t>::RawType iommu, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType bti_id, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_bti_create(SafeSyscallArgument<zx_handle_t>::RawType iommu, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType bti_id, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_bti_create, pc, &VDso::ValidSyscallPC::bti_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_bti_create(SafeSyscallArgument<zx_handle_t>::Sanitize(iommu), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<uint64_t>::Sanitize(bti_id), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_bti_pin(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_paddr_t*>::RawType addrs, SafeSyscallArgument<size_t>::RawType num_addrs, SafeSyscallArgument<zx_handle_t*>::RawType pmt, uint64_t pc);
syscall_result wrapper_bti_pin(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_paddr_t*>::RawType addrs, SafeSyscallArgument<size_t>::RawType num_addrs, SafeSyscallArgument<zx_handle_t*>::RawType pmt, uint64_t pc) {
    return do_syscall(ZX_SYS_bti_pin, pc, &VDso::ValidSyscallPC::bti_pin, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_pmt;
        auto result = sys_bti_pin(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(size), make_user_out_ptr(SafeSyscallArgument<zx_paddr_t*>::Sanitize(addrs)), SafeSyscallArgument<size_t>::Sanitize(num_addrs), &out_handle_pmt);
        if (result != ZX_OK)
            return result;
        result = out_handle_pmt.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(pmt)));
        if (result != ZX_OK)
            return result;
        out_handle_pmt.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_bti_release_quarantine(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_bti_release_quarantine(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_bti_release_quarantine, pc, &VDso::ValidSyscallPC::bti_release_quarantine, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_bti_release_quarantine(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_channel_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc);
syscall_result wrapper_channel_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_create, pc, &VDso::ValidSyscallPC::channel_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out0;
        user_out_handle out_handle_out1;
        auto result = sys_channel_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out0, &out_handle_out1);
        if (result != ZX_OK)
            return result;
        result = out_handle_out0.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out0)));
        if (result != ZX_OK)
            return result;
        result = out_handle_out1.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out1)));
        if (result != ZX_OK)
            return result;
        out_handle_out0.finish_copyout(current_process);
        out_handle_out1.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_channel_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType bytes, SafeSyscallArgument<zx_handle_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<uint32_t>::RawType num_handles, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType bytes, SafeSyscallArgument<zx_handle_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<uint32_t>::RawType num_handles, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_read, pc, &VDso::ValidSyscallPC::channel_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(bytes)), make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(handles)), SafeSyscallArgument<uint32_t>::Sanitize(num_bytes), SafeSyscallArgument<uint32_t>::Sanitize(num_handles), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_channel_read_etc(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType bytes, SafeSyscallArgument<zx_handle_info_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<uint32_t>::RawType num_handles, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_read_etc(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType bytes, SafeSyscallArgument<zx_handle_info_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<uint32_t>::RawType num_handles, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_read_etc, pc, &VDso::ValidSyscallPC::channel_read_etc, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_read_etc(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(bytes)), make_user_out_ptr(SafeSyscallArgument<zx_handle_info_t*>::Sanitize(handles)), SafeSyscallArgument<uint32_t>::Sanitize(num_bytes), SafeSyscallArgument<uint32_t>::Sanitize(num_handles), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_channel_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType bytes, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<const zx_handle_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_handles, uint64_t pc);
syscall_result wrapper_channel_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType bytes, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<const zx_handle_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_write, pc, &VDso::ValidSyscallPC::channel_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(bytes)), SafeSyscallArgument<uint32_t>::Sanitize(num_bytes), make_user_in_ptr(SafeSyscallArgument<const zx_handle_t*>::Sanitize(handles)), SafeSyscallArgument<uint32_t>::Sanitize(num_handles));
        return result;
    });
}

syscall_result wrapper_channel_write_etc(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType bytes, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<zx_handle_disposition_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_handles, uint64_t pc);
syscall_result wrapper_channel_write_etc(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType bytes, SafeSyscallArgument<uint32_t>::RawType num_bytes, SafeSyscallArgument<zx_handle_disposition_t*>::RawType handles, SafeSyscallArgument<uint32_t>::RawType num_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_write_etc, pc, &VDso::ValidSyscallPC::channel_write_etc, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_write_etc(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(bytes)), SafeSyscallArgument<uint32_t>::Sanitize(num_bytes), make_user_inout_ptr(SafeSyscallArgument<zx_handle_disposition_t*>::Sanitize(handles)), SafeSyscallArgument<uint32_t>::Sanitize(num_handles));
        return result;
    });
}

syscall_result wrapper_channel_call_noretry(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<const zx_channel_call_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_call_noretry(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<const zx_channel_call_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_call_noretry, pc, &VDso::ValidSyscallPC::channel_call_noretry, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_call_noretry(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_in_ptr(SafeSyscallArgument<const zx_channel_call_args_t*>::Sanitize(args)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_channel_call_finish(SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<const zx_channel_call_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_call_finish(SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<const zx_channel_call_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_call_finish, pc, &VDso::ValidSyscallPC::channel_call_finish, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_call_finish(SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_in_ptr(SafeSyscallArgument<const zx_channel_call_args_t*>::Sanitize(args)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_channel_call_etc_noretry(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_channel_call_etc_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_call_etc_noretry(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_channel_call_etc_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_call_etc_noretry, pc, &VDso::ValidSyscallPC::channel_call_etc_noretry, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_call_etc_noretry(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_inout_ptr(SafeSyscallArgument<zx_channel_call_etc_args_t*>::Sanitize(args)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_channel_call_etc_finish(SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_channel_call_etc_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc);
syscall_result wrapper_channel_call_etc_finish(SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_channel_call_etc_args_t*>::RawType args, SafeSyscallArgument<uint32_t*>::RawType actual_bytes, SafeSyscallArgument<uint32_t*>::RawType actual_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_channel_call_etc_finish, pc, &VDso::ValidSyscallPC::channel_call_etc_finish, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_channel_call_etc_finish(SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_inout_ptr(SafeSyscallArgument<zx_channel_call_etc_args_t*>::Sanitize(args)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_bytes)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(actual_handles)));
        return result;
    });
}

syscall_result wrapper_clock_get_monotonic_via_kernel(uint64_t pc);
syscall_result wrapper_clock_get_monotonic_via_kernel(uint64_t pc) {
    return do_syscall(ZX_SYS_clock_get_monotonic_via_kernel, pc, &VDso::ValidSyscallPC::clock_get_monotonic_via_kernel, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_clock_get_monotonic_via_kernel();
        return result;
    });
}

syscall_result wrapper_clock_create(SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<const void*>::RawType args, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_clock_create(SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<const void*>::RawType args, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_clock_create, pc, &VDso::ValidSyscallPC::clock_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_clock_create(SafeSyscallArgument<uint64_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(args)), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_clock_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t*>::RawType now, uint64_t pc);
syscall_result wrapper_clock_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t*>::RawType now, uint64_t pc) {
    return do_syscall(ZX_SYS_clock_read, pc, &VDso::ValidSyscallPC::clock_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_clock_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<zx_time_t*>::Sanitize(now)));
        return result;
    });
}

syscall_result wrapper_clock_get_details(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<void*>::RawType details, uint64_t pc);
syscall_result wrapper_clock_get_details(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<void*>::RawType details, uint64_t pc) {
    return do_syscall(ZX_SYS_clock_get_details, pc, &VDso::ValidSyscallPC::clock_get_details, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_clock_get_details(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint64_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(details)));
        return result;
    });
}

syscall_result wrapper_clock_update(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<const void*>::RawType args, uint64_t pc);
syscall_result wrapper_clock_update(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType options, SafeSyscallArgument<const void*>::RawType args, uint64_t pc) {
    return do_syscall(ZX_SYS_clock_update, pc, &VDso::ValidSyscallPC::clock_update, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_clock_update(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint64_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(args)));
        return result;
    });
}

syscall_result wrapper_cprng_draw_once(SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_cprng_draw_once(SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_cprng_draw_once, pc, &VDso::ValidSyscallPC::cprng_draw_once, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_cprng_draw_once(make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_cprng_add_entropy(SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_cprng_add_entropy(SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_cprng_add_entropy, pc, &VDso::ValidSyscallPC::cprng_add_entropy, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_cprng_add_entropy(make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_debug_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_debug_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_debug_read, pc, &VDso::ValidSyscallPC::debug_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_debug_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<char*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_debug_write(SafeSyscallArgument<const char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_debug_write(SafeSyscallArgument<const char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_debug_write, pc, &VDso::ValidSyscallPC::debug_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_debug_write(make_user_in_ptr(SafeSyscallArgument<const char*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_debug_send_command(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<const char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_debug_send_command(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<const char*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_debug_send_command, pc, &VDso::ValidSyscallPC::debug_send_command, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_debug_send_command(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), make_user_in_ptr(SafeSyscallArgument<const char*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_debuglog_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_debuglog_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_debuglog_create, pc, &VDso::ValidSyscallPC::debuglog_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_debuglog_create(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_debuglog_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_debuglog_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_debuglog_write, pc, &VDso::ValidSyscallPC::debuglog_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_debuglog_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_debuglog_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_debuglog_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_debuglog_read, pc, &VDso::ValidSyscallPC::debuglog_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_debuglog_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_event_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_event_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_event_create, pc, &VDso::ValidSyscallPC::event_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_event_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_eventpair_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc);
syscall_result wrapper_eventpair_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc) {
    return do_syscall(ZX_SYS_eventpair_create, pc, &VDso::ValidSyscallPC::eventpair_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out0;
        user_out_handle out_handle_out1;
        auto result = sys_eventpair_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out0, &out_handle_out1);
        if (result != ZX_OK)
            return result;
        result = out_handle_out0.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out0)));
        if (result != ZX_OK)
            return result;
        result = out_handle_out1.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out1)));
        if (result != ZX_OK)
            return result;
        out_handle_out0.finish_copyout(current_process);
        out_handle_out1.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_exception_get_thread(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_exception_get_thread(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_exception_get_thread, pc, &VDso::ValidSyscallPC::exception_get_thread, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_exception_get_thread(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_exception_get_process(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_exception_get_process(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_exception_get_process, pc, &VDso::ValidSyscallPC::exception_get_process, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_exception_get_process(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_fifo_create(SafeSyscallArgument<size_t>::RawType elem_count, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc);
syscall_result wrapper_fifo_create(SafeSyscallArgument<size_t>::RawType elem_count, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc) {
    return do_syscall(ZX_SYS_fifo_create, pc, &VDso::ValidSyscallPC::fifo_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out0;
        user_out_handle out_handle_out1;
        auto result = sys_fifo_create(SafeSyscallArgument<size_t>::Sanitize(elem_count), SafeSyscallArgument<size_t>::Sanitize(elem_size), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out0, &out_handle_out1);
        if (result != ZX_OK)
            return result;
        result = out_handle_out0.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out0)));
        if (result != ZX_OK)
            return result;
        result = out_handle_out1.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out1)));
        if (result != ZX_OK)
            return result;
        out_handle_out0.finish_copyout(current_process);
        out_handle_out1.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_fifo_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<void*>::RawType data, SafeSyscallArgument<size_t>::RawType data_size, SafeSyscallArgument<size_t*>::RawType actual_count, uint64_t pc);
syscall_result wrapper_fifo_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<void*>::RawType data, SafeSyscallArgument<size_t>::RawType data_size, SafeSyscallArgument<size_t*>::RawType actual_count, uint64_t pc) {
    return do_syscall(ZX_SYS_fifo_read, pc, &VDso::ValidSyscallPC::fifo_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_fifo_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<size_t>::Sanitize(elem_size), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(data)), SafeSyscallArgument<size_t>::Sanitize(data_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual_count)));
        return result;
    });
}

syscall_result wrapper_fifo_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<const void*>::RawType data, SafeSyscallArgument<size_t>::RawType count, SafeSyscallArgument<size_t*>::RawType actual_count, uint64_t pc);
syscall_result wrapper_fifo_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<size_t>::RawType elem_size, SafeSyscallArgument<const void*>::RawType data, SafeSyscallArgument<size_t>::RawType count, SafeSyscallArgument<size_t*>::RawType actual_count, uint64_t pc) {
    return do_syscall(ZX_SYS_fifo_write, pc, &VDso::ValidSyscallPC::fifo_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_fifo_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<size_t>::Sanitize(elem_size), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(data)), SafeSyscallArgument<size_t>::Sanitize(count), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual_count)));
        return result;
    });
}

syscall_result wrapper_framebuffer_get_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t*>::RawType format, SafeSyscallArgument<uint32_t*>::RawType width, SafeSyscallArgument<uint32_t*>::RawType height, SafeSyscallArgument<uint32_t*>::RawType stride, uint64_t pc);
syscall_result wrapper_framebuffer_get_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t*>::RawType format, SafeSyscallArgument<uint32_t*>::RawType width, SafeSyscallArgument<uint32_t*>::RawType height, SafeSyscallArgument<uint32_t*>::RawType stride, uint64_t pc) {
    return do_syscall(ZX_SYS_framebuffer_get_info, pc, &VDso::ValidSyscallPC::framebuffer_get_info, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_framebuffer_get_info(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(format)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(width)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(height)), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(stride)));
        return result;
    });
}

syscall_result wrapper_framebuffer_set_range(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint32_t>::RawType len, SafeSyscallArgument<uint32_t>::RawType format, SafeSyscallArgument<uint32_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType height, SafeSyscallArgument<uint32_t>::RawType stride, uint64_t pc);
syscall_result wrapper_framebuffer_set_range(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint32_t>::RawType len, SafeSyscallArgument<uint32_t>::RawType format, SafeSyscallArgument<uint32_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType height, SafeSyscallArgument<uint32_t>::RawType stride, uint64_t pc) {
    return do_syscall(ZX_SYS_framebuffer_set_range, pc, &VDso::ValidSyscallPC::framebuffer_set_range, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_framebuffer_set_range(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo), SafeSyscallArgument<uint32_t>::Sanitize(len), SafeSyscallArgument<uint32_t>::Sanitize(format), SafeSyscallArgument<uint32_t>::Sanitize(width), SafeSyscallArgument<uint32_t>::Sanitize(height), SafeSyscallArgument<uint32_t>::Sanitize(stride));
        return result;
    });
}

syscall_result wrapper_futex_wait(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<zx_handle_t>::RawType new_futex_owner, SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc);
syscall_result wrapper_futex_wait(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<zx_handle_t>::RawType new_futex_owner, SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_wait, pc, &VDso::ValidSyscallPC::futex_wait, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_wait(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)), SafeSyscallArgument<zx_futex_t>::Sanitize(current_value), SafeSyscallArgument<zx_handle_t>::Sanitize(new_futex_owner), SafeSyscallArgument<zx_time_t>::Sanitize(deadline));
        return result;
    });
}

syscall_result wrapper_futex_wake(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<uint32_t>::RawType wake_count, uint64_t pc);
syscall_result wrapper_futex_wake(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<uint32_t>::RawType wake_count, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_wake, pc, &VDso::ValidSyscallPC::futex_wake, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_wake(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)), SafeSyscallArgument<uint32_t>::Sanitize(wake_count));
        return result;
    });
}

syscall_result wrapper_futex_requeue(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<uint32_t>::RawType wake_count, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<const zx_futex_t*>::RawType requeue_ptr, SafeSyscallArgument<uint32_t>::RawType requeue_count, SafeSyscallArgument<zx_handle_t>::RawType new_requeue_owner, uint64_t pc);
syscall_result wrapper_futex_requeue(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<uint32_t>::RawType wake_count, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<const zx_futex_t*>::RawType requeue_ptr, SafeSyscallArgument<uint32_t>::RawType requeue_count, SafeSyscallArgument<zx_handle_t>::RawType new_requeue_owner, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_requeue, pc, &VDso::ValidSyscallPC::futex_requeue, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_requeue(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)), SafeSyscallArgument<uint32_t>::Sanitize(wake_count), SafeSyscallArgument<zx_futex_t>::Sanitize(current_value), make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(requeue_ptr)), SafeSyscallArgument<uint32_t>::Sanitize(requeue_count), SafeSyscallArgument<zx_handle_t>::Sanitize(new_requeue_owner));
        return result;
    });
}

syscall_result wrapper_futex_wake_single_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, uint64_t pc);
syscall_result wrapper_futex_wake_single_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_wake_single_owner, pc, &VDso::ValidSyscallPC::futex_wake_single_owner, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_wake_single_owner(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)));
        return result;
    });
}

syscall_result wrapper_futex_requeue_single_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<const zx_futex_t*>::RawType requeue_ptr, SafeSyscallArgument<uint32_t>::RawType requeue_count, SafeSyscallArgument<zx_handle_t>::RawType new_requeue_owner, uint64_t pc);
syscall_result wrapper_futex_requeue_single_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_futex_t>::RawType current_value, SafeSyscallArgument<const zx_futex_t*>::RawType requeue_ptr, SafeSyscallArgument<uint32_t>::RawType requeue_count, SafeSyscallArgument<zx_handle_t>::RawType new_requeue_owner, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_requeue_single_owner, pc, &VDso::ValidSyscallPC::futex_requeue_single_owner, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_requeue_single_owner(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)), SafeSyscallArgument<zx_futex_t>::Sanitize(current_value), make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(requeue_ptr)), SafeSyscallArgument<uint32_t>::Sanitize(requeue_count), SafeSyscallArgument<zx_handle_t>::Sanitize(new_requeue_owner));
        return result;
    });
}

syscall_result wrapper_futex_get_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_koid_t*>::RawType koid, uint64_t pc);
syscall_result wrapper_futex_get_owner(SafeSyscallArgument<const zx_futex_t*>::RawType value_ptr, SafeSyscallArgument<zx_koid_t*>::RawType koid, uint64_t pc) {
    return do_syscall(ZX_SYS_futex_get_owner, pc, &VDso::ValidSyscallPC::futex_get_owner, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_futex_get_owner(make_user_in_ptr(SafeSyscallArgument<const zx_futex_t*>::Sanitize(value_ptr)), make_user_out_ptr(SafeSyscallArgument<zx_koid_t*>::Sanitize(koid)));
        return result;
    });
}

syscall_result wrapper_guest_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType guest_handle, SafeSyscallArgument<zx_handle_t*>::RawType vmar_handle, uint64_t pc);
syscall_result wrapper_guest_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType guest_handle, SafeSyscallArgument<zx_handle_t*>::RawType vmar_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_guest_create, pc, &VDso::ValidSyscallPC::guest_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_guest_handle;
        user_out_handle out_handle_vmar_handle;
        auto result = sys_guest_create(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_guest_handle, &out_handle_vmar_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_guest_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(guest_handle)));
        if (result != ZX_OK)
            return result;
        result = out_handle_vmar_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(vmar_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_guest_handle.finish_copyout(current_process);
        out_handle_vmar_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_guest_set_trap(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t>::RawType port_handle, SafeSyscallArgument<uint64_t>::RawType key, uint64_t pc);
syscall_result wrapper_guest_set_trap(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t>::RawType port_handle, SafeSyscallArgument<uint64_t>::RawType key, uint64_t pc) {
    return do_syscall(ZX_SYS_guest_set_trap, pc, &VDso::ValidSyscallPC::guest_set_trap, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_guest_set_trap(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), SafeSyscallArgument<zx_vaddr_t>::Sanitize(addr), SafeSyscallArgument<size_t>::Sanitize(size), SafeSyscallArgument<zx_handle_t>::Sanitize(port_handle), SafeSyscallArgument<uint64_t>::Sanitize(key));
        return result;
    });
}

syscall_result wrapper_handle_close(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_handle_close(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_handle_close, pc, &VDso::ValidSyscallPC::handle_close, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_handle_close(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_handle_close_many(SafeSyscallArgument<const zx_handle_t*>::RawType handles, SafeSyscallArgument<size_t>::RawType num_handles, uint64_t pc);
syscall_result wrapper_handle_close_many(SafeSyscallArgument<const zx_handle_t*>::RawType handles, SafeSyscallArgument<size_t>::RawType num_handles, uint64_t pc) {
    return do_syscall(ZX_SYS_handle_close_many, pc, &VDso::ValidSyscallPC::handle_close_many, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_handle_close_many(make_user_in_ptr(SafeSyscallArgument<const zx_handle_t*>::Sanitize(handles)), SafeSyscallArgument<size_t>::Sanitize(num_handles));
        return result;
    });
}

syscall_result wrapper_handle_duplicate(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_handle_duplicate(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_handle_duplicate, pc, &VDso::ValidSyscallPC::handle_duplicate, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_handle_duplicate(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_rights_t>::Sanitize(rights), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_handle_replace(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_handle_replace(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_handle_replace, pc, &VDso::ValidSyscallPC::handle_replace, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_handle_replace(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_rights_t>::Sanitize(rights), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_interrupt_create(SafeSyscallArgument<zx_handle_t>::RawType src_obj, SafeSyscallArgument<uint32_t>::RawType src_num, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc);
syscall_result wrapper_interrupt_create(SafeSyscallArgument<zx_handle_t>::RawType src_obj, SafeSyscallArgument<uint32_t>::RawType src_num, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_create, pc, &VDso::ValidSyscallPC::interrupt_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_handle;
        auto result = sys_interrupt_create(SafeSyscallArgument<zx_handle_t>::Sanitize(src_obj), SafeSyscallArgument<uint32_t>::Sanitize(src_num), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_out_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_interrupt_bind(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType port_handle, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc);
syscall_result wrapper_interrupt_bind(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType port_handle, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_bind, pc, &VDso::ValidSyscallPC::interrupt_bind, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_bind(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(port_handle), SafeSyscallArgument<uint64_t>::Sanitize(key), SafeSyscallArgument<uint32_t>::Sanitize(options));
        return result;
    });
}

syscall_result wrapper_interrupt_wait(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t*>::RawType out_timestamp, uint64_t pc);
syscall_result wrapper_interrupt_wait(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t*>::RawType out_timestamp, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_wait, pc, &VDso::ValidSyscallPC::interrupt_wait, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_wait(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<zx_time_t*>::Sanitize(out_timestamp)));
        return result;
    });
}

syscall_result wrapper_interrupt_destroy(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_interrupt_destroy(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_destroy, pc, &VDso::ValidSyscallPC::interrupt_destroy, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_destroy(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_interrupt_ack(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_interrupt_ack(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_ack, pc, &VDso::ValidSyscallPC::interrupt_ack, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_ack(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_interrupt_trigger(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType timestamp, uint64_t pc);
syscall_result wrapper_interrupt_trigger(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_time_t>::RawType timestamp, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_trigger, pc, &VDso::ValidSyscallPC::interrupt_trigger, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_trigger(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_time_t>::Sanitize(timestamp));
        return result;
    });
}

syscall_result wrapper_interrupt_bind_vcpu(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType vcpu, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc);
syscall_result wrapper_interrupt_bind_vcpu(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType vcpu, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc) {
    return do_syscall(ZX_SYS_interrupt_bind_vcpu, pc, &VDso::ValidSyscallPC::interrupt_bind_vcpu, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_interrupt_bind_vcpu(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(vcpu), SafeSyscallArgument<uint32_t>::Sanitize(options));
        return result;
    });
}

syscall_result wrapper_iommu_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType type, SafeSyscallArgument<const void*>::RawType desc, SafeSyscallArgument<size_t>::RawType desc_size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_iommu_create(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType type, SafeSyscallArgument<const void*>::RawType desc, SafeSyscallArgument<size_t>::RawType desc_size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_iommu_create, pc, &VDso::ValidSyscallPC::iommu_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_iommu_create(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(type), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(desc)), SafeSyscallArgument<size_t>::Sanitize(desc_size), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_ioports_request(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint16_t>::RawType io_addr, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc);
syscall_result wrapper_ioports_request(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint16_t>::RawType io_addr, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc) {
    return do_syscall(ZX_SYS_ioports_request, pc, &VDso::ValidSyscallPC::ioports_request, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ioports_request(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint16_t>::Sanitize(io_addr), SafeSyscallArgument<uint32_t>::Sanitize(len));
        return result;
    });
}

syscall_result wrapper_ioports_release(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint16_t>::RawType io_addr, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc);
syscall_result wrapper_ioports_release(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint16_t>::RawType io_addr, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc) {
    return do_syscall(ZX_SYS_ioports_release, pc, &VDso::ValidSyscallPC::ioports_release, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ioports_release(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint16_t>::Sanitize(io_addr), SafeSyscallArgument<uint32_t>::Sanitize(len));
        return result;
    });
}

syscall_result wrapper_job_create(SafeSyscallArgument<zx_handle_t>::RawType parent_job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_job_create(SafeSyscallArgument<zx_handle_t>::RawType parent_job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_job_create, pc, &VDso::ValidSyscallPC::job_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_job_create(SafeSyscallArgument<zx_handle_t>::Sanitize(parent_job), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_job_set_policy(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<const void*>::RawType policy, SafeSyscallArgument<uint32_t>::RawType policy_size, uint64_t pc);
syscall_result wrapper_job_set_policy(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<const void*>::RawType policy, SafeSyscallArgument<uint32_t>::RawType policy_size, uint64_t pc) {
    return do_syscall(ZX_SYS_job_set_policy, pc, &VDso::ValidSyscallPC::job_set_policy, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_job_set_policy(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<uint32_t>::Sanitize(topic), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(policy)), SafeSyscallArgument<uint32_t>::Sanitize(policy_size));
        return result;
    });
}

syscall_result wrapper_job_set_critical(SafeSyscallArgument<zx_handle_t>::RawType job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType process, uint64_t pc);
syscall_result wrapper_job_set_critical(SafeSyscallArgument<zx_handle_t>::RawType job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType process, uint64_t pc) {
    return do_syscall(ZX_SYS_job_set_critical, pc, &VDso::ValidSyscallPC::job_set_critical, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_job_set_critical(SafeSyscallArgument<zx_handle_t>::Sanitize(job), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_handle_t>::Sanitize(process));
        return result;
    });
}

syscall_result wrapper_ktrace_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<void*>::RawType data, SafeSyscallArgument<uint32_t>::RawType offset, SafeSyscallArgument<size_t>::RawType data_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_ktrace_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<void*>::RawType data, SafeSyscallArgument<uint32_t>::RawType offset, SafeSyscallArgument<size_t>::RawType data_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_ktrace_read, pc, &VDso::ValidSyscallPC::ktrace_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ktrace_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(data)), SafeSyscallArgument<uint32_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(data_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_ktrace_control(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType action, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType ptr, uint64_t pc);
syscall_result wrapper_ktrace_control(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType action, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType ptr, uint64_t pc) {
    return do_syscall(ZX_SYS_ktrace_control, pc, &VDso::ValidSyscallPC::ktrace_control, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ktrace_control(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(action), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_inout_ptr(SafeSyscallArgument<void*>::Sanitize(ptr)));
        return result;
    });
}

syscall_result wrapper_ktrace_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType id, SafeSyscallArgument<uint32_t>::RawType arg0, SafeSyscallArgument<uint32_t>::RawType arg1, uint64_t pc);
syscall_result wrapper_ktrace_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType id, SafeSyscallArgument<uint32_t>::RawType arg0, SafeSyscallArgument<uint32_t>::RawType arg1, uint64_t pc) {
    return do_syscall(ZX_SYS_ktrace_write, pc, &VDso::ValidSyscallPC::ktrace_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ktrace_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(id), SafeSyscallArgument<uint32_t>::Sanitize(arg0), SafeSyscallArgument<uint32_t>::Sanitize(arg1));
        return result;
    });
}

syscall_result wrapper_nanosleep(SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc);
syscall_result wrapper_nanosleep(SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc) {
    return do_syscall(ZX_SYS_nanosleep, pc, &VDso::ValidSyscallPC::nanosleep, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_nanosleep(SafeSyscallArgument<zx_time_t>::Sanitize(deadline));
        return result;
    });
}

syscall_result wrapper_ticks_get_via_kernel(uint64_t pc);
syscall_result wrapper_ticks_get_via_kernel(uint64_t pc) {
    return do_syscall(ZX_SYS_ticks_get_via_kernel, pc, &VDso::ValidSyscallPC::ticks_get_via_kernel, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_ticks_get_via_kernel();
        return result;
    });
}

syscall_result wrapper_msi_allocate(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType count, SafeSyscallArgument<zx_handle_t*>::RawType out_allocation, uint64_t pc);
syscall_result wrapper_msi_allocate(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType count, SafeSyscallArgument<zx_handle_t*>::RawType out_allocation, uint64_t pc) {
    return do_syscall(ZX_SYS_msi_allocate, pc, &VDso::ValidSyscallPC::msi_allocate, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_allocation;
        auto result = sys_msi_allocate(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(count), &out_handle_out_allocation);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_allocation.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_allocation)));
        if (result != ZX_OK)
            return result;
        out_handle_out_allocation.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_msi_create(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint32_t>::RawType msi_id, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<size_t>::RawType vmo_offset, SafeSyscallArgument<zx_handle_t*>::RawType out_interrupt, uint64_t pc);
syscall_result wrapper_msi_create(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint32_t>::RawType msi_id, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<size_t>::RawType vmo_offset, SafeSyscallArgument<zx_handle_t*>::RawType out_interrupt, uint64_t pc) {
    return do_syscall(ZX_SYS_msi_create, pc, &VDso::ValidSyscallPC::msi_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_interrupt;
        auto result = sys_msi_create(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<uint32_t>::Sanitize(msi_id), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo), SafeSyscallArgument<size_t>::Sanitize(vmo_offset), &out_handle_out_interrupt);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_interrupt.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_interrupt)));
        if (result != ZX_OK)
            return result;
        out_handle_out_interrupt.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_mtrace_control(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<uint32_t>::RawType action, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType ptr, SafeSyscallArgument<size_t>::RawType ptr_size, uint64_t pc);
syscall_result wrapper_mtrace_control(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<uint32_t>::RawType action, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType ptr, SafeSyscallArgument<size_t>::RawType ptr_size, uint64_t pc) {
    return do_syscall(ZX_SYS_mtrace_control, pc, &VDso::ValidSyscallPC::mtrace_control, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_mtrace_control(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), SafeSyscallArgument<uint32_t>::Sanitize(action), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_inout_ptr(SafeSyscallArgument<void*>::Sanitize(ptr)), SafeSyscallArgument<size_t>::Sanitize(ptr_size));
        return result;
    });
}

syscall_result wrapper_object_wait_one(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_signals_t>::RawType signals, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_signals_t*>::RawType observed, uint64_t pc);
syscall_result wrapper_object_wait_one(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_signals_t>::RawType signals, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_signals_t*>::RawType observed, uint64_t pc) {
    return do_syscall(ZX_SYS_object_wait_one, pc, &VDso::ValidSyscallPC::object_wait_one, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_wait_one(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_signals_t>::Sanitize(signals), SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_out_ptr(SafeSyscallArgument<zx_signals_t*>::Sanitize(observed)));
        return result;
    });
}

syscall_result wrapper_object_wait_many(SafeSyscallArgument<zx_wait_item_t*>::RawType items, SafeSyscallArgument<size_t>::RawType num_items, SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc);
syscall_result wrapper_object_wait_many(SafeSyscallArgument<zx_wait_item_t*>::RawType items, SafeSyscallArgument<size_t>::RawType num_items, SafeSyscallArgument<zx_time_t>::RawType deadline, uint64_t pc) {
    return do_syscall(ZX_SYS_object_wait_many, pc, &VDso::ValidSyscallPC::object_wait_many, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_wait_many(make_user_inout_ptr(SafeSyscallArgument<zx_wait_item_t*>::Sanitize(items)), SafeSyscallArgument<size_t>::Sanitize(num_items), SafeSyscallArgument<zx_time_t>::Sanitize(deadline));
        return result;
    });
}

syscall_result wrapper_object_wait_async(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType port, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<zx_signals_t>::RawType signals, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc);
syscall_result wrapper_object_wait_async(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType port, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<zx_signals_t>::RawType signals, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc) {
    return do_syscall(ZX_SYS_object_wait_async, pc, &VDso::ValidSyscallPC::object_wait_async, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_wait_async(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(port), SafeSyscallArgument<uint64_t>::Sanitize(key), SafeSyscallArgument<zx_signals_t>::Sanitize(signals), SafeSyscallArgument<uint32_t>::Sanitize(options));
        return result;
    });
}

syscall_result wrapper_object_signal(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType clear_mask, SafeSyscallArgument<uint32_t>::RawType set_mask, uint64_t pc);
syscall_result wrapper_object_signal(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType clear_mask, SafeSyscallArgument<uint32_t>::RawType set_mask, uint64_t pc) {
    return do_syscall(ZX_SYS_object_signal, pc, &VDso::ValidSyscallPC::object_signal, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_signal(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(clear_mask), SafeSyscallArgument<uint32_t>::Sanitize(set_mask));
        return result;
    });
}

syscall_result wrapper_object_signal_peer(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType clear_mask, SafeSyscallArgument<uint32_t>::RawType set_mask, uint64_t pc);
syscall_result wrapper_object_signal_peer(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType clear_mask, SafeSyscallArgument<uint32_t>::RawType set_mask, uint64_t pc) {
    return do_syscall(ZX_SYS_object_signal_peer, pc, &VDso::ValidSyscallPC::object_signal_peer, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_signal_peer(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(clear_mask), SafeSyscallArgument<uint32_t>::Sanitize(set_mask));
        return result;
    });
}

syscall_result wrapper_object_get_property(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType property, SafeSyscallArgument<void*>::RawType value, SafeSyscallArgument<size_t>::RawType value_size, uint64_t pc);
syscall_result wrapper_object_get_property(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType property, SafeSyscallArgument<void*>::RawType value, SafeSyscallArgument<size_t>::RawType value_size, uint64_t pc) {
    return do_syscall(ZX_SYS_object_get_property, pc, &VDso::ValidSyscallPC::object_get_property, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_get_property(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(property), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(value)), SafeSyscallArgument<size_t>::Sanitize(value_size));
        return result;
    });
}

syscall_result wrapper_object_set_property(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType property, SafeSyscallArgument<const void*>::RawType value, SafeSyscallArgument<size_t>::RawType value_size, uint64_t pc);
syscall_result wrapper_object_set_property(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType property, SafeSyscallArgument<const void*>::RawType value, SafeSyscallArgument<size_t>::RawType value_size, uint64_t pc) {
    return do_syscall(ZX_SYS_object_set_property, pc, &VDso::ValidSyscallPC::object_set_property, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_set_property(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(property), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(value)), SafeSyscallArgument<size_t>::Sanitize(value_size));
        return result;
    });
}

syscall_result wrapper_object_get_info(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, SafeSyscallArgument<size_t*>::RawType avail, uint64_t pc);
syscall_result wrapper_object_get_info(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, SafeSyscallArgument<size_t*>::RawType avail, uint64_t pc) {
    return do_syscall(ZX_SYS_object_get_info, pc, &VDso::ValidSyscallPC::object_get_info, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_get_info(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(topic), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(avail)));
        return result;
    });
}

syscall_result wrapper_object_get_child(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType koid, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_object_get_child(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType koid, SafeSyscallArgument<zx_rights_t>::RawType rights, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_object_get_child, pc, &VDso::ValidSyscallPC::object_get_child, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_object_get_child(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint64_t>::Sanitize(koid), SafeSyscallArgument<zx_rights_t>::Sanitize(rights), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_object_set_profile(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType profile, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc);
syscall_result wrapper_object_set_profile(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType profile, SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc) {
    return do_syscall(ZX_SYS_object_set_profile, pc, &VDso::ValidSyscallPC::object_set_profile, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_object_set_profile(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(profile), SafeSyscallArgument<uint32_t>::Sanitize(options));
        return result;
    });
}

syscall_result wrapper_pager_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_pager_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_create, pc, &VDso::ValidSyscallPC::pager_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_pager_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_pager_create_vmo(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType port, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_pager_create_vmo(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType port, SafeSyscallArgument<uint64_t>::RawType key, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_create_vmo, pc, &VDso::ValidSyscallPC::pager_create_vmo, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_pager_create_vmo(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_handle_t>::Sanitize(port), SafeSyscallArgument<uint64_t>::Sanitize(key), SafeSyscallArgument<uint64_t>::Sanitize(size), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_pager_detach_vmo(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType vmo, uint64_t pc);
syscall_result wrapper_pager_detach_vmo(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType vmo, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_detach_vmo, pc, &VDso::ValidSyscallPC::pager_detach_vmo, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pager_detach_vmo(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo));
        return result;
    });
}

syscall_result wrapper_pager_supply_pages(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<zx_handle_t>::RawType aux_vmo, SafeSyscallArgument<uint64_t>::RawType aux_offset, uint64_t pc);
syscall_result wrapper_pager_supply_pages(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<zx_handle_t>::RawType aux_vmo, SafeSyscallArgument<uint64_t>::RawType aux_offset, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_supply_pages, pc, &VDso::ValidSyscallPC::pager_supply_pages, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pager_supply_pages(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<zx_handle_t>::Sanitize(pager_vmo), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(length), SafeSyscallArgument<zx_handle_t>::Sanitize(aux_vmo), SafeSyscallArgument<uint64_t>::Sanitize(aux_offset));
        return result;
    });
}

syscall_result wrapper_pager_op_range(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<uint64_t>::RawType data, uint64_t pc);
syscall_result wrapper_pager_op_range(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<uint64_t>::RawType data, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_op_range, pc, &VDso::ValidSyscallPC::pager_op_range, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pager_op_range(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<uint32_t>::Sanitize(op), SafeSyscallArgument<zx_handle_t>::Sanitize(pager_vmo), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(length), SafeSyscallArgument<uint64_t>::Sanitize(data));
        return result;
    });
}

syscall_result wrapper_pager_query_dirty_ranges(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, SafeSyscallArgument<size_t*>::RawType avail, uint64_t pc);
syscall_result wrapper_pager_query_dirty_ranges(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType length, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, SafeSyscallArgument<size_t*>::RawType avail, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_query_dirty_ranges, pc, &VDso::ValidSyscallPC::pager_query_dirty_ranges, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pager_query_dirty_ranges(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<zx_handle_t>::Sanitize(pager_vmo), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(length), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(avail)));
        return result;
    });
}

syscall_result wrapper_pager_query_vmo_stats(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_pager_query_vmo_stats(SafeSyscallArgument<zx_handle_t>::RawType pager, SafeSyscallArgument<zx_handle_t>::RawType pager_vmo, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_pager_query_vmo_stats, pc, &VDso::ValidSyscallPC::pager_query_vmo_stats, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pager_query_vmo_stats(SafeSyscallArgument<zx_handle_t>::Sanitize(pager), SafeSyscallArgument<zx_handle_t>::Sanitize(pager_vmo), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_pc_firmware_tables(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_paddr_t*>::RawType acpi_rsdp, SafeSyscallArgument<zx_paddr_t*>::RawType smbios, uint64_t pc);
syscall_result wrapper_pc_firmware_tables(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_paddr_t*>::RawType acpi_rsdp, SafeSyscallArgument<zx_paddr_t*>::RawType smbios, uint64_t pc) {
    return do_syscall(ZX_SYS_pc_firmware_tables, pc, &VDso::ValidSyscallPC::pc_firmware_tables, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pc_firmware_tables(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<zx_paddr_t*>::Sanitize(acpi_rsdp)), make_user_out_ptr(SafeSyscallArgument<zx_paddr_t*>::Sanitize(smbios)));
        return result;
    });
}

syscall_result wrapper_pci_get_nth_device(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType index, SafeSyscallArgument<zx_pcie_device_info_t*>::RawType out_info, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc);
syscall_result wrapper_pci_get_nth_device(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType index, SafeSyscallArgument<zx_pcie_device_info_t*>::RawType out_info, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_get_nth_device, pc, &VDso::ValidSyscallPC::pci_get_nth_device, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_handle;
        auto result = sys_pci_get_nth_device(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(index), make_user_out_ptr(SafeSyscallArgument<zx_pcie_device_info_t*>::Sanitize(out_info)), &out_handle_out_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_out_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_pci_enable_bus_master(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType enable, uint64_t pc);
syscall_result wrapper_pci_enable_bus_master(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType enable, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_enable_bus_master, pc, &VDso::ValidSyscallPC::pci_enable_bus_master, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_enable_bus_master(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(enable));
        return result;
    });
}

syscall_result wrapper_pci_reset_device(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_pci_reset_device(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_reset_device, pc, &VDso::ValidSyscallPC::pci_reset_device, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_reset_device(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_pci_config_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint16_t>::RawType offset, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t*>::RawType out_val, uint64_t pc);
syscall_result wrapper_pci_config_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint16_t>::RawType offset, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t*>::RawType out_val, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_config_read, pc, &VDso::ValidSyscallPC::pci_config_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_config_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint16_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(width), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(out_val)));
        return result;
    });
}

syscall_result wrapper_pci_config_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint16_t>::RawType offset, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType val, uint64_t pc);
syscall_result wrapper_pci_config_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint16_t>::RawType offset, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType val, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_config_write, pc, &VDso::ValidSyscallPC::pci_config_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_config_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint16_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(width), SafeSyscallArgument<uint32_t>::Sanitize(val));
        return result;
    });
}

syscall_result wrapper_pci_cfg_pio_rw(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint8_t>::RawType bus, SafeSyscallArgument<uint8_t>::RawType dev, SafeSyscallArgument<uint8_t>::RawType func, SafeSyscallArgument<uint8_t>::RawType offset, SafeSyscallArgument<uint32_t*>::RawType val, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType write, uint64_t pc);
syscall_result wrapper_pci_cfg_pio_rw(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint8_t>::RawType bus, SafeSyscallArgument<uint8_t>::RawType dev, SafeSyscallArgument<uint8_t>::RawType func, SafeSyscallArgument<uint8_t>::RawType offset, SafeSyscallArgument<uint32_t*>::RawType val, SafeSyscallArgument<size_t>::RawType width, SafeSyscallArgument<uint32_t>::RawType write, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_cfg_pio_rw, pc, &VDso::ValidSyscallPC::pci_cfg_pio_rw, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_cfg_pio_rw(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint8_t>::Sanitize(bus), SafeSyscallArgument<uint8_t>::Sanitize(dev), SafeSyscallArgument<uint8_t>::Sanitize(func), SafeSyscallArgument<uint8_t>::Sanitize(offset), make_user_inout_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(val)), SafeSyscallArgument<size_t>::Sanitize(width), SafeSyscallArgument<uint32_t>::Sanitize(write));
        return result;
    });
}

syscall_result wrapper_pci_get_bar(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType bar_num, SafeSyscallArgument<zx_pci_bar_t*>::RawType out_bar, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc);
syscall_result wrapper_pci_get_bar(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType bar_num, SafeSyscallArgument<zx_pci_bar_t*>::RawType out_bar, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_get_bar, pc, &VDso::ValidSyscallPC::pci_get_bar, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_handle;
        auto result = sys_pci_get_bar(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(bar_num), make_user_out_ptr(SafeSyscallArgument<zx_pci_bar_t*>::Sanitize(out_bar)), &out_handle_out_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_out_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_pci_map_interrupt(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<int32_t>::RawType which_irq, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc);
syscall_result wrapper_pci_map_interrupt(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<int32_t>::RawType which_irq, SafeSyscallArgument<zx_handle_t*>::RawType out_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_map_interrupt, pc, &VDso::ValidSyscallPC::pci_map_interrupt, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_handle;
        auto result = sys_pci_map_interrupt(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<int32_t>::Sanitize(which_irq), &out_handle_out_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_out_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_pci_query_irq_mode(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mode, SafeSyscallArgument<uint32_t*>::RawType out_max_irqs, uint64_t pc);
syscall_result wrapper_pci_query_irq_mode(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mode, SafeSyscallArgument<uint32_t*>::RawType out_max_irqs, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_query_irq_mode, pc, &VDso::ValidSyscallPC::pci_query_irq_mode, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_query_irq_mode(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(mode), make_user_out_ptr(SafeSyscallArgument<uint32_t*>::Sanitize(out_max_irqs)));
        return result;
    });
}

syscall_result wrapper_pci_set_irq_mode(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mode, SafeSyscallArgument<uint32_t>::RawType requested_irq_count, uint64_t pc);
syscall_result wrapper_pci_set_irq_mode(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mode, SafeSyscallArgument<uint32_t>::RawType requested_irq_count, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_set_irq_mode, pc, &VDso::ValidSyscallPC::pci_set_irq_mode, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_set_irq_mode(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(mode), SafeSyscallArgument<uint32_t>::Sanitize(requested_irq_count));
        return result;
    });
}

syscall_result wrapper_pci_init(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_pci_init_arg_t*>::RawType init_buf, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc);
syscall_result wrapper_pci_init(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_pci_init_arg_t*>::RawType init_buf, SafeSyscallArgument<uint32_t>::RawType len, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_init, pc, &VDso::ValidSyscallPC::pci_init, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_init(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_in_ptr(SafeSyscallArgument<const zx_pci_init_arg_t*>::Sanitize(init_buf)), SafeSyscallArgument<uint32_t>::Sanitize(len));
        return result;
    });
}

syscall_result wrapper_pci_add_subtract_io_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mmio, SafeSyscallArgument<uint64_t>::RawType base, SafeSyscallArgument<uint64_t>::RawType len, SafeSyscallArgument<uint32_t>::RawType add, uint64_t pc);
syscall_result wrapper_pci_add_subtract_io_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType mmio, SafeSyscallArgument<uint64_t>::RawType base, SafeSyscallArgument<uint64_t>::RawType len, SafeSyscallArgument<uint32_t>::RawType add, uint64_t pc) {
    return do_syscall(ZX_SYS_pci_add_subtract_io_range, pc, &VDso::ValidSyscallPC::pci_add_subtract_io_range, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pci_add_subtract_io_range(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(mmio), SafeSyscallArgument<uint64_t>::Sanitize(base), SafeSyscallArgument<uint64_t>::Sanitize(len), SafeSyscallArgument<uint32_t>::Sanitize(add));
        return result;
    });
}

syscall_result wrapper_pmt_unpin(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_pmt_unpin(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_pmt_unpin, pc, &VDso::ValidSyscallPC::pmt_unpin, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_pmt_unpin(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_port_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_port_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_port_create, pc, &VDso::ValidSyscallPC::port_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_port_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_port_queue(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_port_packet_t*>::RawType packet, uint64_t pc);
syscall_result wrapper_port_queue(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_port_packet_t*>::RawType packet, uint64_t pc) {
    return do_syscall(ZX_SYS_port_queue, pc, &VDso::ValidSyscallPC::port_queue, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_port_queue(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_in_ptr(SafeSyscallArgument<const zx_port_packet_t*>::Sanitize(packet)));
        return result;
    });
}

syscall_result wrapper_port_wait(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_port_packet_t*>::RawType packet, uint64_t pc);
syscall_result wrapper_port_wait(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_port_packet_t*>::RawType packet, uint64_t pc) {
    return do_syscall(ZX_SYS_port_wait, pc, &VDso::ValidSyscallPC::port_wait, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_port_wait(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_time_t>::Sanitize(deadline), make_user_out_ptr(SafeSyscallArgument<zx_port_packet_t*>::Sanitize(packet)));
        return result;
    });
}

syscall_result wrapper_port_cancel(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType source, SafeSyscallArgument<uint64_t>::RawType key, uint64_t pc);
syscall_result wrapper_port_cancel(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType source, SafeSyscallArgument<uint64_t>::RawType key, uint64_t pc) {
    return do_syscall(ZX_SYS_port_cancel, pc, &VDso::ValidSyscallPC::port_cancel, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_port_cancel(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(source), SafeSyscallArgument<uint64_t>::Sanitize(key));
        return result;
    });
}

syscall_result wrapper_process_exit(SafeSyscallArgument<int64_t>::RawType retcode, uint64_t pc);
syscall_result wrapper_process_exit(SafeSyscallArgument<int64_t>::RawType retcode, uint64_t pc) {
    return do_syscall(ZX_SYS_process_exit, pc, &VDso::ValidSyscallPC::process_exit, [&](ProcessDispatcher* current_process) -> uint64_t {
        /*noreturn*/ sys_process_exit(SafeSyscallArgument<int64_t>::Sanitize(retcode));
        /* NOTREACHED */
        return ZX_ERR_BAD_STATE;
    });
}

syscall_result wrapper_process_create(SafeSyscallArgument<zx_handle_t>::RawType job, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType proc_handle, SafeSyscallArgument<zx_handle_t*>::RawType vmar_handle, uint64_t pc);
syscall_result wrapper_process_create(SafeSyscallArgument<zx_handle_t>::RawType job, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType proc_handle, SafeSyscallArgument<zx_handle_t*>::RawType vmar_handle, uint64_t pc) {
    return do_syscall(ZX_SYS_process_create, pc, &VDso::ValidSyscallPC::process_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_proc_handle;
        user_out_handle out_handle_vmar_handle;
        auto result = sys_process_create(SafeSyscallArgument<zx_handle_t>::Sanitize(job), make_user_in_ptr(SafeSyscallArgument<const char*>::Sanitize(name)), SafeSyscallArgument<size_t>::Sanitize(name_size), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_proc_handle, &out_handle_vmar_handle);
        if (result != ZX_OK)
            return result;
        result = out_handle_proc_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(proc_handle)));
        if (result != ZX_OK)
            return result;
        result = out_handle_vmar_handle.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(vmar_handle)));
        if (result != ZX_OK)
            return result;
        out_handle_proc_handle.finish_copyout(current_process);
        out_handle_vmar_handle.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_process_start(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType thread, SafeSyscallArgument<zx_vaddr_t>::RawType entry, SafeSyscallArgument<zx_vaddr_t>::RawType stack, SafeSyscallArgument<zx_handle_t>::RawType arg1, SafeSyscallArgument<uintptr_t>::RawType arg2, uint64_t pc);
syscall_result wrapper_process_start(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType thread, SafeSyscallArgument<zx_vaddr_t>::RawType entry, SafeSyscallArgument<zx_vaddr_t>::RawType stack, SafeSyscallArgument<zx_handle_t>::RawType arg1, SafeSyscallArgument<uintptr_t>::RawType arg2, uint64_t pc) {
    return do_syscall(ZX_SYS_process_start, pc, &VDso::ValidSyscallPC::process_start, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_process_start(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(thread), SafeSyscallArgument<zx_vaddr_t>::Sanitize(entry), SafeSyscallArgument<zx_vaddr_t>::Sanitize(stack), SafeSyscallArgument<zx_handle_t>::Sanitize(arg1), SafeSyscallArgument<uintptr_t>::Sanitize(arg2));
        return result;
    });
}

syscall_result wrapper_process_read_memory(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType vaddr, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_process_read_memory(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType vaddr, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_process_read_memory, pc, &VDso::ValidSyscallPC::process_read_memory, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_process_read_memory(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vaddr_t>::Sanitize(vaddr), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_process_write_memory(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType vaddr, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_process_write_memory(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType vaddr, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_process_write_memory, pc, &VDso::ValidSyscallPC::process_write_memory, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_process_write_memory(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vaddr_t>::Sanitize(vaddr), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_profile_create(SafeSyscallArgument<zx_handle_t>::RawType root_job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const zx_profile_info_t*>::RawType profile, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_profile_create(SafeSyscallArgument<zx_handle_t>::RawType root_job, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const zx_profile_info_t*>::RawType profile, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_profile_create, pc, &VDso::ValidSyscallPC::profile_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_profile_create(SafeSyscallArgument<zx_handle_t>::Sanitize(root_job), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const zx_profile_info_t*>::Sanitize(profile)), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_resource_create(SafeSyscallArgument<zx_handle_t>::RawType parent_rsrc, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType base, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<zx_handle_t*>::RawType resource_out, uint64_t pc);
syscall_result wrapper_resource_create(SafeSyscallArgument<zx_handle_t>::RawType parent_rsrc, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType base, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<zx_handle_t*>::RawType resource_out, uint64_t pc) {
    return do_syscall(ZX_SYS_resource_create, pc, &VDso::ValidSyscallPC::resource_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_resource_out;
        auto result = sys_resource_create(SafeSyscallArgument<zx_handle_t>::Sanitize(parent_rsrc), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<uint64_t>::Sanitize(base), SafeSyscallArgument<size_t>::Sanitize(size), make_user_in_ptr(SafeSyscallArgument<const char*>::Sanitize(name)), SafeSyscallArgument<size_t>::Sanitize(name_size), &out_handle_resource_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_resource_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(resource_out)));
        if (result != ZX_OK)
            return result;
        out_handle_resource_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_smc_call(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_smc_parameters_t*>::RawType parameters, SafeSyscallArgument<zx_smc_result_t*>::RawType out_smc_result, uint64_t pc);
syscall_result wrapper_smc_call(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const zx_smc_parameters_t*>::RawType parameters, SafeSyscallArgument<zx_smc_result_t*>::RawType out_smc_result, uint64_t pc) {
    return do_syscall(ZX_SYS_smc_call, pc, &VDso::ValidSyscallPC::smc_call, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_smc_call(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_in_ptr(SafeSyscallArgument<const zx_smc_parameters_t*>::Sanitize(parameters)), make_user_out_ptr(SafeSyscallArgument<zx_smc_result_t*>::Sanitize(out_smc_result)));
        return result;
    });
}

syscall_result wrapper_socket_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc);
syscall_result wrapper_socket_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out0, SafeSyscallArgument<zx_handle_t*>::RawType out1, uint64_t pc) {
    return do_syscall(ZX_SYS_socket_create, pc, &VDso::ValidSyscallPC::socket_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out0;
        user_out_handle out_handle_out1;
        auto result = sys_socket_create(SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out0, &out_handle_out1);
        if (result != ZX_OK)
            return result;
        result = out_handle_out0.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out0)));
        if (result != ZX_OK)
            return result;
        result = out_handle_out1.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out1)));
        if (result != ZX_OK)
            return result;
        out_handle_out0.finish_copyout(current_process);
        out_handle_out1.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_socket_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_socket_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_socket_write, pc, &VDso::ValidSyscallPC::socket_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_socket_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_socket_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_socket_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_socket_read, pc, &VDso::ValidSyscallPC::socket_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_socket_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_socket_set_disposition(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType disposition, SafeSyscallArgument<uint32_t>::RawType disposition_peer, uint64_t pc);
syscall_result wrapper_socket_set_disposition(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType disposition, SafeSyscallArgument<uint32_t>::RawType disposition_peer, uint64_t pc) {
    return do_syscall(ZX_SYS_socket_set_disposition, pc, &VDso::ValidSyscallPC::socket_set_disposition, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_socket_set_disposition(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(disposition), SafeSyscallArgument<uint32_t>::Sanitize(disposition_peer));
        return result;
    });
}

syscall_result wrapper_stream_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<zx_off_t>::RawType seek, SafeSyscallArgument<zx_handle_t*>::RawType out_stream, uint64_t pc);
syscall_result wrapper_stream_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<zx_off_t>::RawType seek, SafeSyscallArgument<zx_handle_t*>::RawType out_stream, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_create, pc, &VDso::ValidSyscallPC::stream_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out_stream;
        auto result = sys_stream_create(SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo), SafeSyscallArgument<zx_off_t>::Sanitize(seek), &out_handle_out_stream);
        if (result != ZX_OK)
            return result;
        result = out_handle_out_stream.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out_stream)));
        if (result != ZX_OK)
            return result;
        out_handle_out_stream.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_stream_writev(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_stream_writev(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<const zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_writev, pc, &VDso::ValidSyscallPC::stream_writev, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_stream_writev(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_in_ptr(SafeSyscallArgument<const zx_iovec_t*>::Sanitize(vector)), SafeSyscallArgument<size_t>::Sanitize(num_vector), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_stream_writev_at(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_off_t>::RawType offset, SafeSyscallArgument<const zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_stream_writev_at(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_off_t>::RawType offset, SafeSyscallArgument<const zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_writev_at, pc, &VDso::ValidSyscallPC::stream_writev_at, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_stream_writev_at(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_off_t>::Sanitize(offset), make_user_in_ptr(SafeSyscallArgument<const zx_iovec_t*>::Sanitize(vector)), SafeSyscallArgument<size_t>::Sanitize(num_vector), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_stream_readv(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_stream_readv(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_readv, pc, &VDso::ValidSyscallPC::stream_readv, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_stream_readv(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), make_user_out_ptr(SafeSyscallArgument<zx_iovec_t*>::Sanitize(vector)), SafeSyscallArgument<size_t>::Sanitize(num_vector), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_stream_readv_at(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_off_t>::RawType offset, SafeSyscallArgument<zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc);
syscall_result wrapper_stream_readv_at(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_off_t>::RawType offset, SafeSyscallArgument<zx_iovec_t*>::RawType vector, SafeSyscallArgument<size_t>::RawType num_vector, SafeSyscallArgument<size_t*>::RawType actual, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_readv_at, pc, &VDso::ValidSyscallPC::stream_readv_at, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_stream_readv_at(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_off_t>::Sanitize(offset), make_user_out_ptr(SafeSyscallArgument<zx_iovec_t*>::Sanitize(vector)), SafeSyscallArgument<size_t>::Sanitize(num_vector), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(actual)));
        return result;
    });
}

syscall_result wrapper_stream_seek(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_stream_seek_origin_t>::RawType whence, SafeSyscallArgument<int64_t>::RawType offset, SafeSyscallArgument<zx_off_t*>::RawType out_seek, uint64_t pc);
syscall_result wrapper_stream_seek(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_stream_seek_origin_t>::RawType whence, SafeSyscallArgument<int64_t>::RawType offset, SafeSyscallArgument<zx_off_t*>::RawType out_seek, uint64_t pc) {
    return do_syscall(ZX_SYS_stream_seek, pc, &VDso::ValidSyscallPC::stream_seek, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_stream_seek(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_stream_seek_origin_t>::Sanitize(whence), SafeSyscallArgument<int64_t>::Sanitize(offset), make_user_out_ptr(SafeSyscallArgument<zx_off_t*>::Sanitize(out_seek)));
        return result;
    });
}

syscall_result wrapper_syscall_test_0(uint64_t pc);
syscall_result wrapper_syscall_test_0(uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_0, pc, &VDso::ValidSyscallPC::syscall_test_0, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_0();
        return result;
    });
}

syscall_result wrapper_syscall_test_1(SafeSyscallArgument<int32_t>::RawType a, uint64_t pc);
syscall_result wrapper_syscall_test_1(SafeSyscallArgument<int32_t>::RawType a, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_1, pc, &VDso::ValidSyscallPC::syscall_test_1, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_1(SafeSyscallArgument<int32_t>::Sanitize(a));
        return result;
    });
}

syscall_result wrapper_syscall_test_2(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, uint64_t pc);
syscall_result wrapper_syscall_test_2(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_2, pc, &VDso::ValidSyscallPC::syscall_test_2, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_2(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b));
        return result;
    });
}

syscall_result wrapper_syscall_test_3(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, uint64_t pc);
syscall_result wrapper_syscall_test_3(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_3, pc, &VDso::ValidSyscallPC::syscall_test_3, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_3(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c));
        return result;
    });
}

syscall_result wrapper_syscall_test_4(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, uint64_t pc);
syscall_result wrapper_syscall_test_4(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_4, pc, &VDso::ValidSyscallPC::syscall_test_4, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_4(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c), SafeSyscallArgument<int32_t>::Sanitize(d));
        return result;
    });
}

syscall_result wrapper_syscall_test_5(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, uint64_t pc);
syscall_result wrapper_syscall_test_5(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_5, pc, &VDso::ValidSyscallPC::syscall_test_5, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_5(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c), SafeSyscallArgument<int32_t>::Sanitize(d), SafeSyscallArgument<int32_t>::Sanitize(e));
        return result;
    });
}

syscall_result wrapper_syscall_test_6(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, uint64_t pc);
syscall_result wrapper_syscall_test_6(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_6, pc, &VDso::ValidSyscallPC::syscall_test_6, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_6(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c), SafeSyscallArgument<int32_t>::Sanitize(d), SafeSyscallArgument<int32_t>::Sanitize(e), SafeSyscallArgument<int32_t>::Sanitize(f));
        return result;
    });
}

syscall_result wrapper_syscall_test_7(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, SafeSyscallArgument<int32_t>::RawType g, uint64_t pc);
syscall_result wrapper_syscall_test_7(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, SafeSyscallArgument<int32_t>::RawType g, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_7, pc, &VDso::ValidSyscallPC::syscall_test_7, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_7(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c), SafeSyscallArgument<int32_t>::Sanitize(d), SafeSyscallArgument<int32_t>::Sanitize(e), SafeSyscallArgument<int32_t>::Sanitize(f), SafeSyscallArgument<int32_t>::Sanitize(g));
        return result;
    });
}

syscall_result wrapper_syscall_test_8(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, SafeSyscallArgument<int32_t>::RawType g, SafeSyscallArgument<int32_t>::RawType h, uint64_t pc);
syscall_result wrapper_syscall_test_8(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, SafeSyscallArgument<int32_t>::RawType d, SafeSyscallArgument<int32_t>::RawType e, SafeSyscallArgument<int32_t>::RawType f, SafeSyscallArgument<int32_t>::RawType g, SafeSyscallArgument<int32_t>::RawType h, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_8, pc, &VDso::ValidSyscallPC::syscall_test_8, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_8(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c), SafeSyscallArgument<int32_t>::Sanitize(d), SafeSyscallArgument<int32_t>::Sanitize(e), SafeSyscallArgument<int32_t>::Sanitize(f), SafeSyscallArgument<int32_t>::Sanitize(g), SafeSyscallArgument<int32_t>::Sanitize(h));
        return result;
    });
}

syscall_result wrapper_syscall_next_1(SafeSyscallArgument<int32_t>::RawType arg, uint64_t pc);
syscall_result wrapper_syscall_next_1(SafeSyscallArgument<int32_t>::RawType arg, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_next_1, pc, &VDso::ValidSyscallPC::syscall_next_1, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_next_1(SafeSyscallArgument<int32_t>::Sanitize(arg));
        return result;
    });
}

syscall_result wrapper_syscall_test_wrapper(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, uint64_t pc);
syscall_result wrapper_syscall_test_wrapper(SafeSyscallArgument<int32_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int32_t>::RawType c, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_wrapper, pc, &VDso::ValidSyscallPC::syscall_test_wrapper, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_wrapper(SafeSyscallArgument<int32_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int32_t>::Sanitize(c));
        return result;
    });
}

syscall_result wrapper_syscall_test_handle_create(SafeSyscallArgument<zx_status_t>::RawType return_value, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_syscall_test_handle_create(SafeSyscallArgument<zx_status_t>::RawType return_value, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_handle_create, pc, &VDso::ValidSyscallPC::syscall_test_handle_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_syscall_test_handle_create(SafeSyscallArgument<zx_status_t>::Sanitize(return_value), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_syscall_test_widening_unsigned_narrow(SafeSyscallArgument<uint64_t>::RawType a, SafeSyscallArgument<uint32_t>::RawType b, SafeSyscallArgument<uint16_t>::RawType c, SafeSyscallArgument<uint8_t>::RawType d, uint64_t pc);
syscall_result wrapper_syscall_test_widening_unsigned_narrow(SafeSyscallArgument<uint64_t>::RawType a, SafeSyscallArgument<uint32_t>::RawType b, SafeSyscallArgument<uint16_t>::RawType c, SafeSyscallArgument<uint8_t>::RawType d, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_widening_unsigned_narrow, pc, &VDso::ValidSyscallPC::syscall_test_widening_unsigned_narrow, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_widening_unsigned_narrow(SafeSyscallArgument<uint64_t>::Sanitize(a), SafeSyscallArgument<uint32_t>::Sanitize(b), SafeSyscallArgument<uint16_t>::Sanitize(c), SafeSyscallArgument<uint8_t>::Sanitize(d));
        return result;
    });
}

syscall_result wrapper_syscall_test_widening_signed_narrow(SafeSyscallArgument<int64_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int16_t>::RawType c, SafeSyscallArgument<int8_t>::RawType d, uint64_t pc);
syscall_result wrapper_syscall_test_widening_signed_narrow(SafeSyscallArgument<int64_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int16_t>::RawType c, SafeSyscallArgument<int8_t>::RawType d, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_widening_signed_narrow, pc, &VDso::ValidSyscallPC::syscall_test_widening_signed_narrow, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_widening_signed_narrow(SafeSyscallArgument<int64_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int16_t>::Sanitize(c), SafeSyscallArgument<int8_t>::Sanitize(d));
        return result;
    });
}

syscall_result wrapper_syscall_test_widening_unsigned_wide(SafeSyscallArgument<uint64_t>::RawType a, SafeSyscallArgument<uint32_t>::RawType b, SafeSyscallArgument<uint16_t>::RawType c, SafeSyscallArgument<uint8_t>::RawType d, uint64_t pc);
syscall_result wrapper_syscall_test_widening_unsigned_wide(SafeSyscallArgument<uint64_t>::RawType a, SafeSyscallArgument<uint32_t>::RawType b, SafeSyscallArgument<uint16_t>::RawType c, SafeSyscallArgument<uint8_t>::RawType d, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_widening_unsigned_wide, pc, &VDso::ValidSyscallPC::syscall_test_widening_unsigned_wide, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_widening_unsigned_wide(SafeSyscallArgument<uint64_t>::Sanitize(a), SafeSyscallArgument<uint32_t>::Sanitize(b), SafeSyscallArgument<uint16_t>::Sanitize(c), SafeSyscallArgument<uint8_t>::Sanitize(d));
        return result;
    });
}

syscall_result wrapper_syscall_test_widening_signed_wide(SafeSyscallArgument<int64_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int16_t>::RawType c, SafeSyscallArgument<int8_t>::RawType d, uint64_t pc);
syscall_result wrapper_syscall_test_widening_signed_wide(SafeSyscallArgument<int64_t>::RawType a, SafeSyscallArgument<int32_t>::RawType b, SafeSyscallArgument<int16_t>::RawType c, SafeSyscallArgument<int8_t>::RawType d, uint64_t pc) {
    return do_syscall(ZX_SYS_syscall_test_widening_signed_wide, pc, &VDso::ValidSyscallPC::syscall_test_widening_signed_wide, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_syscall_test_widening_signed_wide(SafeSyscallArgument<int64_t>::Sanitize(a), SafeSyscallArgument<int32_t>::Sanitize(b), SafeSyscallArgument<int16_t>::Sanitize(c), SafeSyscallArgument<int8_t>::Sanitize(d));
        return result;
    });
}

syscall_result wrapper_system_get_event(SafeSyscallArgument<zx_handle_t>::RawType root_job, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<zx_handle_t*>::RawType event, uint64_t pc);
syscall_result wrapper_system_get_event(SafeSyscallArgument<zx_handle_t>::RawType root_job, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<zx_handle_t*>::RawType event, uint64_t pc) {
    return do_syscall(ZX_SYS_system_get_event, pc, &VDso::ValidSyscallPC::system_get_event, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_event;
        auto result = sys_system_get_event(SafeSyscallArgument<zx_handle_t>::Sanitize(root_job), SafeSyscallArgument<uint32_t>::Sanitize(kind), &out_handle_event);
        if (result != ZX_OK)
            return result;
        result = out_handle_event.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(event)));
        if (result != ZX_OK)
            return result;
        out_handle_event.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_system_set_performance_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<const void*>::RawType info, SafeSyscallArgument<size_t>::RawType count, uint64_t pc);
syscall_result wrapper_system_set_performance_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<const void*>::RawType info, SafeSyscallArgument<size_t>::RawType count, uint64_t pc) {
    return do_syscall(ZX_SYS_system_set_performance_info, pc, &VDso::ValidSyscallPC::system_set_performance_info, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_system_set_performance_info(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(topic), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(info)), SafeSyscallArgument<size_t>::Sanitize(count));
        return result;
    });
}

syscall_result wrapper_system_get_performance_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<size_t>::RawType count, SafeSyscallArgument<void*>::RawType info, SafeSyscallArgument<size_t*>::RawType output_count, uint64_t pc);
syscall_result wrapper_system_get_performance_info(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType topic, SafeSyscallArgument<size_t>::RawType count, SafeSyscallArgument<void*>::RawType info, SafeSyscallArgument<size_t*>::RawType output_count, uint64_t pc) {
    return do_syscall(ZX_SYS_system_get_performance_info, pc, &VDso::ValidSyscallPC::system_get_performance_info, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_system_get_performance_info(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(topic), SafeSyscallArgument<size_t>::Sanitize(count), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(info)), make_user_out_ptr(SafeSyscallArgument<size_t*>::Sanitize(output_count)));
        return result;
    });
}

syscall_result wrapper_system_mexec(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_handle_t>::RawType kernel_vmo, SafeSyscallArgument<zx_handle_t>::RawType bootimage_vmo, uint64_t pc);
syscall_result wrapper_system_mexec(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_handle_t>::RawType kernel_vmo, SafeSyscallArgument<zx_handle_t>::RawType bootimage_vmo, uint64_t pc) {
    return do_syscall(ZX_SYS_system_mexec, pc, &VDso::ValidSyscallPC::system_mexec, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_system_mexec(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<zx_handle_t>::Sanitize(kernel_vmo), SafeSyscallArgument<zx_handle_t>::Sanitize(bootimage_vmo));
        return result;
    });
}

syscall_result wrapper_system_mexec_payload_get(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_system_mexec_payload_get(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_system_mexec_payload_get, pc, &VDso::ValidSyscallPC::system_mexec_payload_get, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_system_mexec_payload_get(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_system_powerctl(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType cmd, SafeSyscallArgument<const zx_system_powerctl_arg_t*>::RawType arg, uint64_t pc);
syscall_result wrapper_system_powerctl(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<uint32_t>::RawType cmd, SafeSyscallArgument<const zx_system_powerctl_arg_t*>::RawType arg, uint64_t pc) {
    return do_syscall(ZX_SYS_system_powerctl, pc, &VDso::ValidSyscallPC::system_powerctl, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_system_powerctl(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<uint32_t>::Sanitize(cmd), make_user_in_ptr(SafeSyscallArgument<const zx_system_powerctl_arg_t*>::Sanitize(arg)));
        return result;
    });
}

syscall_result wrapper_task_suspend(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType token, uint64_t pc);
syscall_result wrapper_task_suspend(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType token, uint64_t pc) {
    return do_syscall(ZX_SYS_task_suspend, pc, &VDso::ValidSyscallPC::task_suspend, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_token;
        auto result = sys_task_suspend(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), &out_handle_token);
        if (result != ZX_OK)
            return result;
        result = out_handle_token.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(token)));
        if (result != ZX_OK)
            return result;
        out_handle_token.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_task_suspend_token(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType token, uint64_t pc);
syscall_result wrapper_task_suspend_token(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t*>::RawType token, uint64_t pc) {
    return do_syscall(ZX_SYS_task_suspend_token, pc, &VDso::ValidSyscallPC::task_suspend_token, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_token;
        auto result = sys_task_suspend_token(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), &out_handle_token);
        if (result != ZX_OK)
            return result;
        result = out_handle_token.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(token)));
        if (result != ZX_OK)
            return result;
        out_handle_token.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_task_create_exception_channel(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_task_create_exception_channel(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_task_create_exception_channel, pc, &VDso::ValidSyscallPC::task_create_exception_channel, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_task_create_exception_channel(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_task_kill(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_task_kill(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_task_kill, pc, &VDso::ValidSyscallPC::task_kill, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_task_kill(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_thread_exit(uint64_t pc);
syscall_result wrapper_thread_exit(uint64_t pc) {
    return do_syscall(ZX_SYS_thread_exit, pc, &VDso::ValidSyscallPC::thread_exit, [&](ProcessDispatcher* current_process) -> uint64_t {
        /*noreturn*/ sys_thread_exit();
        /* NOTREACHED */
        return ZX_ERR_BAD_STATE;
    });
}

syscall_result wrapper_thread_create(SafeSyscallArgument<zx_handle_t>::RawType process, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_thread_create(SafeSyscallArgument<zx_handle_t>::RawType process, SafeSyscallArgument<const char*>::RawType name, SafeSyscallArgument<size_t>::RawType name_size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_thread_create, pc, &VDso::ValidSyscallPC::thread_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_thread_create(SafeSyscallArgument<zx_handle_t>::Sanitize(process), make_user_in_ptr(SafeSyscallArgument<const char*>::Sanitize(name)), SafeSyscallArgument<size_t>::Sanitize(name_size), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_thread_start(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType thread_entry, SafeSyscallArgument<zx_vaddr_t>::RawType stack, SafeSyscallArgument<uintptr_t>::RawType arg1, SafeSyscallArgument<uintptr_t>::RawType arg2, uint64_t pc);
syscall_result wrapper_thread_start(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType thread_entry, SafeSyscallArgument<zx_vaddr_t>::RawType stack, SafeSyscallArgument<uintptr_t>::RawType arg1, SafeSyscallArgument<uintptr_t>::RawType arg2, uint64_t pc) {
    return do_syscall(ZX_SYS_thread_start, pc, &VDso::ValidSyscallPC::thread_start, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_thread_start(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vaddr_t>::Sanitize(thread_entry), SafeSyscallArgument<zx_vaddr_t>::Sanitize(stack), SafeSyscallArgument<uintptr_t>::Sanitize(arg1), SafeSyscallArgument<uintptr_t>::Sanitize(arg2));
        return result;
    });
}

syscall_result wrapper_thread_read_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_thread_read_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_thread_read_state, pc, &VDso::ValidSyscallPC::thread_read_state, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_thread_read_state(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_thread_write_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_thread_write_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_thread_write_state, pc, &VDso::ValidSyscallPC::thread_write_state, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_thread_write_state(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_thread_legacy_yield(SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc);
syscall_result wrapper_thread_legacy_yield(SafeSyscallArgument<uint32_t>::RawType options, uint64_t pc) {
    return do_syscall(ZX_SYS_thread_legacy_yield, pc, &VDso::ValidSyscallPC::thread_legacy_yield, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_thread_legacy_yield(SafeSyscallArgument<uint32_t>::Sanitize(options));
        return result;
    });
}

syscall_result wrapper_timer_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_clock_t>::RawType clock_id, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_timer_create(SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_clock_t>::RawType clock_id, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_timer_create, pc, &VDso::ValidSyscallPC::timer_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_timer_create(SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_clock_t>::Sanitize(clock_id), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_timer_set(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_duration_t>::RawType slack, uint64_t pc);
syscall_result wrapper_timer_set(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_time_t>::RawType deadline, SafeSyscallArgument<zx_duration_t>::RawType slack, uint64_t pc) {
    return do_syscall(ZX_SYS_timer_set, pc, &VDso::ValidSyscallPC::timer_set, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_timer_set(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_time_t>::Sanitize(deadline), SafeSyscallArgument<zx_duration_t>::Sanitize(slack));
        return result;
    });
}

syscall_result wrapper_timer_cancel(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_timer_cancel(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_timer_cancel, pc, &VDso::ValidSyscallPC::timer_cancel, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_timer_cancel(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_vcpu_create(SafeSyscallArgument<zx_handle_t>::RawType guest, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_vaddr_t>::RawType entry, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vcpu_create(SafeSyscallArgument<zx_handle_t>::RawType guest, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_vaddr_t>::RawType entry, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_create, pc, &VDso::ValidSyscallPC::vcpu_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vcpu_create(SafeSyscallArgument<zx_handle_t>::Sanitize(guest), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<zx_vaddr_t>::Sanitize(entry), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vcpu_enter(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_port_packet_t*>::RawType packet, uint64_t pc);
syscall_result wrapper_vcpu_enter(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_port_packet_t*>::RawType packet, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_enter, pc, &VDso::ValidSyscallPC::vcpu_enter, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vcpu_enter(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<zx_port_packet_t*>::Sanitize(packet)));
        return result;
    });
}

syscall_result wrapper_vcpu_kick(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_vcpu_kick(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_kick, pc, &VDso::ValidSyscallPC::vcpu_kick, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vcpu_kick(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_vcpu_interrupt(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType vector, uint64_t pc);
syscall_result wrapper_vcpu_interrupt(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType vector, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_interrupt, pc, &VDso::ValidSyscallPC::vcpu_interrupt, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vcpu_interrupt(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(vector));
        return result;
    });
}

syscall_result wrapper_vcpu_read_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vcpu_read_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_read_state, pc, &VDso::ValidSyscallPC::vcpu_read_state, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vcpu_read_state(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vcpu_write_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vcpu_write_state(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType kind, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vcpu_write_state, pc, &VDso::ValidSyscallPC::vcpu_write_state, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vcpu_write_state(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(kind), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vmar_allocate(SafeSyscallArgument<zx_handle_t>::RawType parent_vmar, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<size_t>::RawType offset, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType child_vmar, SafeSyscallArgument<zx_vaddr_t*>::RawType child_addr, uint64_t pc);
syscall_result wrapper_vmar_allocate(SafeSyscallArgument<zx_handle_t>::RawType parent_vmar, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<size_t>::RawType offset, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType child_vmar, SafeSyscallArgument<zx_vaddr_t*>::RawType child_addr, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_allocate, pc, &VDso::ValidSyscallPC::vmar_allocate, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_child_vmar;
        auto result = sys_vmar_allocate(SafeSyscallArgument<zx_handle_t>::Sanitize(parent_vmar), SafeSyscallArgument<zx_vm_option_t>::Sanitize(options), SafeSyscallArgument<size_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(size), &out_handle_child_vmar, make_user_out_ptr(SafeSyscallArgument<zx_vaddr_t*>::Sanitize(child_addr)));
        if (result != ZX_OK)
            return result;
        result = out_handle_child_vmar.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(child_vmar)));
        if (result != ZX_OK)
            return result;
        out_handle_child_vmar.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vmar_destroy(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc);
syscall_result wrapper_vmar_destroy(SafeSyscallArgument<zx_handle_t>::RawType handle, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_destroy, pc, &VDso::ValidSyscallPC::vmar_destroy, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmar_destroy(SafeSyscallArgument<zx_handle_t>::Sanitize(handle));
        return result;
    });
}

syscall_result wrapper_vmar_map(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<size_t>::RawType vmar_offset, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint64_t>::RawType vmo_offset, SafeSyscallArgument<size_t>::RawType len, SafeSyscallArgument<zx_vaddr_t*>::RawType mapped_addr, uint64_t pc);
syscall_result wrapper_vmar_map(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<size_t>::RawType vmar_offset, SafeSyscallArgument<zx_handle_t>::RawType vmo, SafeSyscallArgument<uint64_t>::RawType vmo_offset, SafeSyscallArgument<size_t>::RawType len, SafeSyscallArgument<zx_vaddr_t*>::RawType mapped_addr, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_map, pc, &VDso::ValidSyscallPC::vmar_map, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmar_map(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vm_option_t>::Sanitize(options), SafeSyscallArgument<size_t>::Sanitize(vmar_offset), SafeSyscallArgument<zx_handle_t>::Sanitize(vmo), SafeSyscallArgument<uint64_t>::Sanitize(vmo_offset), SafeSyscallArgument<size_t>::Sanitize(len), make_user_out_ptr(SafeSyscallArgument<zx_vaddr_t*>::Sanitize(mapped_addr)));
        return result;
    });
}

syscall_result wrapper_vmar_unmap(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType len, uint64_t pc);
syscall_result wrapper_vmar_unmap(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType len, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_unmap, pc, &VDso::ValidSyscallPC::vmar_unmap, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmar_unmap(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vaddr_t>::Sanitize(addr), SafeSyscallArgument<size_t>::Sanitize(len));
        return result;
    });
}

syscall_result wrapper_vmar_protect(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType len, uint64_t pc);
syscall_result wrapper_vmar_protect(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_vm_option_t>::RawType options, SafeSyscallArgument<zx_vaddr_t>::RawType addr, SafeSyscallArgument<size_t>::RawType len, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_protect, pc, &VDso::ValidSyscallPC::vmar_protect, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmar_protect(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_vm_option_t>::Sanitize(options), SafeSyscallArgument<zx_vaddr_t>::Sanitize(addr), SafeSyscallArgument<size_t>::Sanitize(len));
        return result;
    });
}

syscall_result wrapper_vmar_op_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<zx_vaddr_t>::RawType address, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vmar_op_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<zx_vaddr_t>::RawType address, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmar_op_range, pc, &VDso::ValidSyscallPC::vmar_op_range, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmar_op_range(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(op), SafeSyscallArgument<zx_vaddr_t>::Sanitize(address), SafeSyscallArgument<size_t>::Sanitize(size), make_user_inout_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vmo_create(SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vmo_create(SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_create, pc, &VDso::ValidSyscallPC::vmo_create, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vmo_create(SafeSyscallArgument<uint64_t>::Sanitize(size), SafeSyscallArgument<uint32_t>::Sanitize(options), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vmo_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vmo_read(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_read, pc, &VDso::ValidSyscallPC::vmo_read, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_read(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vmo_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vmo_write(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<const void*>::RawType buffer, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_write, pc, &VDso::ValidSyscallPC::vmo_write, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_write(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_in_ptr(SafeSyscallArgument<const void*>::Sanitize(buffer)), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vmo_get_size(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t*>::RawType size, uint64_t pc);
syscall_result wrapper_vmo_get_size(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t*>::RawType size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_get_size, pc, &VDso::ValidSyscallPC::vmo_get_size, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_get_size(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), make_user_out_ptr(SafeSyscallArgument<uint64_t*>::Sanitize(size)));
        return result;
    });
}

syscall_result wrapper_vmo_set_size(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType size, uint64_t pc);
syscall_result wrapper_vmo_set_size(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint64_t>::RawType size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_set_size, pc, &VDso::ValidSyscallPC::vmo_set_size, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_set_size(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint64_t>::Sanitize(size));
        return result;
    });
}

syscall_result wrapper_vmo_op_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc);
syscall_result wrapper_vmo_op_range(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType op, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<void*>::RawType buffer, SafeSyscallArgument<size_t>::RawType buffer_size, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_op_range, pc, &VDso::ValidSyscallPC::vmo_op_range, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_op_range(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(op), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(size), make_user_inout_ptr(SafeSyscallArgument<void*>::Sanitize(buffer)), SafeSyscallArgument<size_t>::Sanitize(buffer_size));
        return result;
    });
}

syscall_result wrapper_vmo_create_child(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vmo_create_child(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType options, SafeSyscallArgument<uint64_t>::RawType offset, SafeSyscallArgument<uint64_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_create_child, pc, &VDso::ValidSyscallPC::vmo_create_child, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vmo_create_child(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(options), SafeSyscallArgument<uint64_t>::Sanitize(offset), SafeSyscallArgument<uint64_t>::Sanitize(size), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vmo_set_cache_policy(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType cache_policy, uint64_t pc);
syscall_result wrapper_vmo_set_cache_policy(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<uint32_t>::RawType cache_policy, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_set_cache_policy, pc, &VDso::ValidSyscallPC::vmo_set_cache_policy, [&](ProcessDispatcher* current_process) -> uint64_t {
        auto result = sys_vmo_set_cache_policy(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<uint32_t>::Sanitize(cache_policy));
        return result;
    });
}

syscall_result wrapper_vmo_replace_as_executable(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType vmex, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vmo_replace_as_executable(SafeSyscallArgument<zx_handle_t>::RawType handle, SafeSyscallArgument<zx_handle_t>::RawType vmex, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_replace_as_executable, pc, &VDso::ValidSyscallPC::vmo_replace_as_executable, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vmo_replace_as_executable(SafeSyscallArgument<zx_handle_t>::Sanitize(handle), SafeSyscallArgument<zx_handle_t>::Sanitize(vmex), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vmo_create_contiguous(SafeSyscallArgument<zx_handle_t>::RawType bti, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<uint32_t>::RawType alignment_log2, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vmo_create_contiguous(SafeSyscallArgument<zx_handle_t>::RawType bti, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<uint32_t>::RawType alignment_log2, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_create_contiguous, pc, &VDso::ValidSyscallPC::vmo_create_contiguous, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vmo_create_contiguous(SafeSyscallArgument<zx_handle_t>::Sanitize(bti), SafeSyscallArgument<size_t>::Sanitize(size), SafeSyscallArgument<uint32_t>::Sanitize(alignment_log2), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

syscall_result wrapper_vmo_create_physical(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_paddr_t>::RawType paddr, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc);
syscall_result wrapper_vmo_create_physical(SafeSyscallArgument<zx_handle_t>::RawType resource, SafeSyscallArgument<zx_paddr_t>::RawType paddr, SafeSyscallArgument<size_t>::RawType size, SafeSyscallArgument<zx_handle_t*>::RawType out, uint64_t pc) {
    return do_syscall(ZX_SYS_vmo_create_physical, pc, &VDso::ValidSyscallPC::vmo_create_physical, [&](ProcessDispatcher* current_process) -> uint64_t {
        user_out_handle out_handle_out;
        auto result = sys_vmo_create_physical(SafeSyscallArgument<zx_handle_t>::Sanitize(resource), SafeSyscallArgument<zx_paddr_t>::Sanitize(paddr), SafeSyscallArgument<size_t>::Sanitize(size), &out_handle_out);
        if (result != ZX_OK)
            return result;
        result = out_handle_out.begin_copyout(current_process, make_user_out_ptr(SafeSyscallArgument<zx_handle_t*>::Sanitize(out)));
        if (result != ZX_OK)
            return result;
        out_handle_out.finish_copyout(current_process);
        return result;
    });
}

}
----- kernel-wrappers.h END -----


----- private-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

KERNEL_SYSCALL(bti_create, zx_status_t, /* no attributes */, 4,
    (iommu, options, bti_id, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t iommu,
    uint32_t options,
    uint64_t bti_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(bti_pin, zx_status_t, /* no attributes */, 8,
    (handle, options, vmo, offset, size, addrs, num_addrs, pmt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t offset,
    uint64_t size,
    zx_paddr_t* addrs,
    size_t num_addrs,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* pmt))

KERNEL_SYSCALL(bti_release_quarantine, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

VDSO_SYSCALL(cache_flush, zx_status_t, /* no attributes */, 3,
    (addr, size, options), (
    const void* addr,
    size_t size,
    uint32_t options))

KERNEL_SYSCALL(channel_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

KERNEL_SYSCALL(channel_read, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("FuchsiaUnchecked")) zx_handle_t handle,
    uint32_t options,
    void* bytes,
    _ZX_SYSCALL_ANNO(acquire_handle("FuchsiaUnchecked")) zx_handle_t* handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

KERNEL_SYSCALL(channel_read_etc, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* bytes,
    zx_handle_info_t* handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

KERNEL_SYSCALL(channel_write, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* bytes,
    uint32_t num_bytes,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
    uint32_t num_handles))

KERNEL_SYSCALL(channel_write_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* bytes,
    uint32_t num_bytes,
    zx_handle_disposition_t* handles,
    uint32_t num_handles))

INTERNAL_SYSCALL(channel_call_noretry, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    const zx_channel_call_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

INTERNAL_SYSCALL(channel_call_finish, zx_status_t, /* no attributes */, 4,
    (deadline, args, actual_bytes, actual_handles), (
    zx_time_t deadline,
    const zx_channel_call_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

VDSO_SYSCALL(channel_call, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    const zx_channel_call_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

INTERNAL_SYSCALL(channel_call_etc_noretry, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    zx_channel_call_etc_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

INTERNAL_SYSCALL(channel_call_etc_finish, zx_status_t, /* no attributes */, 4,
    (deadline, args, actual_bytes, actual_handles), (
    zx_time_t deadline,
    zx_channel_call_etc_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

VDSO_SYSCALL(channel_call_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    zx_channel_call_etc_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

VDSO_SYSCALL(clock_get_monotonic, zx_time_t, /* no attributes */, 0,
    (), (void))

INTERNAL_SYSCALL(clock_get_monotonic_via_kernel, zx_time_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(clock_create, zx_status_t, /* no attributes */, 3,
    (options, args, out), (
    uint64_t options,
    const void* args,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(clock_read, zx_status_t, /* no attributes */, 2,
    (handle, now), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t* now))

KERNEL_SYSCALL(clock_get_details, zx_status_t, /* no attributes */, 3,
    (handle, options, details), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    void* details))

KERNEL_SYSCALL(clock_update, zx_status_t, /* no attributes */, 3,
    (handle, options, args), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    const void* args))

INTERNAL_SYSCALL(cprng_draw_once, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    void* buffer,
    size_t buffer_size))

VDSO_SYSCALL(cprng_draw, void, /* no attributes */, 2,
    (buffer, buffer_size), (
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(cprng_add_entropy, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    const void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debug_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    char* buffer,
    size_t buffer_size,
    size_t* actual))

KERNEL_SYSCALL(debug_write, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    const char* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debug_send_command, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    const char* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debuglog_create, zx_status_t, /* no attributes */, 3,
    (resource, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(debuglog_write, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(debuglog_read, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(event_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(eventpair_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

KERNEL_SYSCALL(exception_get_thread, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(exception_get_process, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(fifo_create, zx_status_t, /* no attributes */, 5,
    (elem_count, elem_size, options, out0, out1), (
    size_t elem_count,
    size_t elem_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

KERNEL_SYSCALL(fifo_read, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, data_size, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    void* data,
    size_t data_size,
    size_t* actual_count))

KERNEL_SYSCALL(fifo_write, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, count, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    const void* data,
    size_t count,
    size_t* actual_count))

KERNEL_SYSCALL(framebuffer_get_info, zx_status_t, /* no attributes */, 5,
    (resource, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t* format,
    uint32_t* width,
    uint32_t* height,
    uint32_t* stride))

KERNEL_SYSCALL(framebuffer_set_range, zx_status_t, /* no attributes */, 7,
    (resource, vmo, len, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint32_t len,
    uint32_t format,
    uint32_t width,
    uint32_t height,
    uint32_t stride))

BLOCKING_SYSCALL(futex_wait, zx_status_t, /* no attributes */, 4,
    (value_ptr, current_value, new_futex_owner, deadline), (
    const zx_futex_t* value_ptr,
    zx_futex_t current_value,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_futex_owner,
    zx_time_t deadline))

KERNEL_SYSCALL(futex_wake, zx_status_t, /* no attributes */, 2,
    (value_ptr, wake_count), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count))

KERNEL_SYSCALL(futex_requeue, zx_status_t, /* no attributes */, 6,
    (value_ptr, wake_count, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count,
    zx_futex_t current_value,
    const zx_futex_t* requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

KERNEL_SYSCALL(futex_wake_single_owner, zx_status_t, /* no attributes */, 1,
    (value_ptr), (
    const zx_futex_t* value_ptr))

KERNEL_SYSCALL(futex_requeue_single_owner, zx_status_t, /* no attributes */, 5,
    (value_ptr, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    const zx_futex_t* value_ptr,
    zx_futex_t current_value,
    const zx_futex_t* requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

KERNEL_SYSCALL(futex_get_owner, zx_status_t, /* no attributes */, 2,
    (value_ptr, koid), (
    const zx_futex_t* value_ptr,
    zx_koid_t* koid))

KERNEL_SYSCALL(guest_create, zx_status_t, /* no attributes */, 4,
    (resource, options, guest_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* guest_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

KERNEL_SYSCALL(guest_set_trap, zx_status_t, /* no attributes */, 6,
    (handle, kind, addr, size, port_handle, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key))

KERNEL_SYSCALL(handle_close, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(handle_close_many, zx_status_t, /* no attributes */, 2,
    (handles, num_handles), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
    size_t num_handles))

KERNEL_SYSCALL(handle_duplicate, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(handle_replace, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(interrupt_create, zx_status_t, /* no attributes */, 4,
    (src_obj, src_num, options, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t src_obj,
    uint32_t src_num,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

KERNEL_SYSCALL(interrupt_bind, zx_status_t, /* no attributes */, 4,
    (handle, port_handle, key, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key,
    uint32_t options))

BLOCKING_SYSCALL(interrupt_wait, zx_status_t, /* no attributes */, 2,
    (handle, out_timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t* out_timestamp))

KERNEL_SYSCALL(interrupt_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(interrupt_ack, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(interrupt_trigger, zx_status_t, /* no attributes */, 3,
    (handle, options, timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t timestamp))

KERNEL_SYSCALL(interrupt_bind_vcpu, zx_status_t, /* no attributes */, 3,
    (handle, vcpu, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vcpu,
    uint32_t options))

KERNEL_SYSCALL(iommu_create, zx_status_t, /* no attributes */, 5,
    (resource, type, desc, desc_size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t type,
    const void* desc,
    size_t desc_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(ioports_request, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

KERNEL_SYSCALL(ioports_release, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

KERNEL_SYSCALL(job_create, zx_status_t, /* no attributes */, 3,
    (parent_job, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(job_set_policy, zx_status_t, /* no attributes */, 5,
    (handle, options, topic, policy, policy_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t topic,
    const void* policy,
    uint32_t policy_size))

KERNEL_SYSCALL(job_set_critical, zx_status_t, /* no attributes */, 3,
    (job, options, process), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process))

KERNEL_SYSCALL(ktrace_read, zx_status_t, /* no attributes */, 5,
    (handle, data, offset, data_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    void* data,
    uint32_t offset,
    size_t data_size,
    size_t* actual))

KERNEL_SYSCALL(ktrace_control, zx_status_t, /* no attributes */, 4,
    (handle, action, options, ptr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t action,
    uint32_t options,
    void* ptr))

KERNEL_SYSCALL(ktrace_write, zx_status_t, /* no attributes */, 4,
    (handle, id, arg0, arg1), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t id,
    uint32_t arg0,
    uint32_t arg1))

BLOCKING_SYSCALL(nanosleep, zx_status_t, /* no attributes */, 1,
    (deadline), (
    zx_time_t deadline))

VDSO_SYSCALL(ticks_get, zx_ticks_t, /* no attributes */, 0,
    (), (void))

VDSO_SYSCALL(ticks_per_second, zx_ticks_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(deadline_after, zx_time_t, /* no attributes */, 1,
    (nanoseconds), (
    zx_duration_t nanoseconds))

VDSO_SYSCALL(vmar_unmap_handle_close_thread_exit, zx_status_t, /* no attributes */, 4,
    (vmar_handle, addr, size, close_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmar_handle,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

VDSO_SYSCALL(futex_wake_handle_close_thread_exit, void, __NO_RETURN, 4,
    (value_ptr, wake_count, new_value, close_handle), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count,
    int32_t new_value,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

INTERNAL_SYSCALL(ticks_get_via_kernel, zx_ticks_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(msi_allocate, zx_status_t, /* no attributes */, 3,
    (handle, count, out_allocation), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t count,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_allocation))

KERNEL_SYSCALL(msi_create, zx_status_t, /* no attributes */, 6,
    (handle, options, msi_id, vmo, vmo_offset, out_interrupt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t msi_id,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    size_t vmo_offset,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_interrupt))

KERNEL_SYSCALL(mtrace_control, zx_status_t, /* no attributes */, 6,
    (handle, kind, action, options, ptr, ptr_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    uint32_t action,
    uint32_t options,
    void* ptr,
    size_t ptr_size))

BLOCKING_SYSCALL(object_wait_one, zx_status_t, /* no attributes */, 4,
    (handle, signals, deadline, observed), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_signals_t signals,
    zx_time_t deadline,
    zx_signals_t* observed))

BLOCKING_SYSCALL(object_wait_many, zx_status_t, /* no attributes */, 3,
    (items, num_items, deadline), (
    zx_wait_item_t* items,
    size_t num_items,
    zx_time_t deadline))

KERNEL_SYSCALL(object_wait_async, zx_status_t, /* no attributes */, 5,
    (handle, port, key, signals, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    zx_signals_t signals,
    uint32_t options))

KERNEL_SYSCALL(object_signal, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

KERNEL_SYSCALL(object_signal_peer, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

KERNEL_SYSCALL(object_get_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    void* value,
    size_t value_size))

KERNEL_SYSCALL(object_set_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    const void* value,
    size_t value_size))

KERNEL_SYSCALL(object_get_info, zx_status_t, /* no attributes */, 6,
    (handle, topic, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t topic,
    void* buffer,
    size_t buffer_size,
    size_t* actual,
    size_t* avail))

KERNEL_SYSCALL(object_get_child, zx_status_t, /* no attributes */, 4,
    (handle, koid, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t koid,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(object_set_profile, zx_status_t, /* no attributes */, 3,
    (handle, profile, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t profile,
    uint32_t options))

KERNEL_SYSCALL(pager_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(pager_create_vmo, zx_status_t, /* no attributes */, 6,
    (pager, options, port, key, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(pager_detach_vmo, zx_status_t, /* no attributes */, 2,
    (pager, vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo))

KERNEL_SYSCALL(pager_supply_pages, zx_status_t, /* no attributes */, 6,
    (pager, pager_vmo, offset, length, aux_vmo, aux_offset), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t aux_vmo,
    uint64_t aux_offset))

KERNEL_SYSCALL(pager_op_range, zx_status_t, /* no attributes */, 6,
    (pager, op, pager_vmo, offset, length, data), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t op,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    uint64_t data))

KERNEL_SYSCALL(pager_query_dirty_ranges, zx_status_t, /* no attributes */, 8,
    (pager, pager_vmo, offset, length, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    void* buffer,
    size_t buffer_size,
    size_t* actual,
    size_t* avail))

KERNEL_SYSCALL(pager_query_vmo_stats, zx_status_t, /* no attributes */, 5,
    (pager, pager_vmo, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint32_t options,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(pc_firmware_tables, zx_status_t, /* no attributes */, 3,
    (handle, acpi_rsdp, smbios), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_paddr_t* acpi_rsdp,
    zx_paddr_t* smbios))

KERNEL_SYSCALL(pci_get_nth_device, zx_status_t, /* no attributes */, 4,
    (handle, index, out_info, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t index,
    zx_pcie_device_info_t* out_info,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

KERNEL_SYSCALL(pci_enable_bus_master, zx_status_t, /* no attributes */, 2,
    (handle, enable), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t enable))

KERNEL_SYSCALL(pci_reset_device, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(pci_config_read, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, out_val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    uint32_t* out_val))

KERNEL_SYSCALL(pci_config_write, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    uint32_t val))

KERNEL_SYSCALL(pci_cfg_pio_rw, zx_status_t, /* no attributes */, 8,
    (handle, bus, dev, func, offset, val, width, write), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint8_t bus,
    uint8_t dev,
    uint8_t func,
    uint8_t offset,
    uint32_t* val,
    size_t width,
    uint32_t write))

KERNEL_SYSCALL(pci_get_bar, zx_status_t, /* no attributes */, 4,
    (handle, bar_num, out_bar, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t bar_num,
    zx_pci_bar_t* out_bar,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

KERNEL_SYSCALL(pci_map_interrupt, zx_status_t, /* no attributes */, 3,
    (handle, which_irq, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    int32_t which_irq,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

KERNEL_SYSCALL(pci_query_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, out_max_irqs), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    uint32_t* out_max_irqs))

KERNEL_SYSCALL(pci_set_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, requested_irq_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    uint32_t requested_irq_count))

KERNEL_SYSCALL(pci_init, zx_status_t, /* no attributes */, 3,
    (handle, init_buf, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_pci_init_arg_t* init_buf,
    uint32_t len))

KERNEL_SYSCALL(pci_add_subtract_io_range, zx_status_t, /* no attributes */, 5,
    (handle, mmio, base, len, add), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mmio,
    uint64_t base,
    uint64_t len,
    uint32_t add))

KERNEL_SYSCALL(pmt_unpin, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(port_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(port_queue, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_port_packet_t* packet))

BLOCKING_SYSCALL(port_wait, zx_status_t, /* no attributes */, 3,
    (handle, deadline, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    zx_port_packet_t* packet))

KERNEL_SYSCALL(port_cancel, zx_status_t, /* no attributes */, 3,
    (handle, source, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t source,
    uint64_t key))

KERNEL_SYSCALL(process_exit, void, __NO_RETURN, 1,
    (retcode), (
    int64_t retcode))

KERNEL_SYSCALL(process_create, zx_status_t, /* no attributes */, 6,
    (job, name, name_size, options, proc_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    const char* name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* proc_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

KERNEL_SYSCALL(process_start, zx_status_t, /* no attributes */, 6,
    (handle, thread, entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t thread,
    zx_vaddr_t entry,
    zx_vaddr_t stack,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t arg1,
    uintptr_t arg2))

KERNEL_SYSCALL(process_read_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    void* buffer,
    size_t buffer_size,
    size_t* actual))

KERNEL_SYSCALL(process_write_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    const void* buffer,
    size_t buffer_size,
    size_t* actual))

KERNEL_SYSCALL(profile_create, zx_status_t, /* no attributes */, 4,
    (root_job, options, profile, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t options,
    const zx_profile_info_t* profile,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(resource_create, zx_status_t, /* no attributes */, 7,
    (parent_rsrc, options, base, size, name, name_size, resource_out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_rsrc,
    uint32_t options,
    uint64_t base,
    size_t size,
    const char* name,
    size_t name_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* resource_out))

KERNEL_SYSCALL(smc_call, zx_status_t, /* no attributes */, 3,
    (handle, parameters, out_smc_result), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_smc_parameters_t* parameters,
    zx_smc_result_t* out_smc_result))

KERNEL_SYSCALL(socket_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

KERNEL_SYSCALL(socket_write, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* buffer,
    size_t buffer_size,
    size_t* actual))

KERNEL_SYSCALL(socket_read, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* buffer,
    size_t buffer_size,
    size_t* actual))

KERNEL_SYSCALL(socket_set_disposition, zx_status_t, /* no attributes */, 3,
    (handle, disposition, disposition_peer), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t disposition,
    uint32_t disposition_peer))

KERNEL_SYSCALL(stream_create, zx_status_t, /* no attributes */, 4,
    (options, vmo, seek, out_stream), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    zx_off_t seek,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_stream))

BLOCKING_SYSCALL(stream_writev, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

BLOCKING_SYSCALL(stream_writev_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    const zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

BLOCKING_SYSCALL(stream_readv, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

BLOCKING_SYSCALL(stream_readv_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

KERNEL_SYSCALL(stream_seek, zx_status_t, /* no attributes */, 4,
    (handle, whence, offset, out_seek), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_stream_seek_origin_t whence,
    int64_t offset,
    zx_off_t* out_seek))

KERNEL_SYSCALL(syscall_test_0, zx_status_t, /* no attributes */, 0,
    (), (void))

KERNEL_SYSCALL(syscall_test_1, zx_status_t, /* no attributes */, 1,
    (a), (
    int32_t a))

KERNEL_SYSCALL(syscall_test_2, zx_status_t, /* no attributes */, 2,
    (a, b), (
    int32_t a,
    int32_t b))

KERNEL_SYSCALL(syscall_test_3, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

KERNEL_SYSCALL(syscall_test_4, zx_status_t, /* no attributes */, 4,
    (a, b, c, d), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d))

KERNEL_SYSCALL(syscall_test_5, zx_status_t, /* no attributes */, 5,
    (a, b, c, d, e), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e))

KERNEL_SYSCALL(syscall_test_6, zx_status_t, /* no attributes */, 6,
    (a, b, c, d, e, f), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f))

KERNEL_SYSCALL(syscall_test_7, zx_status_t, /* no attributes */, 7,
    (a, b, c, d, e, f, g), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g))

KERNEL_SYSCALL(syscall_test_8, zx_status_t, /* no attributes */, 8,
    (a, b, c, d, e, f, g, h), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g,
    int32_t h))

KERNEL_SYSCALL(syscall_next_1, zx_status_t, /* no attributes */, 1,
    (arg), (
    int32_t arg))

KERNEL_SYSCALL(syscall_test_wrapper, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

KERNEL_SYSCALL(syscall_test_handle_create, zx_status_t, /* no attributes */, 2,
    (return_value, out), (
    zx_status_t return_value,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(syscall_test_widening_unsigned_narrow, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

KERNEL_SYSCALL(syscall_test_widening_signed_narrow, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

KERNEL_SYSCALL(syscall_test_widening_unsigned_wide, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

KERNEL_SYSCALL(syscall_test_widening_signed_wide, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

VDSO_SYSCALL(system_get_dcache_line_size, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_num_cpus, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_version_string, zx_string_view_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_page_size, uint32_t, __CONST, 0,
    (), (void))

VDSO_SYSCALL(system_get_physmem, uint64_t, /* no attributes */, 0,
    (), (void))

VDSO_SYSCALL(system_get_features, zx_status_t, /* no attributes */, 2,
    (kind, features), (
    uint32_t kind,
    uint32_t* features))

KERNEL_SYSCALL(system_get_event, zx_status_t, /* no attributes */, 3,
    (root_job, kind, event), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t kind,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* event))

KERNEL_SYSCALL(system_set_performance_info, zx_status_t, /* no attributes */, 4,
    (resource, topic, info, count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    const void* info,
    size_t count))

KERNEL_SYSCALL(system_get_performance_info, zx_status_t, /* no attributes */, 5,
    (resource, topic, count, info, output_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    size_t count,
    void* info,
    size_t* output_count))

KERNEL_SYSCALL(system_mexec, zx_status_t, /* no attributes */, 3,
    (resource, kernel_vmo, bootimage_vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t kernel_vmo,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bootimage_vmo))

KERNEL_SYSCALL(system_mexec_payload_get, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(system_powerctl, zx_status_t, /* no attributes */, 3,
    (resource, cmd, arg), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t cmd,
    const zx_system_powerctl_arg_t* arg))

KERNEL_SYSCALL(task_suspend, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

KERNEL_SYSCALL(task_suspend_token, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

KERNEL_SYSCALL(task_create_exception_channel, zx_status_t, /* no attributes */, 3,
    (handle, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(task_kill, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(thread_exit, void, __NO_RETURN, 0,
    (), (void))

KERNEL_SYSCALL(thread_create, zx_status_t, /* no attributes */, 5,
    (process, name, name_size, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process,
    const char* name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(thread_start, zx_status_t, /* no attributes */, 5,
    (handle, thread_entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t thread_entry,
    zx_vaddr_t stack,
    uintptr_t arg1,
    uintptr_t arg2))

KERNEL_SYSCALL(thread_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(thread_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    const void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(thread_legacy_yield, zx_status_t, /* no attributes */, 1,
    (options), (
    uint32_t options))

KERNEL_SYSCALL(timer_create, zx_status_t, /* no attributes */, 3,
    (options, clock_id, out), (
    uint32_t options,
    zx_clock_t clock_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(timer_set, zx_status_t, /* no attributes */, 3,
    (handle, deadline, slack), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    zx_duration_t slack))

KERNEL_SYSCALL(timer_cancel, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vcpu_create, zx_status_t, /* no attributes */, 4,
    (guest, options, entry, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t guest,
    uint32_t options,
    zx_vaddr_t entry,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

BLOCKING_SYSCALL(vcpu_enter, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_port_packet_t* packet))

KERNEL_SYSCALL(vcpu_kick, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vcpu_interrupt, zx_status_t, /* no attributes */, 2,
    (handle, vector), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t vector))

KERNEL_SYSCALL(vcpu_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vcpu_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    const void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmar_allocate, zx_status_t, /* no attributes */, 6,
    (parent_vmar, options, offset, size, child_vmar, child_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_vmar,
    zx_vm_option_t options,
    size_t offset,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* child_vmar,
    zx_vaddr_t* child_addr))

KERNEL_SYSCALL(vmar_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

KERNEL_SYSCALL(vmar_map, zx_status_t, /* no attributes */, 7,
    (handle, options, vmar_offset, vmo, vmo_offset, len, mapped_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    size_t vmar_offset,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t vmo_offset,
    size_t len,
    zx_vaddr_t* mapped_addr))

KERNEL_SYSCALL(vmar_unmap, zx_status_t, /* no attributes */, 3,
    (handle, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t addr,
    size_t len))

KERNEL_SYSCALL(vmar_protect, zx_status_t, /* no attributes */, 4,
    (handle, options, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    zx_vaddr_t addr,
    size_t len))

KERNEL_SYSCALL(vmar_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, address, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    zx_vaddr_t address,
    size_t size,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_create, zx_status_t, /* no attributes */, 3,
    (size, options, out), (
    uint64_t size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

BLOCKING_SYSCALL(vmo_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    void* buffer,
    uint64_t offset,
    size_t buffer_size))

BLOCKING_SYSCALL(vmo_write, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const void* buffer,
    uint64_t offset,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_get_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t* size))

KERNEL_SYSCALL(vmo_set_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t size))

BLOCKING_SYSCALL(vmo_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, offset, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    uint64_t offset,
    uint64_t size,
    void* buffer,
    size_t buffer_size))

KERNEL_SYSCALL(vmo_create_child, zx_status_t, /* no attributes */, 5,
    (handle, options, offset, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint64_t offset,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(vmo_set_cache_policy, zx_status_t, /* no attributes */, 2,
    (handle, cache_policy), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t cache_policy))

KERNEL_SYSCALL(vmo_replace_as_executable, zx_status_t, /* no attributes */, 3,
    (handle, vmex, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmex,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(vmo_create_contiguous, zx_status_t, /* no attributes */, 4,
    (bti, size, alignment_log2, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bti,
    size_t size,
    uint32_t alignment_log2,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

KERNEL_SYSCALL(vmo_create_physical, zx_status_t, /* no attributes */, 4,
    (resource, paddr, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    zx_paddr_t paddr,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

----- private-header.h END -----


----- public-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#ifndef _ZX_SYSCALL_DECL
#error "<zircon/syscalls.h> is the public API header"
#endif

_ZX_SYSCALL_DECL(bti_create, zx_status_t, /* no attributes */, 4,
    (iommu, options, bti_id, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t iommu,
    uint32_t options,
    uint64_t bti_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(bti_pin, zx_status_t, /* no attributes */, 8,
    (handle, options, vmo, offset, size, addrs, num_addrs, pmt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t offset,
    uint64_t size,
    zx_paddr_t* addrs,
    size_t num_addrs,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* pmt))

_ZX_SYSCALL_DECL(bti_release_quarantine, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(cache_flush, zx_status_t, /* no attributes */, 3,
    (addr, size, options), (
    const void* addr,
    size_t size,
    uint32_t options))

_ZX_SYSCALL_DECL(channel_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(channel_read, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("FuchsiaUnchecked")) zx_handle_t handle,
    uint32_t options,
    void* bytes,
    _ZX_SYSCALL_ANNO(acquire_handle("FuchsiaUnchecked")) zx_handle_t* handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_read_etc, zx_status_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* bytes,
    zx_handle_info_t* handles,
    uint32_t num_bytes,
    uint32_t num_handles,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_write, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* bytes,
    uint32_t num_bytes,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
    uint32_t num_handles))

_ZX_SYSCALL_DECL(channel_write_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, bytes, num_bytes, handles, num_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* bytes,
    uint32_t num_bytes,
    zx_handle_disposition_t* handles,
    uint32_t num_handles))

_ZX_SYSCALL_DECL(channel_call, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    const zx_channel_call_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_call_etc, zx_status_t, /* no attributes */, 6,
    (handle, options, deadline, args, actual_bytes, actual_handles), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t deadline,
    zx_channel_call_etc_args_t* args,
    uint32_t* actual_bytes,
    uint32_t* actual_handles))

_ZX_SYSCALL_DECL(clock_get_monotonic, zx_time_t, /* no attributes */, 0,
    (), (void))

_ZX_SYSCALL_DECL(clock_create, zx_status_t, /* no attributes */, 3,
    (options, args, out), (
    uint64_t options,
    const void* args,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(clock_read, zx_status_t, /* no attributes */, 2,
    (handle, now), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t* now))

_ZX_SYSCALL_DECL(clock_get_details, zx_status_t, /* no attributes */, 3,
    (handle, options, details), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    void* details))

_ZX_SYSCALL_DECL(clock_update, zx_status_t, /* no attributes */, 3,
    (handle, options, args), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t options,
    const void* args))

_ZX_SYSCALL_DECL(cprng_draw, void, /* no attributes */, 2,
    (buffer, buffer_size), (
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(cprng_add_entropy, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    const void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(debug_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    char* buffer,
    size_t buffer_size,
    size_t* actual))

_ZX_SYSCALL_DECL(debug_write, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    const char* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(debug_send_command, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    const char* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(debuglog_create, zx_status_t, /* no attributes */, 3,
    (resource, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(debuglog_write, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(debuglog_read, zx_status_t, /* no attributes */, 4,
    (handle, options, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(event_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(eventpair_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(exception_get_thread, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(exception_get_process, zx_status_t, /* no attributes */, 2,
    (handle, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(fifo_create, zx_status_t, /* no attributes */, 5,
    (elem_count, elem_size, options, out0, out1), (
    size_t elem_count,
    size_t elem_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(fifo_read, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, data_size, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    void* data,
    size_t data_size,
    size_t* actual_count))

_ZX_SYSCALL_DECL(fifo_write, zx_status_t, /* no attributes */, 5,
    (handle, elem_size, data, count, actual_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    size_t elem_size,
    const void* data,
    size_t count,
    size_t* actual_count))

_ZX_SYSCALL_DECL(framebuffer_get_info, zx_status_t, /* no attributes */, 5,
    (resource, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t* format,
    uint32_t* width,
    uint32_t* height,
    uint32_t* stride))

_ZX_SYSCALL_DECL(framebuffer_set_range, zx_status_t, /* no attributes */, 7,
    (resource, vmo, len, format, width, height, stride), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint32_t len,
    uint32_t format,
    uint32_t width,
    uint32_t height,
    uint32_t stride))

_ZX_SYSCALL_DECL(futex_wait, zx_status_t, /* no attributes */, 4,
    (value_ptr, current_value, new_futex_owner, deadline), (
    const zx_futex_t* value_ptr,
    zx_futex_t current_value,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_futex_owner,
    zx_time_t deadline))

_ZX_SYSCALL_DECL(futex_wake, zx_status_t, /* no attributes */, 2,
    (value_ptr, wake_count), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count))

_ZX_SYSCALL_DECL(futex_requeue, zx_status_t, /* no attributes */, 6,
    (value_ptr, wake_count, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count,
    zx_futex_t current_value,
    const zx_futex_t* requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

_ZX_SYSCALL_DECL(futex_wake_single_owner, zx_status_t, /* no attributes */, 1,
    (value_ptr), (
    const zx_futex_t* value_ptr))

_ZX_SYSCALL_DECL(futex_requeue_single_owner, zx_status_t, /* no attributes */, 5,
    (value_ptr, current_value, requeue_ptr, requeue_count, new_requeue_owner), (
    const zx_futex_t* value_ptr,
    zx_futex_t current_value,
    const zx_futex_t* requeue_ptr,
    uint32_t requeue_count,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

_ZX_SYSCALL_DECL(futex_get_owner, zx_status_t, /* no attributes */, 2,
    (value_ptr, koid), (
    const zx_futex_t* value_ptr,
    zx_koid_t* koid))

_ZX_SYSCALL_DECL(guest_create, zx_status_t, /* no attributes */, 4,
    (resource, options, guest_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* guest_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

_ZX_SYSCALL_DECL(guest_set_trap, zx_status_t, /* no attributes */, 6,
    (handle, kind, addr, size, port_handle, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key))

_ZX_SYSCALL_DECL(handle_close, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(handle_close_many, zx_status_t, /* no attributes */, 2,
    (handles, num_handles), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
    size_t num_handles))

_ZX_SYSCALL_DECL(handle_duplicate, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(handle_replace, zx_status_t, /* no attributes */, 3,
    (handle, rights, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(interrupt_create, zx_status_t, /* no attributes */, 4,
    (src_obj, src_num, options, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t src_obj,
    uint32_t src_num,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(interrupt_bind, zx_status_t, /* no attributes */, 4,
    (handle, port_handle, key, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle,
    uint64_t key,
    uint32_t options))

_ZX_SYSCALL_DECL(interrupt_wait, zx_status_t, /* no attributes */, 2,
    (handle, out_timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t* out_timestamp))

_ZX_SYSCALL_DECL(interrupt_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(interrupt_ack, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(interrupt_trigger, zx_status_t, /* no attributes */, 3,
    (handle, options, timestamp), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_time_t timestamp))

_ZX_SYSCALL_DECL(interrupt_bind_vcpu, zx_status_t, /* no attributes */, 3,
    (handle, vcpu, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vcpu,
    uint32_t options))

_ZX_SYSCALL_DECL(iommu_create, zx_status_t, /* no attributes */, 5,
    (resource, type, desc, desc_size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t type,
    const void* desc,
    size_t desc_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(ioports_request, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

_ZX_SYSCALL_DECL(ioports_release, zx_status_t, /* no attributes */, 3,
    (resource, io_addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint16_t io_addr,
    uint32_t len))

_ZX_SYSCALL_DECL(job_create, zx_status_t, /* no attributes */, 3,
    (parent_job, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(job_set_policy, zx_status_t, /* no attributes */, 5,
    (handle, options, topic, policy, policy_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t topic,
    const void* policy,
    uint32_t policy_size))

_ZX_SYSCALL_DECL(job_set_critical, zx_status_t, /* no attributes */, 3,
    (job, options, process), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process))

_ZX_SYSCALL_DECL(ktrace_read, zx_status_t, /* no attributes */, 5,
    (handle, data, offset, data_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    void* data,
    uint32_t offset,
    size_t data_size,
    size_t* actual))

_ZX_SYSCALL_DECL(ktrace_control, zx_status_t, /* no attributes */, 4,
    (handle, action, options, ptr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t action,
    uint32_t options,
    void* ptr))

_ZX_SYSCALL_DECL(ktrace_write, zx_status_t, /* no attributes */, 4,
    (handle, id, arg0, arg1), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t id,
    uint32_t arg0,
    uint32_t arg1))

_ZX_SYSCALL_DECL(nanosleep, zx_status_t, /* no attributes */, 1,
    (deadline), (
    zx_time_t deadline))

_ZX_SYSCALL_DECL(ticks_get, zx_ticks_t, /* no attributes */, 0,
    (), (void))

_ZX_SYSCALL_DECL(ticks_per_second, zx_ticks_t, __CONST, 0,
    (), (void))

_ZX_SYSCALL_DECL(deadline_after, zx_time_t, /* no attributes */, 1,
    (nanoseconds), (
    zx_duration_t nanoseconds))

_ZX_SYSCALL_DECL(vmar_unmap_handle_close_thread_exit, zx_status_t, /* no attributes */, 4,
    (vmar_handle, addr, size, close_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmar_handle,
    zx_vaddr_t addr,
    size_t size,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

_ZX_SYSCALL_DECL(futex_wake_handle_close_thread_exit, void, __NO_RETURN, 4,
    (value_ptr, wake_count, new_value, close_handle), (
    const zx_futex_t* value_ptr,
    uint32_t wake_count,
    int32_t new_value,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

_ZX_SYSCALL_DECL(msi_allocate, zx_status_t, /* no attributes */, 3,
    (handle, count, out_allocation), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t count,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_allocation))

_ZX_SYSCALL_DECL(msi_create, zx_status_t, /* no attributes */, 6,
    (handle, options, msi_id, vmo, vmo_offset, out_interrupt), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint32_t msi_id,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    size_t vmo_offset,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_interrupt))

_ZX_SYSCALL_DECL(mtrace_control, zx_status_t, /* no attributes */, 6,
    (handle, kind, action, options, ptr, ptr_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    uint32_t action,
    uint32_t options,
    void* ptr,
    size_t ptr_size))

_ZX_SYSCALL_DECL(object_wait_one, zx_status_t, /* no attributes */, 4,
    (handle, signals, deadline, observed), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_signals_t signals,
    zx_time_t deadline,
    zx_signals_t* observed))

_ZX_SYSCALL_DECL(object_wait_many, zx_status_t, /* no attributes */, 3,
    (items, num_items, deadline), (
    zx_wait_item_t* items,
    size_t num_items,
    zx_time_t deadline))

_ZX_SYSCALL_DECL(object_wait_async, zx_status_t, /* no attributes */, 5,
    (handle, port, key, signals, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    zx_signals_t signals,
    uint32_t options))

_ZX_SYSCALL_DECL(object_signal, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

_ZX_SYSCALL_DECL(object_signal_peer, zx_status_t, /* no attributes */, 3,
    (handle, clear_mask, set_mask), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t clear_mask,
    uint32_t set_mask))

_ZX_SYSCALL_DECL(object_get_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    void* value,
    size_t value_size))

_ZX_SYSCALL_DECL(object_set_property, zx_status_t, /* no attributes */, 4,
    (handle, property, value, value_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t property,
    const void* value,
    size_t value_size))

_ZX_SYSCALL_DECL(object_get_info, zx_status_t, /* no attributes */, 6,
    (handle, topic, buffer, buffer_size, actual, avail), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t topic,
    void* buffer,
    size_t buffer_size,
    size_t* actual,
    size_t* avail))

_ZX_SYSCALL_DECL(object_get_child, zx_status_t, /* no attributes */, 4,
    (handle, koid, rights, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t koid,
    zx_rights_t rights,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(object_set_profile, zx_status_t, /* no attributes */, 3,
    (handle, profile, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t profile,
    uint32_t options))

_ZX_SYSCALL_DECL(pager_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(pager_create_vmo, zx_status_t, /* no attributes */, 6,
    (pager, options, port, key, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port,
    uint64_t key,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(pager_detach_vmo, zx_status_t, /* no attributes */, 2,
    (pager, vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo))

_ZX_SYSCALL_DECL(pager_supply_pages, zx_status_t, /* no attributes */, 6,
    (pager, pager_vmo, offset, length, aux_vmo, aux_offset), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t aux_vmo,
    uint64_t aux_offset))

_ZX_SYSCALL_DECL(pager_op_range, zx_status_t, /* no attributes */, 6,
    (pager, op, pager_vmo, offset, length, data), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
    uint32_t op,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo,
    uint64_t offset,
    uint64_t length,
    uint64_t data))

_ZX_SYSCALL_DECL(pc_firmware_tables, zx_status_t, /* no attributes */, 3,
    (handle, acpi_rsdp, smbios), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_paddr_t* acpi_rsdp,
    zx_paddr_t* smbios))

_ZX_SYSCALL_DECL(pci_get_nth_device, zx_status_t, /* no attributes */, 4,
    (handle, index, out_info, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t index,
    zx_pcie_device_info_t* out_info,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_enable_bus_master, zx_status_t, /* no attributes */, 2,
    (handle, enable), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t enable))

_ZX_SYSCALL_DECL(pci_reset_device, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(pci_config_read, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, out_val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    uint32_t* out_val))

_ZX_SYSCALL_DECL(pci_config_write, zx_status_t, /* no attributes */, 4,
    (handle, offset, width, val), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint16_t offset,
    size_t width,
    uint32_t val))

_ZX_SYSCALL_DECL(pci_cfg_pio_rw, zx_status_t, /* no attributes */, 8,
    (handle, bus, dev, func, offset, val, width, write), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint8_t bus,
    uint8_t dev,
    uint8_t func,
    uint8_t offset,
    uint32_t* val,
    size_t width,
    uint32_t write))

_ZX_SYSCALL_DECL(pci_get_bar, zx_status_t, /* no attributes */, 4,
    (handle, bar_num, out_bar, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t bar_num,
    zx_pci_bar_t* out_bar,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_map_interrupt, zx_status_t, /* no attributes */, 3,
    (handle, which_irq, out_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    int32_t which_irq,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_query_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, out_max_irqs), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    uint32_t* out_max_irqs))

_ZX_SYSCALL_DECL(pci_set_irq_mode, zx_status_t, /* no attributes */, 3,
    (handle, mode, requested_irq_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mode,
    uint32_t requested_irq_count))

_ZX_SYSCALL_DECL(pci_init, zx_status_t, /* no attributes */, 3,
    (handle, init_buf, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_pci_init_arg_t* init_buf,
    uint32_t len))

_ZX_SYSCALL_DECL(pci_add_subtract_io_range, zx_status_t, /* no attributes */, 5,
    (handle, mmio, base, len, add), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t mmio,
    uint64_t base,
    uint64_t len,
    uint32_t add))

_ZX_SYSCALL_DECL(pmt_unpin, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(port_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(port_queue, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(port_wait, zx_status_t, /* no attributes */, 3,
    (handle, deadline, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(port_cancel, zx_status_t, /* no attributes */, 3,
    (handle, source, key), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t source,
    uint64_t key))

_ZX_SYSCALL_DECL(process_exit, void, __NO_RETURN, 1,
    (retcode), (
    int64_t retcode))

_ZX_SYSCALL_DECL(process_create, zx_status_t, /* no attributes */, 6,
    (job, name, name_size, options, proc_handle, vmar_handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job,
    const char* name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* proc_handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

_ZX_SYSCALL_DECL(process_start, zx_status_t, /* no attributes */, 6,
    (handle, thread, entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t thread,
    zx_vaddr_t entry,
    zx_vaddr_t stack,
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t arg1,
    uintptr_t arg2))

_ZX_SYSCALL_DECL(process_read_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    void* buffer,
    size_t buffer_size,
    size_t* actual))

_ZX_SYSCALL_DECL(process_write_memory, zx_status_t, /* no attributes */, 5,
    (handle, vaddr, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t vaddr,
    const void* buffer,
    size_t buffer_size,
    size_t* actual))

_ZX_SYSCALL_DECL(profile_create, zx_status_t, /* no attributes */, 4,
    (root_job, options, profile, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t options,
    const zx_profile_info_t* profile,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(resource_create, zx_status_t, /* no attributes */, 7,
    (parent_rsrc, options, base, size, name, name_size, resource_out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_rsrc,
    uint32_t options,
    uint64_t base,
    size_t size,
    const char* name,
    size_t name_size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* resource_out))

_ZX_SYSCALL_DECL(smc_call, zx_status_t, /* no attributes */, 3,
    (handle, parameters, out_smc_result), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const zx_smc_parameters_t* parameters,
    zx_smc_result_t* out_smc_result))

_ZX_SYSCALL_DECL(socket_create, zx_status_t, /* no attributes */, 3,
    (options, out0, out1), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(socket_write, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const void* buffer,
    size_t buffer_size,
    size_t* actual))

_ZX_SYSCALL_DECL(socket_read, zx_status_t, /* no attributes */, 5,
    (handle, options, buffer, buffer_size, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    void* buffer,
    size_t buffer_size,
    size_t* actual))

_ZX_SYSCALL_DECL(socket_set_disposition, zx_status_t, /* no attributes */, 3,
    (handle, disposition, disposition_peer), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t disposition,
    uint32_t disposition_peer))

_ZX_SYSCALL_DECL(stream_create, zx_status_t, /* no attributes */, 4,
    (options, vmo, seek, out_stream), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    zx_off_t seek,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_stream))

_ZX_SYSCALL_DECL(stream_writev, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_writev_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    const zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_readv, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_readv_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_seek, zx_status_t, /* no attributes */, 4,
    (handle, whence, offset, out_seek), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_stream_seek_origin_t whence,
    int64_t offset,
    zx_off_t* out_seek))

_ZX_SYSCALL_DECL(system_get_dcache_line_size, uint32_t, __CONST, 0,
    (), (void))

_ZX_SYSCALL_DECL(system_get_num_cpus, uint32_t, __CONST, 0,
    (), (void))

_ZX_SYSCALL_DECL(system_get_version_string, zx_string_view_t, __CONST, 0,
    (), (void))

_ZX_SYSCALL_DECL(system_get_page_size, uint32_t, __CONST, 0,
    (), (void))

_ZX_SYSCALL_DECL(system_get_physmem, uint64_t, /* no attributes */, 0,
    (), (void))

_ZX_SYSCALL_DECL(system_get_features, zx_status_t, /* no attributes */, 2,
    (kind, features), (
    uint32_t kind,
    uint32_t* features))

_ZX_SYSCALL_DECL(system_get_event, zx_status_t, /* no attributes */, 3,
    (root_job, kind, event), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job,
    uint32_t kind,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* event))

_ZX_SYSCALL_DECL(system_set_performance_info, zx_status_t, /* no attributes */, 4,
    (resource, topic, info, count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    const void* info,
    size_t count))

_ZX_SYSCALL_DECL(system_get_performance_info, zx_status_t, /* no attributes */, 5,
    (resource, topic, count, info, output_count), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t topic,
    size_t count,
    void* info,
    size_t* output_count))

_ZX_SYSCALL_DECL(system_mexec, zx_status_t, /* no attributes */, 3,
    (resource, kernel_vmo, bootimage_vmo), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t kernel_vmo,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bootimage_vmo))

_ZX_SYSCALL_DECL(system_mexec_payload_get, zx_status_t, /* no attributes */, 3,
    (resource, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(system_powerctl, zx_status_t, /* no attributes */, 3,
    (resource, cmd, arg), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    uint32_t cmd,
    const zx_system_powerctl_arg_t* arg))

_ZX_SYSCALL_DECL(task_suspend, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

_ZX_SYSCALL_DECL(task_suspend_token, zx_status_t, /* no attributes */, 2,
    (handle, token), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

_ZX_SYSCALL_DECL(task_create_exception_channel, zx_status_t, /* no attributes */, 3,
    (handle, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(task_kill, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(thread_exit, void, __NO_RETURN, 0,
    (), (void))

_ZX_SYSCALL_DECL(thread_create, zx_status_t, /* no attributes */, 5,
    (process, name, name_size, options, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process,
    const char* name,
    size_t name_size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(thread_start, zx_status_t, /* no attributes */, 5,
    (handle, thread_entry, stack, arg1, arg2), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t thread_entry,
    zx_vaddr_t stack,
    uintptr_t arg1,
    uintptr_t arg2))

_ZX_SYSCALL_DECL(thread_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(thread_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    const void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(thread_legacy_yield, zx_status_t, /* no attributes */, 1,
    (options), (
    uint32_t options))

_ZX_SYSCALL_DECL(timer_create, zx_status_t, /* no attributes */, 3,
    (options, clock_id, out), (
    uint32_t options,
    zx_clock_t clock_id,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(timer_set, zx_status_t, /* no attributes */, 3,
    (handle, deadline, slack), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t deadline,
    zx_duration_t slack))

_ZX_SYSCALL_DECL(timer_cancel, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vcpu_create, zx_status_t, /* no attributes */, 4,
    (guest, options, entry, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t guest,
    uint32_t options,
    zx_vaddr_t entry,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vcpu_enter, zx_status_t, /* no attributes */, 2,
    (handle, packet), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(vcpu_kick, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vcpu_interrupt, zx_status_t, /* no attributes */, 2,
    (handle, vector), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t vector))

_ZX_SYSCALL_DECL(vcpu_read_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vcpu_write_state, zx_status_t, /* no attributes */, 4,
    (handle, kind, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t kind,
    const void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vmar_allocate, zx_status_t, /* no attributes */, 6,
    (parent_vmar, options, offset, size, child_vmar, child_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_vmar,
    zx_vm_option_t options,
    size_t offset,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* child_vmar,
    zx_vaddr_t* child_addr))

_ZX_SYSCALL_DECL(vmar_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vmar_map, zx_status_t, /* no attributes */, 7,
    (handle, options, vmar_offset, vmo, vmo_offset, len, mapped_addr), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    size_t vmar_offset,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
    uint64_t vmo_offset,
    size_t len,
    zx_vaddr_t* mapped_addr))

_ZX_SYSCALL_DECL(vmar_unmap, zx_status_t, /* no attributes */, 3,
    (handle, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vaddr_t addr,
    size_t len))

_ZX_SYSCALL_DECL(vmar_protect, zx_status_t, /* no attributes */, 4,
    (handle, options, addr, len), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_vm_option_t options,
    zx_vaddr_t addr,
    size_t len))

_ZX_SYSCALL_DECL(vmar_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, address, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    zx_vaddr_t address,
    size_t size,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_create, zx_status_t, /* no attributes */, 3,
    (size, options, out), (
    uint64_t size,
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_read, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    void* buffer,
    uint64_t offset,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_write, zx_status_t, /* no attributes */, 4,
    (handle, buffer, offset, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    const void* buffer,
    uint64_t offset,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_get_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t* size))

_ZX_SYSCALL_DECL(vmo_set_size, zx_status_t, /* no attributes */, 2,
    (handle, size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint64_t size))

_ZX_SYSCALL_DECL(vmo_op_range, zx_status_t, /* no attributes */, 6,
    (handle, op, offset, size, buffer, buffer_size), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t op,
    uint64_t offset,
    uint64_t size,
    void* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_create_child, zx_status_t, /* no attributes */, 5,
    (handle, options, offset, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    uint64_t offset,
    uint64_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_set_cache_policy, zx_status_t, /* no attributes */, 2,
    (handle, cache_policy), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t cache_policy))

_ZX_SYSCALL_DECL(vmo_replace_as_executable, zx_status_t, /* no attributes */, 3,
    (handle, vmex, out), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmex,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_create_contiguous, zx_status_t, /* no attributes */, 4,
    (bti, size, alignment_log2, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bti,
    size_t size,
    uint32_t alignment_log2,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_create_physical, zx_status_t, /* no attributes */, 4,
    (resource, paddr, size, out), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
    zx_paddr_t paddr,
    size_t size,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

----- public-header.h END -----


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

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

// re-export the types defined in the fuchsia-zircon-types crate
pub use fuchsia_zircon_types::*;
// only link against zircon when targeting Fuchsia
#[cfg(target_os = "fuchsia")]
#[link(name = "zircon")]
extern {
    pub fn zx_bti_create(
        iommu: zx_handle_t,
        options: u32,
        bti_id: u64,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_bti_pin(
        handle: zx_handle_t,
        options: u32,
        vmo: zx_handle_t,
        offset: u64,
        size: u64,
        addrs: *mut zx_paddr_t,
        num_addrs: usize,
        pmt: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_bti_release_quarantine(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_cache_flush(
        addr: *const u8,
        size: usize,
        options: u32
        ) -> zx_status_t;

    pub fn zx_channel_create(
        options: u32,
        out0: *mut zx_handle_t,
        out1: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_channel_read(
        handle: zx_handle_t,
        options: u32,
        bytes: *mut u8,
        handles: *mut zx_handle_t,
        num_bytes: u32,
        num_handles: u32,
        actual_bytes: *mut u32,
        actual_handles: *mut u32
        ) -> zx_status_t;

    pub fn zx_channel_read_etc(
        handle: zx_handle_t,
        options: u32,
        bytes: *mut u8,
        handles: *mut zx_handle_info_t,
        num_bytes: u32,
        num_handles: u32,
        actual_bytes: *mut u32,
        actual_handles: *mut u32
        ) -> zx_status_t;

    pub fn zx_channel_write(
        handle: zx_handle_t,
        options: u32,
        bytes: *const u8,
        num_bytes: u32,
        handles: *const zx_handle_t,
        num_handles: u32
        ) -> zx_status_t;

    pub fn zx_channel_write_etc(
        handle: zx_handle_t,
        options: u32,
        bytes: *const u8,
        num_bytes: u32,
        handles: *mut zx_handle_disposition_t,
        num_handles: u32
        ) -> zx_status_t;

    pub fn zx_channel_call(
        handle: zx_handle_t,
        options: u32,
        deadline: zx_time_t,
        args: *const zx_channel_call_args_t,
        actual_bytes: *mut u32,
        actual_handles: *mut u32
        ) -> zx_status_t;

    pub fn zx_channel_call_etc(
        handle: zx_handle_t,
        options: u32,
        deadline: zx_time_t,
        args: *mut zx_channel_call_etc_args_t,
        actual_bytes: *mut u32,
        actual_handles: *mut u32
        ) -> zx_status_t;

    pub fn zx_clock_get_monotonic(
        ) -> zx_time_t;

    pub fn zx_clock_create(
        options: u64,
        args: *const u8,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_clock_read(
        handle: zx_handle_t,
        now: *mut zx_time_t
        ) -> zx_status_t;

    pub fn zx_clock_get_details(
        handle: zx_handle_t,
        options: u64,
        details: *mut u8
        ) -> zx_status_t;

    pub fn zx_clock_update(
        handle: zx_handle_t,
        options: u64,
        args: *const u8
        ) -> zx_status_t;

    pub fn zx_cprng_draw(
        buffer: *mut u8,
        buffer_size: usize
        );

    pub fn zx_cprng_add_entropy(
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_debug_read(
        handle: zx_handle_t,
        buffer: *mut u8,
        buffer_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_debug_write(
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_debug_send_command(
        resource: zx_handle_t,
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_debuglog_create(
        resource: zx_handle_t,
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_debuglog_write(
        handle: zx_handle_t,
        options: u32,
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_debuglog_read(
        handle: zx_handle_t,
        options: u32,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_event_create(
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_eventpair_create(
        options: u32,
        out0: *mut zx_handle_t,
        out1: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_exception_get_thread(
        handle: zx_handle_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_exception_get_process(
        handle: zx_handle_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_fifo_create(
        elem_count: usize,
        elem_size: usize,
        options: u32,
        out0: *mut zx_handle_t,
        out1: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_fifo_read(
        handle: zx_handle_t,
        elem_size: usize,
        data: *mut u8,
        data_size: usize,
        actual_count: *mut usize
        ) -> zx_status_t;

    pub fn zx_fifo_write(
        handle: zx_handle_t,
        elem_size: usize,
        data: *const u8,
        count: usize,
        actual_count: *mut usize
        ) -> zx_status_t;

    pub fn zx_framebuffer_get_info(
        resource: zx_handle_t,
        format: *mut u32,
        width: *mut u32,
        height: *mut u32,
        stride: *mut u32
        ) -> zx_status_t;

    pub fn zx_framebuffer_set_range(
        resource: zx_handle_t,
        vmo: zx_handle_t,
        len: u32,
        format: u32,
        width: u32,
        height: u32,
        stride: u32
        ) -> zx_status_t;

    pub fn zx_futex_wait(
        value_ptr: *const zx_futex_t,
        current_value: zx_futex_t,
        new_futex_owner: zx_handle_t,
        deadline: zx_time_t
        ) -> zx_status_t;

    pub fn zx_futex_wake(
        value_ptr: *const zx_futex_t,
        wake_count: u32
        ) -> zx_status_t;

    pub fn zx_futex_requeue(
        value_ptr: *const zx_futex_t,
        wake_count: u32,
        current_value: zx_futex_t,
        requeue_ptr: *const zx_futex_t,
        requeue_count: u32,
        new_requeue_owner: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_futex_wake_single_owner(
        value_ptr: *const zx_futex_t
        ) -> zx_status_t;

    pub fn zx_futex_requeue_single_owner(
        value_ptr: *const zx_futex_t,
        current_value: zx_futex_t,
        requeue_ptr: *const zx_futex_t,
        requeue_count: u32,
        new_requeue_owner: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_futex_get_owner(
        value_ptr: *const zx_futex_t,
        koid: *mut zx_koid_t
        ) -> zx_status_t;

    pub fn zx_guest_create(
        resource: zx_handle_t,
        options: u32,
        guest_handle: *mut zx_handle_t,
        vmar_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_guest_set_trap(
        handle: zx_handle_t,
        kind: u32,
        addr: zx_vaddr_t,
        size: usize,
        port_handle: zx_handle_t,
        key: u64
        ) -> zx_status_t;

    pub fn zx_handle_close(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_handle_close_many(
        handles: *const zx_handle_t,
        num_handles: usize
        ) -> zx_status_t;

    pub fn zx_handle_duplicate(
        handle: zx_handle_t,
        rights: zx_rights_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_handle_replace(
        handle: zx_handle_t,
        rights: zx_rights_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_interrupt_create(
        src_obj: zx_handle_t,
        src_num: u32,
        options: u32,
        out_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_interrupt_bind(
        handle: zx_handle_t,
        port_handle: zx_handle_t,
        key: u64,
        options: u32
        ) -> zx_status_t;

    pub fn zx_interrupt_wait(
        handle: zx_handle_t,
        out_timestamp: *mut zx_time_t
        ) -> zx_status_t;

    pub fn zx_interrupt_destroy(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_interrupt_ack(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_interrupt_trigger(
        handle: zx_handle_t,
        options: u32,
        timestamp: zx_time_t
        ) -> zx_status_t;

    pub fn zx_interrupt_bind_vcpu(
        handle: zx_handle_t,
        vcpu: zx_handle_t,
        options: u32
        ) -> zx_status_t;

    pub fn zx_iommu_create(
        resource: zx_handle_t,
        ty: u32,
        desc: *const u8,
        desc_size: usize,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_ioports_request(
        resource: zx_handle_t,
        io_addr: u16,
        len: u32
        ) -> zx_status_t;

    pub fn zx_ioports_release(
        resource: zx_handle_t,
        io_addr: u16,
        len: u32
        ) -> zx_status_t;

    pub fn zx_job_create(
        parent_job: zx_handle_t,
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_job_set_policy(
        handle: zx_handle_t,
        options: u32,
        topic: u32,
        policy: *const u8,
        policy_size: u32
        ) -> zx_status_t;

    pub fn zx_job_set_critical(
        job: zx_handle_t,
        options: u32,
        process: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_ktrace_read(
        handle: zx_handle_t,
        data: *mut u8,
        offset: u32,
        data_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_ktrace_control(
        handle: zx_handle_t,
        action: u32,
        options: u32,
        ptr: *mut u8
        ) -> zx_status_t;

    pub fn zx_ktrace_write(
        handle: zx_handle_t,
        id: u32,
        arg0: u32,
        arg1: u32
        ) -> zx_status_t;

    pub fn zx_nanosleep(
        deadline: zx_time_t
        ) -> zx_status_t;

    pub fn zx_ticks_get(
        ) -> zx_ticks_t;

    pub fn zx_ticks_per_second(
        ) -> zx_ticks_t;

    pub fn zx_deadline_after(
        nanoseconds: zx_duration_t
        ) -> zx_time_t;

    pub fn zx_vmar_unmap_handle_close_thread_exit(
        vmar_handle: zx_handle_t,
        addr: zx_vaddr_t,
        size: usize,
        close_handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_futex_wake_handle_close_thread_exit(
        value_ptr: *const zx_futex_t,
        wake_count: u32,
        new_value: i32,
        close_handle: zx_handle_t
        );

    pub fn zx_msi_allocate(
        handle: zx_handle_t,
        count: u32,
        out_allocation: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_msi_create(
        handle: zx_handle_t,
        options: u32,
        msi_id: u32,
        vmo: zx_handle_t,
        vmo_offset: usize,
        out_interrupt: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_mtrace_control(
        handle: zx_handle_t,
        kind: u32,
        action: u32,
        options: u32,
        ptr: *mut u8,
        ptr_size: usize
        ) -> zx_status_t;

    pub fn zx_object_wait_one(
        handle: zx_handle_t,
        signals: zx_signals_t,
        deadline: zx_time_t,
        observed: *mut zx_signals_t
        ) -> zx_status_t;

    pub fn zx_object_wait_many(
        items: *mut zx_wait_item_t,
        num_items: usize,
        deadline: zx_time_t
        ) -> zx_status_t;

    pub fn zx_object_wait_async(
        handle: zx_handle_t,
        port: zx_handle_t,
        key: u64,
        signals: zx_signals_t,
        options: u32
        ) -> zx_status_t;

    pub fn zx_object_signal(
        handle: zx_handle_t,
        clear_mask: u32,
        set_mask: u32
        ) -> zx_status_t;

    pub fn zx_object_signal_peer(
        handle: zx_handle_t,
        clear_mask: u32,
        set_mask: u32
        ) -> zx_status_t;

    pub fn zx_object_get_property(
        handle: zx_handle_t,
        property: u32,
        value: *mut u8,
        value_size: usize
        ) -> zx_status_t;

    pub fn zx_object_set_property(
        handle: zx_handle_t,
        property: u32,
        value: *const u8,
        value_size: usize
        ) -> zx_status_t;

    pub fn zx_object_get_info(
        handle: zx_handle_t,
        topic: u32,
        buffer: *mut u8,
        buffer_size: usize,
        actual: *mut usize,
        avail: *mut usize
        ) -> zx_status_t;

    pub fn zx_object_get_child(
        handle: zx_handle_t,
        koid: u64,
        rights: zx_rights_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_object_set_profile(
        handle: zx_handle_t,
        profile: zx_handle_t,
        options: u32
        ) -> zx_status_t;

    pub fn zx_pager_create(
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pager_create_vmo(
        pager: zx_handle_t,
        options: u32,
        port: zx_handle_t,
        key: u64,
        size: u64,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pager_detach_vmo(
        pager: zx_handle_t,
        vmo: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pager_supply_pages(
        pager: zx_handle_t,
        pager_vmo: zx_handle_t,
        offset: u64,
        length: u64,
        aux_vmo: zx_handle_t,
        aux_offset: u64
        ) -> zx_status_t;

    pub fn zx_pager_op_range(
        pager: zx_handle_t,
        op: u32,
        pager_vmo: zx_handle_t,
        offset: u64,
        length: u64,
        data: u64
        ) -> zx_status_t;

    pub fn zx_pager_query_dirty_ranges(
        pager: zx_handle_t,
        pager_vmo: zx_handle_t,
        offset: u64,
        length: u64,
        buffer: *mut u8,
        buffer_size: usize,
        actual: *mut usize,
        avail: *mut usize
        ) -> zx_status_t;

    pub fn zx_pager_query_vmo_stats(
        pager: zx_handle_t,
        pager_vmo: zx_handle_t,
        options: u32,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_pc_firmware_tables(
        handle: zx_handle_t,
        acpi_rsdp: *mut zx_paddr_t,
        smbios: *mut zx_paddr_t
        ) -> zx_status_t;

    pub fn zx_pci_get_nth_device(
        handle: zx_handle_t,
        index: u32,
        out_info: *mut zx_pcie_device_info_t,
        out_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pci_enable_bus_master(
        handle: zx_handle_t,
        enable: u32
        ) -> zx_status_t;

    pub fn zx_pci_reset_device(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pci_config_read(
        handle: zx_handle_t,
        offset: u16,
        width: usize,
        out_val: *mut u32
        ) -> zx_status_t;

    pub fn zx_pci_config_write(
        handle: zx_handle_t,
        offset: u16,
        width: usize,
        val: u32
        ) -> zx_status_t;

    pub fn zx_pci_cfg_pio_rw(
        handle: zx_handle_t,
        bus: u8,
        dev: u8,
        func: u8,
        offset: u8,
        val: *mut u32,
        width: usize,
        write: u32
        ) -> zx_status_t;

    pub fn zx_pci_get_bar(
        handle: zx_handle_t,
        bar_num: u32,
        out_bar: *mut zx_pci_bar_t,
        out_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pci_map_interrupt(
        handle: zx_handle_t,
        which_irq: i32,
        out_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_pci_query_irq_mode(
        handle: zx_handle_t,
        mode: u32,
        out_max_irqs: *mut u32
        ) -> zx_status_t;

    pub fn zx_pci_set_irq_mode(
        handle: zx_handle_t,
        mode: u32,
        requested_irq_count: u32
        ) -> zx_status_t;

    pub fn zx_pci_init(
        handle: zx_handle_t,
        init_buf: *const zx_pci_init_arg_t,
        len: u32
        ) -> zx_status_t;

    pub fn zx_pci_add_subtract_io_range(
        handle: zx_handle_t,
        mmio: u32,
        base: u64,
        len: u64,
        add: u32
        ) -> zx_status_t;

    pub fn zx_pmt_unpin(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_port_create(
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_port_queue(
        handle: zx_handle_t,
        packet: *const zx_port_packet_t
        ) -> zx_status_t;

    pub fn zx_port_wait(
        handle: zx_handle_t,
        deadline: zx_time_t,
        packet: *mut zx_port_packet_t
        ) -> zx_status_t;

    pub fn zx_port_cancel(
        handle: zx_handle_t,
        source: zx_handle_t,
        key: u64
        ) -> zx_status_t;

    pub fn zx_process_exit(
        retcode: i64
        );

    pub fn zx_process_create(
        job: zx_handle_t,
        name: *const u8,
        name_size: usize,
        options: u32,
        proc_handle: *mut zx_handle_t,
        vmar_handle: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_process_start(
        handle: zx_handle_t,
        thread: zx_handle_t,
        entry: zx_vaddr_t,
        stack: zx_vaddr_t,
        arg1: zx_handle_t,
        arg2: usize
        ) -> zx_status_t;

    pub fn zx_process_read_memory(
        handle: zx_handle_t,
        vaddr: zx_vaddr_t,
        buffer: *mut u8,
        buffer_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_process_write_memory(
        handle: zx_handle_t,
        vaddr: zx_vaddr_t,
        buffer: *const u8,
        buffer_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_profile_create(
        root_job: zx_handle_t,
        options: u32,
        profile: *const zx_profile_info_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_resource_create(
        parent_rsrc: zx_handle_t,
        options: u32,
        base: u64,
        size: usize,
        name: *const u8,
        name_size: usize,
        resource_out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_smc_call(
        handle: zx_handle_t,
        parameters: *const zx_smc_parameters_t,
        out_smc_result: *mut zx_smc_result_t
        ) -> zx_status_t;

    pub fn zx_socket_create(
        options: u32,
        out0: *mut zx_handle_t,
        out1: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_socket_write(
        handle: zx_handle_t,
        options: u32,
        buffer: *const u8,
        buffer_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_socket_read(
        handle: zx_handle_t,
        options: u32,
        buffer: *mut u8,
        buffer_size: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_socket_set_disposition(
        handle: zx_handle_t,
        disposition: u32,
        disposition_peer: u32
        ) -> zx_status_t;

    pub fn zx_stream_create(
        options: u32,
        vmo: zx_handle_t,
        seek: zx_off_t,
        out_stream: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_stream_writev(
        handle: zx_handle_t,
        options: u32,
        vector: *const zx_iovec_t,
        num_vector: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_stream_writev_at(
        handle: zx_handle_t,
        options: u32,
        offset: zx_off_t,
        vector: *const zx_iovec_t,
        num_vector: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_stream_readv(
        handle: zx_handle_t,
        options: u32,
        vector: *mut zx_iovec_t,
        num_vector: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_stream_readv_at(
        handle: zx_handle_t,
        options: u32,
        offset: zx_off_t,
        vector: *mut zx_iovec_t,
        num_vector: usize,
        actual: *mut usize
        ) -> zx_status_t;

    pub fn zx_stream_seek(
        handle: zx_handle_t,
        whence: zx_stream_seek_origin_t,
        offset: i64,
        out_seek: *mut zx_off_t
        ) -> zx_status_t;

    pub fn zx_syscall_test_0(
        ) -> zx_status_t;

    pub fn zx_syscall_test_1(
        a: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_2(
        a: i32,
        b: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_3(
        a: i32,
        b: i32,
        c: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_4(
        a: i32,
        b: i32,
        c: i32,
        d: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_5(
        a: i32,
        b: i32,
        c: i32,
        d: i32,
        e: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_6(
        a: i32,
        b: i32,
        c: i32,
        d: i32,
        e: i32,
        f: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_7(
        a: i32,
        b: i32,
        c: i32,
        d: i32,
        e: i32,
        f: i32,
        g: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_8(
        a: i32,
        b: i32,
        c: i32,
        d: i32,
        e: i32,
        f: i32,
        g: i32,
        h: i32
        ) -> zx_status_t;

    pub fn zx_syscall_next_1(
        arg: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_wrapper(
        a: i32,
        b: i32,
        c: i32
        ) -> zx_status_t;

    pub fn zx_syscall_test_handle_create(
        return_value: zx_status_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_syscall_test_widening_unsigned_narrow(
        a: u64,
        b: u32,
        c: u16,
        d: u8
        ) -> u64;

    pub fn zx_syscall_test_widening_signed_narrow(
        a: i64,
        b: i32,
        c: i16,
        d: i8
        ) -> i64;

    pub fn zx_syscall_test_widening_unsigned_wide(
        a: u64,
        b: u32,
        c: u16,
        d: u8
        ) -> u64;

    pub fn zx_syscall_test_widening_signed_wide(
        a: i64,
        b: i32,
        c: i16,
        d: i8
        ) -> i64;

    pub fn zx_system_get_dcache_line_size(
        ) -> u32;

    pub fn zx_system_get_num_cpus(
        ) -> u32;

    pub fn zx_system_get_version_string(
        ) -> zx_string_view_t;

    pub fn zx_system_get_page_size(
        ) -> u32;

    pub fn zx_system_get_physmem(
        ) -> u64;

    pub fn zx_system_get_features(
        kind: u32,
        features: *mut u32
        ) -> zx_status_t;

    pub fn zx_system_get_event(
        root_job: zx_handle_t,
        kind: u32,
        event: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_system_set_performance_info(
        resource: zx_handle_t,
        topic: u32,
        info: *const u8,
        count: usize
        ) -> zx_status_t;

    pub fn zx_system_get_performance_info(
        resource: zx_handle_t,
        topic: u32,
        count: usize,
        info: *mut u8,
        output_count: *mut usize
        ) -> zx_status_t;

    pub fn zx_system_mexec(
        resource: zx_handle_t,
        kernel_vmo: zx_handle_t,
        bootimage_vmo: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_system_mexec_payload_get(
        resource: zx_handle_t,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_system_powerctl(
        resource: zx_handle_t,
        cmd: u32,
        arg: *const zx_system_powerctl_arg_t
        ) -> zx_status_t;

    pub fn zx_task_suspend(
        handle: zx_handle_t,
        token: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_task_suspend_token(
        handle: zx_handle_t,
        token: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_task_create_exception_channel(
        handle: zx_handle_t,
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_task_kill(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_thread_exit(
        );

    pub fn zx_thread_create(
        process: zx_handle_t,
        name: *const u8,
        name_size: usize,
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_thread_start(
        handle: zx_handle_t,
        thread_entry: zx_vaddr_t,
        stack: zx_vaddr_t,
        arg1: usize,
        arg2: usize
        ) -> zx_status_t;

    pub fn zx_thread_read_state(
        handle: zx_handle_t,
        kind: u32,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_thread_write_state(
        handle: zx_handle_t,
        kind: u32,
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_thread_legacy_yield(
        options: u32
        ) -> zx_status_t;

    pub fn zx_timer_create(
        options: u32,
        clock_id: zx_clock_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_timer_set(
        handle: zx_handle_t,
        deadline: zx_time_t,
        slack: zx_duration_t
        ) -> zx_status_t;

    pub fn zx_timer_cancel(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vcpu_create(
        guest: zx_handle_t,
        options: u32,
        entry: zx_vaddr_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vcpu_enter(
        handle: zx_handle_t,
        packet: *mut zx_port_packet_t
        ) -> zx_status_t;

    pub fn zx_vcpu_kick(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vcpu_interrupt(
        handle: zx_handle_t,
        vector: u32
        ) -> zx_status_t;

    pub fn zx_vcpu_read_state(
        handle: zx_handle_t,
        kind: u32,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vcpu_write_state(
        handle: zx_handle_t,
        kind: u32,
        buffer: *const u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vmar_allocate(
        parent_vmar: zx_handle_t,
        options: zx_vm_option_t,
        offset: usize,
        size: usize,
        child_vmar: *mut zx_handle_t,
        child_addr: *mut zx_vaddr_t
        ) -> zx_status_t;

    pub fn zx_vmar_destroy(
        handle: zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vmar_map(
        handle: zx_handle_t,
        options: zx_vm_option_t,
        vmar_offset: usize,
        vmo: zx_handle_t,
        vmo_offset: u64,
        len: usize,
        mapped_addr: *mut zx_vaddr_t
        ) -> zx_status_t;

    pub fn zx_vmar_unmap(
        handle: zx_handle_t,
        addr: zx_vaddr_t,
        len: usize
        ) -> zx_status_t;

    pub fn zx_vmar_protect(
        handle: zx_handle_t,
        options: zx_vm_option_t,
        addr: zx_vaddr_t,
        len: usize
        ) -> zx_status_t;

    pub fn zx_vmar_op_range(
        handle: zx_handle_t,
        op: u32,
        address: zx_vaddr_t,
        size: usize,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vmo_create(
        size: u64,
        options: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vmo_read(
        handle: zx_handle_t,
        buffer: *mut u8,
        offset: u64,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vmo_write(
        handle: zx_handle_t,
        buffer: *const u8,
        offset: u64,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vmo_get_size(
        handle: zx_handle_t,
        size: *mut u64
        ) -> zx_status_t;

    pub fn zx_vmo_set_size(
        handle: zx_handle_t,
        size: u64
        ) -> zx_status_t;

    pub fn zx_vmo_op_range(
        handle: zx_handle_t,
        op: u32,
        offset: u64,
        size: u64,
        buffer: *mut u8,
        buffer_size: usize
        ) -> zx_status_t;

    pub fn zx_vmo_create_child(
        handle: zx_handle_t,
        options: u32,
        offset: u64,
        size: u64,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vmo_set_cache_policy(
        handle: zx_handle_t,
        cache_policy: u32
        ) -> zx_status_t;

    pub fn zx_vmo_replace_as_executable(
        handle: zx_handle_t,
        vmex: zx_handle_t,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vmo_create_contiguous(
        bti: zx_handle_t,
        size: usize,
        alignment_log2: u32,
        out: *mut zx_handle_t
        ) -> zx_status_t;

    pub fn zx_vmo_create_physical(
        resource: zx_handle_t,
        paddr: zx_paddr_t,
        size: usize,
        out: *mut zx_handle_t
        ) -> zx_status_t;

}
----- rust.rs END -----


----- syscall-numbers.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#define ZX_SYS_bti_create 0
#define ZX_SYS_bti_pin 1
#define ZX_SYS_bti_release_quarantine 2
#define ZX_SYS_channel_create 3
#define ZX_SYS_channel_read 4
#define ZX_SYS_channel_read_etc 5
#define ZX_SYS_channel_write 6
#define ZX_SYS_channel_write_etc 7
#define ZX_SYS_channel_call_noretry 8
#define ZX_SYS_channel_call_finish 9
#define ZX_SYS_channel_call_etc_noretry 10
#define ZX_SYS_channel_call_etc_finish 11
#define ZX_SYS_clock_get_monotonic_via_kernel 12
#define ZX_SYS_clock_create 13
#define ZX_SYS_clock_read 14
#define ZX_SYS_clock_get_details 15
#define ZX_SYS_clock_update 16
#define ZX_SYS_cprng_draw_once 17
#define ZX_SYS_cprng_add_entropy 18
#define ZX_SYS_debug_read 19
#define ZX_SYS_debug_write 20
#define ZX_SYS_debug_send_command 21
#define ZX_SYS_debuglog_create 22
#define ZX_SYS_debuglog_write 23
#define ZX_SYS_debuglog_read 24
#define ZX_SYS_event_create 25
#define ZX_SYS_eventpair_create 26
#define ZX_SYS_exception_get_thread 27
#define ZX_SYS_exception_get_process 28
#define ZX_SYS_fifo_create 29
#define ZX_SYS_fifo_read 30
#define ZX_SYS_fifo_write 31
#define ZX_SYS_framebuffer_get_info 32
#define ZX_SYS_framebuffer_set_range 33
#define ZX_SYS_futex_wait 34
#define ZX_SYS_futex_wake 35
#define ZX_SYS_futex_requeue 36
#define ZX_SYS_futex_wake_single_owner 37
#define ZX_SYS_futex_requeue_single_owner 38
#define ZX_SYS_futex_get_owner 39
#define ZX_SYS_guest_create 40
#define ZX_SYS_guest_set_trap 41
#define ZX_SYS_handle_close 42
#define ZX_SYS_handle_close_many 43
#define ZX_SYS_handle_duplicate 44
#define ZX_SYS_handle_replace 45
#define ZX_SYS_interrupt_create 46
#define ZX_SYS_interrupt_bind 47
#define ZX_SYS_interrupt_wait 48
#define ZX_SYS_interrupt_destroy 49
#define ZX_SYS_interrupt_ack 50
#define ZX_SYS_interrupt_trigger 51
#define ZX_SYS_interrupt_bind_vcpu 52
#define ZX_SYS_iommu_create 53
#define ZX_SYS_ioports_request 54
#define ZX_SYS_ioports_release 55
#define ZX_SYS_job_create 56
#define ZX_SYS_job_set_policy 57
#define ZX_SYS_job_set_critical 58
#define ZX_SYS_ktrace_read 59
#define ZX_SYS_ktrace_control 60
#define ZX_SYS_ktrace_write 61
#define ZX_SYS_nanosleep 62
#define ZX_SYS_ticks_get_via_kernel 63
#define ZX_SYS_msi_allocate 64
#define ZX_SYS_msi_create 65
#define ZX_SYS_mtrace_control 66
#define ZX_SYS_object_wait_one 67
#define ZX_SYS_object_wait_many 68
#define ZX_SYS_object_wait_async 69
#define ZX_SYS_object_signal 70
#define ZX_SYS_object_signal_peer 71
#define ZX_SYS_object_get_property 72
#define ZX_SYS_object_set_property 73
#define ZX_SYS_object_get_info 74
#define ZX_SYS_object_get_child 75
#define ZX_SYS_object_set_profile 76
#define ZX_SYS_pager_create 77
#define ZX_SYS_pager_create_vmo 78
#define ZX_SYS_pager_detach_vmo 79
#define ZX_SYS_pager_supply_pages 80
#define ZX_SYS_pager_op_range 81
#define ZX_SYS_pager_query_dirty_ranges 82
#define ZX_SYS_pager_query_vmo_stats 83
#define ZX_SYS_pc_firmware_tables 84
#define ZX_SYS_pci_get_nth_device 85
#define ZX_SYS_pci_enable_bus_master 86
#define ZX_SYS_pci_reset_device 87
#define ZX_SYS_pci_config_read 88
#define ZX_SYS_pci_config_write 89
#define ZX_SYS_pci_cfg_pio_rw 90
#define ZX_SYS_pci_get_bar 91
#define ZX_SYS_pci_map_interrupt 92
#define ZX_SYS_pci_query_irq_mode 93
#define ZX_SYS_pci_set_irq_mode 94
#define ZX_SYS_pci_init 95
#define ZX_SYS_pci_add_subtract_io_range 96
#define ZX_SYS_pmt_unpin 97
#define ZX_SYS_port_create 98
#define ZX_SYS_port_queue 99
#define ZX_SYS_port_wait 100
#define ZX_SYS_port_cancel 101
#define ZX_SYS_process_exit 102
#define ZX_SYS_process_create 103
#define ZX_SYS_process_start 104
#define ZX_SYS_process_read_memory 105
#define ZX_SYS_process_write_memory 106
#define ZX_SYS_profile_create 107
#define ZX_SYS_resource_create 108
#define ZX_SYS_smc_call 109
#define ZX_SYS_socket_create 110
#define ZX_SYS_socket_write 111
#define ZX_SYS_socket_read 112
#define ZX_SYS_socket_set_disposition 113
#define ZX_SYS_stream_create 114
#define ZX_SYS_stream_writev 115
#define ZX_SYS_stream_writev_at 116
#define ZX_SYS_stream_readv 117
#define ZX_SYS_stream_readv_at 118
#define ZX_SYS_stream_seek 119
#define ZX_SYS_syscall_test_0 120
#define ZX_SYS_syscall_test_1 121
#define ZX_SYS_syscall_test_2 122
#define ZX_SYS_syscall_test_3 123
#define ZX_SYS_syscall_test_4 124
#define ZX_SYS_syscall_test_5 125
#define ZX_SYS_syscall_test_6 126
#define ZX_SYS_syscall_test_7 127
#define ZX_SYS_syscall_test_8 128
#define ZX_SYS_syscall_next_1 129
#define ZX_SYS_syscall_test_wrapper 130
#define ZX_SYS_syscall_test_handle_create 131
#define ZX_SYS_syscall_test_widening_unsigned_narrow 132
#define ZX_SYS_syscall_test_widening_signed_narrow 133
#define ZX_SYS_syscall_test_widening_unsigned_wide 134
#define ZX_SYS_syscall_test_widening_signed_wide 135
#define ZX_SYS_system_get_event 136
#define ZX_SYS_system_set_performance_info 137
#define ZX_SYS_system_get_performance_info 138
#define ZX_SYS_system_mexec 139
#define ZX_SYS_system_mexec_payload_get 140
#define ZX_SYS_system_powerctl 141
#define ZX_SYS_task_suspend 142
#define ZX_SYS_task_suspend_token 143
#define ZX_SYS_task_create_exception_channel 144
#define ZX_SYS_task_kill 145
#define ZX_SYS_thread_exit 146
#define ZX_SYS_thread_create 147
#define ZX_SYS_thread_start 148
#define ZX_SYS_thread_read_state 149
#define ZX_SYS_thread_write_state 150
#define ZX_SYS_thread_legacy_yield 151
#define ZX_SYS_timer_create 152
#define ZX_SYS_timer_set 153
#define ZX_SYS_timer_cancel 154
#define ZX_SYS_vcpu_create 155
#define ZX_SYS_vcpu_enter 156
#define ZX_SYS_vcpu_kick 157
#define ZX_SYS_vcpu_interrupt 158
#define ZX_SYS_vcpu_read_state 159
#define ZX_SYS_vcpu_write_state 160
#define ZX_SYS_vmar_allocate 161
#define ZX_SYS_vmar_destroy 162
#define ZX_SYS_vmar_map 163
#define ZX_SYS_vmar_unmap 164
#define ZX_SYS_vmar_protect 165
#define ZX_SYS_vmar_op_range 166
#define ZX_SYS_vmo_create 167
#define ZX_SYS_vmo_read 168
#define ZX_SYS_vmo_write 169
#define ZX_SYS_vmo_get_size 170
#define ZX_SYS_vmo_set_size 171
#define ZX_SYS_vmo_op_range 172
#define ZX_SYS_vmo_create_child 173
#define ZX_SYS_vmo_set_cache_policy 174
#define ZX_SYS_vmo_replace_as_executable 175
#define ZX_SYS_vmo_create_contiguous 176
#define ZX_SYS_vmo_create_physical 177
#define ZX_SYS_COUNT 178
----- syscall-numbers.h END -----


----- testonly-public-header.h START -----
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

#ifndef _ZX_SYSCALL_DECL
#error "<zircon/testonly-syscalls.h> is the public API header"
#endif

_ZX_SYSCALL_DECL(syscall_test_0, zx_status_t, /* no attributes */, 0,
    (), (void))

_ZX_SYSCALL_DECL(syscall_test_1, zx_status_t, /* no attributes */, 1,
    (a), (
    int32_t a))

_ZX_SYSCALL_DECL(syscall_test_2, zx_status_t, /* no attributes */, 2,
    (a, b), (
    int32_t a,
    int32_t b))

_ZX_SYSCALL_DECL(syscall_test_3, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

_ZX_SYSCALL_DECL(syscall_test_4, zx_status_t, /* no attributes */, 4,
    (a, b, c, d), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d))

_ZX_SYSCALL_DECL(syscall_test_5, zx_status_t, /* no attributes */, 5,
    (a, b, c, d, e), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e))

_ZX_SYSCALL_DECL(syscall_test_6, zx_status_t, /* no attributes */, 6,
    (a, b, c, d, e, f), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f))

_ZX_SYSCALL_DECL(syscall_test_7, zx_status_t, /* no attributes */, 7,
    (a, b, c, d, e, f, g), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g))

_ZX_SYSCALL_DECL(syscall_test_8, zx_status_t, /* no attributes */, 8,
    (a, b, c, d, e, f, g, h), (
    int32_t a,
    int32_t b,
    int32_t c,
    int32_t d,
    int32_t e,
    int32_t f,
    int32_t g,
    int32_t h))

_ZX_SYSCALL_DECL(syscall_test_wrapper, zx_status_t, /* no attributes */, 3,
    (a, b, c), (
    int32_t a,
    int32_t b,
    int32_t c))

_ZX_SYSCALL_DECL(syscall_test_handle_create, zx_status_t, /* no attributes */, 2,
    (return_value, out), (
    zx_status_t return_value,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(syscall_test_widening_unsigned_narrow, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

_ZX_SYSCALL_DECL(syscall_test_widening_signed_narrow, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

_ZX_SYSCALL_DECL(syscall_test_widening_unsigned_wide, uint64_t, /* no attributes */, 4,
    (a, b, c, d), (
    uint64_t a,
    uint32_t b,
    uint16_t c,
    uint8_t d))

_ZX_SYSCALL_DECL(syscall_test_widening_signed_wide, int64_t, /* no attributes */, 4,
    (a, b, c, d), (
    int64_t a,
    int32_t b,
    int16_t c,
    int8_t d))

----- testonly-public-header.h END -----


