Skip to main content

hyperlight_guest/
layout.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025 The Hyperlight Authors.
3
4#[cfg_attr(target_arch = "x86_64", path = "arch/amd64/layout.rs")]
5#[cfg_attr(target_arch = "aarch64", path = "arch/aarch64/layout.rs")]
6mod arch;
7
8pub use arch::{MAIN_STACK_LIMIT_GVA, MAIN_STACK_TOP_GVA};
9pub fn scratch_size_gva() -> *mut u64 {
10    use hyperlight_common::layout::{SCRATCH_TOP_GVA, SCRATCH_TOP_SIZE_OFFSET};
11    (SCRATCH_TOP_GVA as u64 - SCRATCH_TOP_SIZE_OFFSET + 1) as *mut u64
12}
13pub fn allocator_gva() -> *mut u64 {
14    use hyperlight_common::layout::{SCRATCH_TOP_ALLOCATOR_OFFSET, SCRATCH_TOP_GVA};
15    (SCRATCH_TOP_GVA as u64 - SCRATCH_TOP_ALLOCATOR_OFFSET + 1) as *mut u64
16}
17pub fn snapshot_pt_gpa_base_gva() -> *mut u64 {
18    use hyperlight_common::layout::{SCRATCH_TOP_GVA, SCRATCH_TOP_SNAPSHOT_PT_GPA_BASE_OFFSET};
19    (SCRATCH_TOP_GVA as u64 - SCRATCH_TOP_SNAPSHOT_PT_GPA_BASE_OFFSET + 1) as *mut u64
20}
21pub fn snapshot_generation_gva() -> *mut u64 {
22    use hyperlight_common::layout::{SCRATCH_TOP_GVA, SCRATCH_TOP_SNAPSHOT_GENERATION_OFFSET};
23    (SCRATCH_TOP_GVA as u64 - SCRATCH_TOP_SNAPSHOT_GENERATION_OFFSET + 1) as *mut u64
24}
25pub fn libc_rng_seed_gva() -> *mut u64 {
26    use hyperlight_common::layout::{SCRATCH_TOP_GVA, SCRATCH_TOP_LIBC_RNG_SEED_OFFSET};
27    (SCRATCH_TOP_GVA as u64 - SCRATCH_TOP_LIBC_RNG_SEED_OFFSET + 1) as *mut u64
28}
29pub use arch::{scratch_base_gpa, scratch_base_gva};