polkavm/
utils.rs

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}