mshyperv.h (1387B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2 3/* 4 * Linux-specific definitions for managing interactions with Microsoft's 5 * Hyper-V hypervisor. The definitions in this file are specific to 6 * the ARM64 architecture. See include/asm-generic/mshyperv.h for 7 * definitions are that architecture independent. 8 * 9 * Definitions that are specified in the Hyper-V Top Level Functional 10 * Spec (TLFS) should not go in this file, but should instead go in 11 * hyperv-tlfs.h. 12 * 13 * Copyright (C) 2021, Microsoft, Inc. 14 * 15 * Author : Michael Kelley <mikelley@microsoft.com> 16 */ 17 18#ifndef _ASM_MSHYPERV_H 19#define _ASM_MSHYPERV_H 20 21#include <linux/types.h> 22#include <linux/arm-smccc.h> 23#include <asm/hyperv-tlfs.h> 24 25/* 26 * Declare calls to get and set Hyper-V VP register values on ARM64, which 27 * requires a hypercall. 28 */ 29 30void hv_set_vpreg(u32 reg, u64 value); 31u64 hv_get_vpreg(u32 reg); 32void hv_get_vpreg_128(u32 reg, struct hv_get_vp_registers_output *result); 33 34static inline void hv_set_register(unsigned int reg, u64 value) 35{ 36 hv_set_vpreg(reg, value); 37} 38 39static inline u64 hv_get_register(unsigned int reg) 40{ 41 return hv_get_vpreg(reg); 42} 43 44/* SMCCC hypercall parameters */ 45#define HV_SMCCC_FUNC_NUMBER 1 46#define HV_FUNC_ID ARM_SMCCC_CALL_VAL( \ 47 ARM_SMCCC_STD_CALL, \ 48 ARM_SMCCC_SMC_64, \ 49 ARM_SMCCC_OWNER_VENDOR_HYP, \ 50 HV_SMCCC_FUNC_NUMBER) 51 52#include <asm-generic/mshyperv.h> 53 54#endif