#[cfg(zisk_guest)]
#[macro_export]
macro_rules! ziskos_jump_dest {
($bitmap:expr, $bytecode:expr, $size:expr) => {{
if $size != 0 {
unsafe {
core::arch::asm!(
"csrs {port}, {src}",
"add x0, {dst}, {size}",
port = const zisk_definitions::SYSCALL_JUMP_DEST_ID,
size = in(reg) $size,
dst = in(reg) $bitmap.as_mut_ptr(),
src = in(reg) $bytecode.as_ptr(),
options(nostack, preserves_flags),
);
}
}
}};
(dst_ptr: $bitmap:expr, $bytecode:expr, $size:expr) => {{
if $size != 0 {
unsafe {
core::arch::asm!(
"csrs {port}, {src}",
"add x0, {dst}, {size}",
port = const zisk_definitions::SYSCALL_JUMP_DEST_ID,
size = in(reg) $size,
dst = in(reg) $bitmap,
src = in(reg) $bytecode.as_ptr(),
options(nostack, preserves_flags),
);
}
}
}};
(ptr: $bitmap:expr, $bytecode:expr, $size:expr) => {{
if $size != 0 {
unsafe {
core::arch::asm!(
"csrs {port}, {src}",
"add x0, {dst}, {size}",
port = const zisk_definitions::SYSCALL_JUMP_DEST_ID,
size = in(reg) $size,
dst = in(reg) $bitmap,
src = in(reg) $bytecode,
options(nostack, preserves_flags),
);
}
}
}};
}