mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
accel/tcg: Move TARGET_TAGGED_ADDRESSES to TCGCPUOps.untagged_addr
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
7804c84a56
commit
2c0b261fcd
5 changed files with 40 additions and 41 deletions
|
@ -2671,7 +2671,31 @@ static const char *arm_gdb_get_core_xml_file(CPUState *cs)
|
|||
return "arm-core.xml";
|
||||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
/**
|
||||
* aarch64_untagged_addr:
|
||||
*
|
||||
* Remove any address tag from @x. This is explicitly related to the
|
||||
* linux syscall TIF_TAGGED_ADDR setting, not TBI in general.
|
||||
*
|
||||
* There should be a better place to put this, but we need this in
|
||||
* include/exec/cpu_ldst.h, and not some place linux-user specific.
|
||||
*
|
||||
* Note that arm-*-user will never set tagged_addr_enable.
|
||||
*/
|
||||
static vaddr aarch64_untagged_addr(CPUState *cs, vaddr x)
|
||||
{
|
||||
CPUARMState *env = cpu_env(cs);
|
||||
if (env->tagged_addr_enable) {
|
||||
/*
|
||||
* TBI is enabled for userspace but not kernelspace addresses.
|
||||
* Only clear the tag if bit 55 is clear.
|
||||
*/
|
||||
x &= sextract64(x, 0, 56);
|
||||
}
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
#include "hw/core/sysemu-cpu-ops.h"
|
||||
|
||||
static const struct SysemuCPUOps arm_sysemu_ops = {
|
||||
|
@ -2702,6 +2726,7 @@ static const TCGCPUOps arm_tcg_ops = {
|
|||
#ifdef CONFIG_USER_ONLY
|
||||
.record_sigsegv = arm_cpu_record_sigsegv,
|
||||
.record_sigbus = arm_cpu_record_sigbus,
|
||||
.untagged_addr = aarch64_untagged_addr,
|
||||
#else
|
||||
.tlb_fill_align = arm_cpu_tlb_fill_align,
|
||||
.cpu_exec_interrupt = arm_cpu_exec_interrupt,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue