openhcl_boot/arch/x86_64/
mod.rs1#![cfg(target_arch = "x86_64")]
5
6mod address_space;
9pub mod hypercall;
10mod memory;
11pub mod snp;
12pub mod tdx;
13mod vp;
14mod vsm;
15
16use crate::host_params::shim_params::IsolationType;
17pub use address_space::TdxHypercallPage;
18pub use memory::setup_vtl2_memory;
19pub use memory::verify_imported_regions_hash;
20use safe_intrinsics::cpuid;
21pub use vp::setup_vtl2_vp;
22pub use vsm::get_isolation_type;
23use x86defs::cpuid::CpuidFunction;
24
25pub fn physical_address_bits(isolation: IsolationType) -> u8 {
26 if isolation.is_hardware_isolated() {
27 unimplemented!("can't trust host cpuid");
28 }
29 const DEFAULT_PHYSICAL_ADDRESS_SIZE: u8 = 32;
30
31 let max_extended = {
32 let result = cpuid(CpuidFunction::ExtendedMaxFunction.0, 0);
33 result.eax
34 };
35 if max_extended >= CpuidFunction::ExtendedAddressSpaceSizes.0 {
36 let result = cpuid(CpuidFunction::ExtendedAddressSpaceSizes.0, 0);
37 (result.eax & 0xFF) as u8
38 } else {
39 DEFAULT_PHYSICAL_ADDRESS_SIZE
40 }
41}
42
43#[cfg(minimal_rt)]
45core::arch::global_asm! {
46 include_str!("entry.S"),
47 relocate = sym minimal_rt::reloc::relocate,
48 start = sym crate::rt::start,
49 stack = sym crate::rt::STACK,
50 STACK_COOKIE = const crate::rt::STACK_COOKIE,
51 STACK_SIZE = const crate::rt::STACK_SIZE,
52}