1use polkavm_common::program::Reg;
2
3#[derive(Copy, Clone)]
4pub enum RegImm {
5 Reg(Reg),
6 Imm(u32),
7}
8
9impl From<Reg> for RegImm {
10 #[inline]
11 fn from(reg: Reg) -> Self {
12 RegImm::Reg(reg)
13 }
14}
15
16impl From<u32> for RegImm {
17 #[inline]
18 fn from(value: u32) -> Self {
19 RegImm::Imm(value)
20 }
21}
22
23#[derive(Copy, Clone, Default)]
24pub struct GuestInit<'a> {
25 pub page_size: u32,
26 pub ro_data: &'a [u8],
27 pub rw_data: &'a [u8],
28 pub ro_data_size: u32,
29 pub rw_data_size: u32,
30 pub stack_size: u32,
31}
32
33impl<'a> GuestInit<'a> {
34 pub fn memory_map(&self) -> Result<polkavm_common::abi::MemoryMap, &'static str> {
35 polkavm_common::abi::MemoryMap::new(self.page_size, self.ro_data_size, self.rw_data_size, self.stack_size)
36 }
37}