use crate::VMContext;
use std::mem;
#[inline]
pub unsafe fn prepare_host_to_wasm_trampoline<T>(vmctx: *mut VMContext, func: T) -> T {
assert_eq!(mem::size_of::<T>(), mem::size_of::<usize>());
(*vmctx)
.instance_mut()
.set_callee(Some(mem::transmute_copy(&func)));
mem::transmute_copy(&(host_to_wasm_trampoline as usize))
}
extern "C" {
fn host_to_wasm_trampoline();
pub(crate) fn wasm_to_host_trampoline();
}
cfg_if::cfg_if! {
if #[cfg(target_arch = "x86_64")] {
#[macro_use]
mod x86_64;
} else if #[cfg(target_arch = "aarch64")] {
#[macro_use]
mod aarch64;
} else if #[cfg(target_arch = "s390x")] {
#[macro_use]
mod s390x;
}else if #[cfg(target_arch = "riscv64")] {
#[macro_use]
mod riscv64;
} else {
compile_error!("unsupported architecture");
}
}