mirror of https://gitee.com/openkylin/qemu.git
linux-user: Initialize aarch64 pac keys
Initialize the keys to a non-zero value on process start. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
29d26ab2b0
commit
87877543b1
|
@ -147,10 +147,29 @@ void cpu_loop(CPUARMState *env)
|
|||
}
|
||||
}
|
||||
|
||||
static uint64_t arm_rand64(void)
|
||||
{
|
||||
int shift = 64 - clz64(RAND_MAX);
|
||||
int i, n = 64 / shift + (64 % shift != 0);
|
||||
uint64_t ret = 0;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
ret = (ret << shift) | rand();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void arm_init_pauth_key(ARMPACKey *key)
|
||||
{
|
||||
key->lo = arm_rand64();
|
||||
key->hi = arm_rand64();
|
||||
}
|
||||
|
||||
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
|
||||
{
|
||||
CPUState *cpu = ENV_GET_CPU(env);
|
||||
TaskState *ts = cpu->opaque;
|
||||
ARMCPU *cpu = arm_env_get_cpu(env);
|
||||
CPUState *cs = CPU(cpu);
|
||||
TaskState *ts = cs->opaque;
|
||||
struct image_info *info = ts->info;
|
||||
int i;
|
||||
|
||||
|
@ -172,6 +191,14 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (cpu_isar_feature(aa64_pauth, cpu)) {
|
||||
arm_init_pauth_key(&env->apia_key);
|
||||
arm_init_pauth_key(&env->apib_key);
|
||||
arm_init_pauth_key(&env->apda_key);
|
||||
arm_init_pauth_key(&env->apdb_key);
|
||||
arm_init_pauth_key(&env->apga_key);
|
||||
}
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
|
|
|
@ -22,4 +22,6 @@ struct target_pt_regs {
|
|||
#define TARGET_PR_SVE_SET_VL 50
|
||||
#define TARGET_PR_SVE_GET_VL 51
|
||||
|
||||
void arm_init_pauth_key(ARMPACKey *key);
|
||||
|
||||
#endif /* AARCH64_TARGET_SYSCALL_H */
|
||||
|
|
Loading…
Reference in New Issue