ARM64: Add support for ARM64e pointer authentication codes (PAC).
Contributed by Peter Cawley. #559
This commit is contained in:
@@ -421,8 +421,8 @@ static void asm_gencall(ASMState *as, const CCallInfo *ci, IRRef *args)
|
||||
uint32_t n, nargs = CCI_XNARGS(ci);
|
||||
int32_t ofs = 0;
|
||||
Reg gpr, fpr = REGARG_FIRSTFPR;
|
||||
if ((void *)ci->func)
|
||||
emit_call(as, (void *)ci->func);
|
||||
if (ci->func)
|
||||
emit_call(as, ci->func);
|
||||
for (gpr = REGARG_FIRSTGPR; gpr <= REGARG_LASTGPR; gpr++)
|
||||
as->cost[gpr] = REGCOST(~0u, ASMREF_L);
|
||||
gpr = REGARG_FIRSTGPR;
|
||||
@@ -501,7 +501,7 @@ static void asm_callx(ASMState *as, IRIns *ir)
|
||||
ci.func = (ASMFunction)(ir_k64(irf)->u64);
|
||||
} else { /* Need a non-argument register for indirect calls. */
|
||||
Reg freg = ra_alloc1(as, func, RSET_RANGE(RID_X8, RID_MAX_GPR)-RSET_FIXED);
|
||||
emit_n(as, A64I_BLR, freg);
|
||||
emit_n(as, A64I_BLR_AUTH, freg);
|
||||
ci.func = (ASMFunction)(void *)0;
|
||||
}
|
||||
asm_gencall(as, &ci, args);
|
||||
|
||||
Reference in New Issue
Block a user