On Fri, 11 Oct 2019 at 14:50, Richard Henderson <richard.hender...@linaro.org> wrote: > > We will need this to raise unaligned exceptions from user mode. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/tlb_helper.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/target/arm/tlb_helper.c b/target/arm/tlb_helper.c > index 5feb312941..29b92a1149 100644 > --- a/target/arm/tlb_helper.c > +++ b/target/arm/tlb_helper.c > @@ -10,8 +10,6 @@ > #include "internals.h" > #include "exec/exec-all.h" > > -#if !defined(CONFIG_USER_ONLY) > - > static inline uint32_t merge_syn_data_abort(uint32_t template_syn, > unsigned int target_el, > bool same_el, bool ea, > @@ -122,6 +120,7 @@ void arm_cpu_do_unaligned_access(CPUState *cs, vaddr > vaddr, > arm_deliver_fault(cpu, vaddr, access_type, mmu_idx, &fi); > } > > +#ifndef CONFIG_USER_ONLY > /* > * arm_cpu_do_transaction_failed: handle a memory system error response > * (eg "no device/memory present at address") by raising an external abort > -- > 2.17.1
Isn't this just enabling compilation of the softmmu arm_cpu_do_unaligned_access() on linux-user? That codepath does a lot of softmmu stuff including calling arm_deliver_fault() (which implicitly does somewhat more looking at EL1 system register state than we necessarily have set up correctly for the user-mode code). For arm_cpu_tlb_fill() which handles prefetch/data aborts we just have a separate much simpler codepath for CONFIG_USER_ONLY which doesn't call arm_deliver_fault(). I think being consistent here about how we handle the CONFIG_USER_ONLY case would help avoid having a codepath that isn't very well tested because it's only used in the odd special case of unaligned-address exceptions. thanks -- PMM