qemu-e2k/target/mips
Philippe Mathieu-Daudé 68fa519a6c target/mips: Increase number of TLB entries on the 34Kf core (16 -> 64)
Per "MIPS32 34K Processor Core Family Software User's Manual,
Revision 01.13" page 8 in "Joint TLB (JTLB)" section:

  "The JTLB is a fully associative TLB cache containing 16, 32,
   or 64-dual-entries mapping up to 128 virtual pages to their
   corresponding physical addresses."

There is no particular reason to restrict the 34Kf core model to
16 TLB entries, so raise its config to 64.

This is helpful for other projects, in particular the Yocto Project:

  Yocto Project uses qemu-system-mips 34Kf cpu model, to run 32bit
  MIPS CI loop. It was observed that in this case CI test execution
  time was almost twice longer than 64bit MIPS variant that runs
  under MIPS64R2-generic model. It was investigated and concluded
  that the difference in number of TLBs 16 in 34Kf case vs 64 in
  MIPS64R2-generic is responsible for most of CI real time execution
  difference. Because with 16 TLBs linux user-land trashes TLB more
  and it needs to execute more instructions in TLB refill handler
  calls, as result it runs much longer.

(https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg03428.html)

Buglink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=13992
Reported-by: Victor Kamensky <kamensky@cisco.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20201016133317.553068-1-f4bug@amsat.org>
2020-10-17 13:59:40 +02:00
..
cp0_helper.c target/mips: Move cpu_mips_get_random() with CP0 helpers 2020-10-17 11:13:15 +02:00
cp0_timer.c target/mips: Move cp0_count_ns to CPUMIPSState 2020-10-17 11:13:15 +02:00
cpu-param.h target/mips: Support variable page size 2020-06-01 13:28:21 +02:00
cpu-qom.h qom: Remove module_obj_name parameter from OBJECT_DECLARE* macros 2020-09-18 14:12:32 -04:00
cpu.c target/mips/cpu: Display warning when CPU is used without input clock 2020-10-17 13:59:40 +02:00
cpu.h target/mips/cpu: Introduce mips_cpu_create_with_clock() helper 2020-10-17 13:59:40 +02:00
dsp_helper.c
fpu_helper.c target/mips: Demacro helpers for <MAX|MAXA|MIN|MINA>.<D|S> 2020-10-17 11:09:33 +02:00
gdbstub.c gdbstub: extend GByteArray to read register helpers 2020-03-17 17:38:38 +00:00
helper.c
helper.h target/mips: msa: Split helpers for MULV.<B|H|W|D> 2020-06-15 20:51:04 +02:00
internal.h target/mips: Move cpu_mips_get_random() with CP0 helpers 2020-10-17 11:13:15 +02:00
kvm_mips.h hw/mips: Implement the kvm_type() hook in MachineClass 2020-06-27 19:35:39 +02:00
kvm.c hw/mips: Implement the kvm_type() hook in MachineClass 2020-06-27 19:35:39 +02:00
lmmi_helper.c target/mips: Add Loongson-3 CPU definition 2020-06-09 17:32:45 +02:00
machine.c target/mips: Add more CP0 register for save/restore 2020-06-01 13:28:21 +02:00
meson.build meson: target 2020-08-21 06:30:35 -04:00
mips-defs.h target/mips: Add comments for vendor-specific ASEs 2020-06-15 20:33:16 +02:00
mips-semi.c
msa_helper.c target/mips: msa: Split helpers for MULV.<B|H|W|D> 2020-06-15 20:51:04 +02:00
op_helper.c target/mips/op_helper: Log unimplemented cache opcode 2020-10-17 11:13:15 +02:00
TODO
trace-events
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate_init.c.inc target/mips: Increase number of TLB entries on the 34Kf core (16 -> 64) 2020-10-17 13:59:40 +02:00
translate.c target/mips: Add loongson-ext lsdc2 group of instructions 2020-10-17 11:13:15 +02:00