162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci#ifndef SELFTEST_KVM_UCALL_H
362306a36Sopenharmony_ci#define SELFTEST_KVM_UCALL_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include "kvm_util_base.h"
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#define UCALL_EXIT_REASON       KVM_EXIT_MMIO
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/*
1062306a36Sopenharmony_ci * ucall_exit_mmio_addr holds per-VM values (global data is duplicated by each
1162306a36Sopenharmony_ci * VM), it must not be accessed from host code.
1262306a36Sopenharmony_ci */
1362306a36Sopenharmony_ciextern vm_vaddr_t *ucall_exit_mmio_addr;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistatic inline void ucall_arch_do_ucall(vm_vaddr_t uc)
1662306a36Sopenharmony_ci{
1762306a36Sopenharmony_ci	WRITE_ONCE(*ucall_exit_mmio_addr, uc);
1862306a36Sopenharmony_ci}
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#endif
21