This new hook will allow targets to recognize an alignment fault with the correct priority with respect to other faults that can be raised by paging. This should fix several hppa fault priority issues, most importantly that access permissions come before alignment. This should fix the documented error in the Arm alignment fault due to memory type. Changes for v3: - Change the tlb_fill_hook to return data into provided CPUTLBEntryFull, instead of calling tlb_set_page*. - I have dropped some r-b, correspondingly. Patches needing review: 05-accel-tcg-Add-TCGCPUOps.tlb_fill_align.patch 06-accel-tcg-Use-the-alignment-test-in-tlb_fill_alig.patch 11-target-hppa-Implement-TCGCPUOps.tlb_fill_align.patch 19-target-arm-Implement-TCGCPUOps.tlb_fill_align.patch r~ Richard Henderson (20): accel/tcg: Assert noreturn from write-only page for atomics include/exec/memop: Move get_alignment_bits from tcg.h include/exec/memop: Rename get_alignment_bits include/exec/memop: Introduce memop_atomicity_bits accel/tcg: Add TCGCPUOps.tlb_fill_align accel/tcg: Use the alignment test in tlb_fill_align target/hppa: Add MemOp argument to hppa_get_physical_address target/hppa: Perform access rights before protection id check target/hppa: Fix priority of T, D, and B page faults target/hppa: Handle alignment faults in hppa_get_physical_address target/hppa: Implement TCGCPUOps.tlb_fill_align target/arm: Pass MemOp to get_phys_addr target/arm: Pass MemOp to get_phys_addr_with_space_nogpc target/arm: Pass MemOp to get_phys_addr_gpc target/arm: Pass MemOp to get_phys_addr_nogpc target/arm: Pass MemOp through get_phys_addr_twostage target/arm: Pass MemOp to get_phys_addr_lpae target/arm: Move device detection earlier in get_phys_addr_lpae target/arm: Implement TCGCPUOps.tlb_fill_align target/arm: Fix alignment fault priority in get_phys_addr_lpae include/exec/memop.h | 47 ++++++++++ include/hw/core/cpu.h | 4 +- include/hw/core/tcg-cpu-ops.h | 26 ++++++ include/qemu/typedefs.h | 1 + include/tcg/tcg.h | 23 ----- target/arm/internals.h | 12 +-- target/hppa/cpu.h | 8 +- accel/tcg/cputlb.c | 160 +++++++++++++++++---------------- accel/tcg/user-exec.c | 4 +- target/arm/cpu.c | 2 +- target/arm/helper.c | 9 +- target/arm/ptw.c | 141 ++++++++++++++++------------- target/arm/tcg/cpu-v7m.c | 2 +- target/arm/tcg/m_helper.c | 8 +- target/arm/tcg/tlb_helper.c | 49 ++++------ target/arm/tcg/translate-a64.c | 4 +- target/hppa/cpu.c | 2 +- target/hppa/int_helper.c | 2 +- target/hppa/mem_helper.c | 55 +++++++----- target/hppa/op_helper.c | 2 +- target/xtensa/translate.c | 2 +- tcg/tcg-op-ldst.c | 6 +- tcg/tcg.c | 2 +- tcg/arm/tcg-target.c.inc | 4 +- tcg/sparc64/tcg-target.c.inc | 2 +- 25 files changed, 326 insertions(+), 251 deletions(-) -- 2.43.0