/*
 * Copyright (c) 2021 EPAM Systems
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <arch/arm64/hypercall.h>
#include <xen/hvm.h>
#include <xen/public/hvm/hvm_op.h>
#include <xen/public/hvm/params.h>

#include <kernel.h>

int hvm_set_parameter(int idx, uint64_t value)
{
	struct xen_hvm_param xhv;

	xhv.domid = DOMID_SELF;
	xhv.index = idx;
	xhv.value = value;

	return HYPERVISOR_hvm_op(HVMOP_set_param, &xhv);
}

int hvm_get_parameter(int idx, uint64_t *value)
{
	int ret = 0;
	struct xen_hvm_param xhv;

	xhv.domid = DOMID_SELF;
	xhv.index = idx;

	ret = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv);
	if (ret < 0)
		return ret;

	*value = xhv.value;
	return ret;
}
