This patch enables FreeBSD to get installed on ARM64 Hyper-V.
Files in aarch64 directory are specific for arm64, and new x86 directory contains files which are for both amd64 and i386.
vmbus.c and hyperv.c has been refactored and parts of the code has been moved to vmbus_aarch64.c and hyperv_aarch64.c for arm64.
Same way vmbus_x86.c and hyperv_x86.c contains same functions for x86.
vmbus.c and hyperv.c contains common code, and to keep similarity, in x86 or in aarch64 some stub functions have been placed.
hyperv_reg.h contains MSR details, in aarch64 we have replaced some of the MSR values with ARM64 Hyper-V specific MSR values.
hyperv_machdep.c contains new hypercall implementations for HvCallGetVpRegisters and HvCallSetVpRegisters using arm smccc hvc abi.
I have introduced new arm smccc hvc 1.2 abi for HvCallGetVpRegisters, as it needs to access beyond x0-x3 registers. The respective assembly code is in smccc_1_2_arm64.S.