mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 02:24:51 +00:00
accel/tcg: Send the CPUTLBEntryFull struct into io_prepare()
To let io_prepare() function use the multiple members in CPUTLBEntryFull struct, send the full struct instead of 'xlat_section' member as the argument. It is the preliminary patch of next commit. Signed-off-by: Jim Shu <jim.shu@sifive.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Mark Burton <mburton@qti.qualcomm.com> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-ID: <20260128152348.2095427-2-jim.shu@sifive.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
committed by
Philippe Mathieu-Daudé
parent
7652e5556f
commit
94c6e9cf04
@@ -1270,14 +1270,14 @@ static inline void cpu_unaligned_access(CPUState *cpu, vaddr addr,
|
||||
}
|
||||
|
||||
static MemoryRegionSection *
|
||||
io_prepare(hwaddr *out_offset, CPUState *cpu, hwaddr xlat,
|
||||
io_prepare(hwaddr *out_offset, CPUState *cpu, CPUTLBEntryFull *full,
|
||||
MemTxAttrs attrs, vaddr addr, uintptr_t retaddr)
|
||||
{
|
||||
MemoryRegionSection *section;
|
||||
hwaddr mr_offset;
|
||||
|
||||
section = iotlb_to_section(cpu, xlat, attrs);
|
||||
mr_offset = (xlat & TARGET_PAGE_MASK) + addr;
|
||||
section = iotlb_to_section(cpu, full->xlat_section, attrs);
|
||||
mr_offset = (full->xlat_section & TARGET_PAGE_MASK) + addr;
|
||||
cpu->mem_io_pc = retaddr;
|
||||
if (!cpu->neg.can_do_io) {
|
||||
cpu_io_recompile(cpu, retaddr);
|
||||
@@ -1981,7 +1981,7 @@ static uint64_t do_ld_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
|
||||
tcg_debug_assert(size > 0 && size <= 8);
|
||||
|
||||
attrs = full->attrs;
|
||||
section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
|
||||
section = io_prepare(&mr_offset, cpu, full, attrs, addr, ra);
|
||||
mr = section->mr;
|
||||
|
||||
BQL_LOCK_GUARD();
|
||||
@@ -2002,7 +2002,7 @@ static Int128 do_ld16_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
|
||||
tcg_debug_assert(size > 8 && size <= 16);
|
||||
|
||||
attrs = full->attrs;
|
||||
section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
|
||||
section = io_prepare(&mr_offset, cpu, full, attrs, addr, ra);
|
||||
mr = section->mr;
|
||||
|
||||
BQL_LOCK_GUARD();
|
||||
@@ -2499,7 +2499,7 @@ static uint64_t do_st_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
|
||||
tcg_debug_assert(size > 0 && size <= 8);
|
||||
|
||||
attrs = full->attrs;
|
||||
section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
|
||||
section = io_prepare(&mr_offset, cpu, full, attrs, addr, ra);
|
||||
mr = section->mr;
|
||||
|
||||
BQL_LOCK_GUARD();
|
||||
@@ -2519,7 +2519,7 @@ static uint64_t do_st16_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
|
||||
tcg_debug_assert(size > 8 && size <= 16);
|
||||
|
||||
attrs = full->attrs;
|
||||
section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
|
||||
section = io_prepare(&mr_offset, cpu, full, attrs, addr, ra);
|
||||
mr = section->mr;
|
||||
|
||||
BQL_LOCK_GUARD();
|
||||
|
||||
Reference in New Issue
Block a user