Function stripInstructionPtrAuthCode [src]
Some platforms use pointer authentication - the upper bits of instruction pointers contain a signature.
This function clears these signature bits to make the pointer usable.
Prototype
pub inline fn stripInstructionPtrAuthCode(ptr: usize) usize
Parameters
ptr: usize
Source
pub inline fn stripInstructionPtrAuthCode(ptr: usize) usize {
if (native_arch.isAARCH64()) {
// `hint 0x07` maps to `xpaclri` (or `nop` if the hardware doesn't support it)
// The save / restore is because `xpaclri` operates on x30 (LR)
return asm (
\\mov x16, x30
\\mov x30, x15
\\hint 0x07
\\mov x15, x30
\\mov x30, x16
: [ret] "={x15}" (-> usize),
: [ptr] "{x15}" (ptr),
: "x16"
);
}
return ptr;
}