summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hypervisor_check.adb14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/hypervisor_check.adb b/src/hypervisor_check.adb
index 6a68df0..ff89dc5 100644
--- a/src/hypervisor_check.adb
+++ b/src/hypervisor_check.adb
@@ -24,6 +24,20 @@ package body Hypervisor_Check is
return Result;
end String_of_U32;
+ -- Hypervisors should set the bit 31 of %ecx to 1 in CPUID leaf 1
+ function Hypervisor_Present return Boolean is
+ Registers : CPUID_Registers;
+ ECX : Unsigned_32;
+ begin
+ Registers := CPUID (1);
+ ECX := Shift_Right (Registers(3), 31);
+ if (ecx and 1) = 1 then
+ return True;
+ else
+ return False;
+ end if;
+ end Hypervisor_Present;
+
function Get_Vendor_String return Unbounded_String is
Vendor_String : Unbounded_String;
Registers : CPUID_Registers;