#[inline]
#[allow(missing_docs)]
pub fn get_stack_pointer() -> usize {
let stack_pointer: usize;
unsafe {
core::arch::asm!(
"mov {}, rsp",
out(reg) stack_pointer,
options(nostack,nomem),
);
}
stack_pointer
}
pub unsafe fn get_next_older_pc_from_fp(fp: usize) -> usize {
*(fp as *mut usize).offset(1)
}
pub const NEXT_OLDER_FP_FROM_FP_OFFSET: usize = 0;
pub fn assert_fp_is_aligned(fp: usize) {
let align = 2 * size_of::<usize>();
assert_eq!(fp % align, 0, "stack should always be aligned to {align}");
}