Skip to main content

hyperlight_common/
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::{
9    SCRATCH_TOP_GPA, SCRATCH_TOP_GVA, SNAPSHOT_PT_GVA_MAX, SNAPSHOT_PT_GVA_MIN, io_page,
10};
11
12// offsets down from the top of scratch memory for various things
13pub const SCRATCH_TOP_SIZE_OFFSET: u64 = 0x08;
14pub const SCRATCH_TOP_ALLOCATOR_OFFSET: u64 = 0x10;
15pub const SCRATCH_TOP_SNAPSHOT_PT_GPA_BASE_OFFSET: u64 = 0x18;
16pub const SCRATCH_TOP_SNAPSHOT_GENERATION_OFFSET: u64 = 0x20;
17pub const SCRATCH_TOP_LIBC_RNG_SEED_OFFSET: u64 = 0x28;
18pub const SCRATCH_TOP_EXN_STACK_OFFSET: u64 = 0x30;
19
20pub fn scratch_base_gpa(size: usize) -> u64 {
21    (SCRATCH_TOP_GPA - size + 1) as u64
22}
23pub fn scratch_base_gva(size: usize) -> u64 {
24    (SCRATCH_TOP_GVA - size + 1) as u64
25}
26
27/// Compute the minimum scratch region size needed for a sandbox.
28pub use arch::min_scratch_size;