//! PebbleOS `syscall` shim
//! All OS fn calls will have a generated shim which moves their vtable index into the r1 register,
//! before branching into [`jump_to_pbl_fn`].
//! Relies on the shim code being co-located in memory with the address, in that order, no more than
//! 4095 bytes apart. (if within 1020, instruction remains T1 width)
//! ```text
//! .pbl_dispatch : ALIGN(4) {
//! KEEP(*(.pbl_dispatch.code))
//! . = ALIGN(4);
//! KEEP(*(.pbl_dispatch.data))
//! } > APP
//! ```
/// The dummy address that the PebbleOS loader replaces with
/// a pointer to the vtable at load time
pub static mut PBL_TABLE_ADDR: u32 = 0xA8A8_A8A8;
/// Call a gneiss-sys function. Requires the index of the fn ptr to be in r1, which is
/// handled by the per-fn shim. Don't call directly unless you really know what you're doing
pub unsafe extern "C"