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

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

#include "textflag.h"
// func Sys_clock_get(clock_id uint32, out *Time) Status
TEXT ·Sys_clock_get(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_get(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_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_clock_adjust(handle Handle, clock_id uint32, offset int64) Status
TEXT ·Sys_clock_adjust(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_clock_adjust(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(version *uint8, version_size uint) Status
TEXT ·Sys_system_get_version(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_system_get_version(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_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_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_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, count 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_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 *int, 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_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_shutdown(handle Handle, options uint32) Status
TEXT ·Sys_socket_shutdown(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_socket_shutdown(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_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_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, count uint32) Status
TEXT ·Sys_job_set_policy(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_job_set_policy(SB)

// func Sys_task_bind_exception_port(handle Handle, port Handle, key uint64, options uint32) Status
TEXT ·Sys_task_bind_exception_port(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_bind_exception_port(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_resume_from_exception(handle Handle, port Handle, options uint32) Status
TEXT ·Sys_task_resume_from_exception(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_task_resume_from_exception(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_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_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_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_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_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_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_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint64, size uint64, 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 uint64, vmo Handle, vmo_offset uint64, len uint64, 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 uint64) 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 uint64) Status
TEXT ·Sys_vmar_protect(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_vmar_protect(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_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, count 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_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_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_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_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_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_debug_read(handle Handle, buffer *uint8, buffer_size *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_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_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_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)

// 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_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, addrs_count 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_pmt_unpin(handle Handle) Status
TEXT ·Sys_pmt_unpin(SB),NOSPLIT,$0
	JMP runtime·vdsoCall_zx_pmt_unpin(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_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_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_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_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_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)

