It's useful for bootloader to do IO opreations. Signed-off-by: Jiaxun Yang <jiaxun.y...@flygoat.com> --- hw/mips/addr.c | 11 +++++++++++ include/hw/mips/cpudevs.h | 2 ++ 2 files changed, 13 insertions(+)
diff --git a/hw/mips/addr.c b/hw/mips/addr.c index 2f138fe1ea..9d21cc2eb0 100644 --- a/hw/mips/addr.c +++ b/hw/mips/addr.c @@ -35,6 +35,17 @@ uint64_t cpu_mips_phys_to_kseg0(void *opaque, uint64_t addr) return addr | ~0x7fffffffll; } +uint64_t cpu_mips_kseg1_to_phys(void *opaque, uint64_t addr) +{ + return addr & 0x1fffffffll; +} + +uint64_t cpu_mips_phys_to_kseg1(void *opaque, uint64_t addr) +{ + return (addr & 0x1fffffffll) | 0xffffffffa0000000ll; +} + + uint64_t cpu_mips_kvm_um_phys_to_kseg0(void *opaque, uint64_t addr) { return addr | 0x40000000ll; diff --git a/include/hw/mips/cpudevs.h b/include/hw/mips/cpudevs.h index 0b3e060c95..048767db67 100644 --- a/include/hw/mips/cpudevs.h +++ b/include/hw/mips/cpudevs.h @@ -8,6 +8,8 @@ /* addr.c */ uint64_t cpu_mips_kseg0_to_phys(void *opaque, uint64_t addr); uint64_t cpu_mips_phys_to_kseg0(void *opaque, uint64_t addr); +uint64_t cpu_mips_kseg1_to_phys(void *opaque, uint64_t addr); +uint64_t cpu_mips_phys_to_kseg1(void *opaque, uint64_t addr); uint64_t cpu_mips_kvm_um_phys_to_kseg0(void *opaque, uint64_t addr); bool mips_um_ksegs_enabled(void); void mips_um_ksegs_enable(void); -- 2.29.2