Hi, This is a re-based re-spin of my RFC series with a few minor updates thanks to updates to the softmmu code. The series is attempting to achieve the same results we did with softfloat by replacing our nest of macro expansions with some common helpers. By using __flatten__ to force the whole function to be un-rolled the compiler can then dead-code away parts of the common function not used in each particular instantiated helper.
This is a win from a debugging point of view - no more "where is helper_le_lduw_mmu defined" questions. I think it will also make eventual instrumentation easier because there is exactly one slow path load and store function to instrument. Although the individual functions are now bigger (__flatten__ stops the compiler ignoring inline if it wants to) the size of the resulting binary is slightly smaller! original - 73027224 bytes demacro - 66913848 bytes Unfortunately in my simple boot test I see a slight performance degradation: original: 10 times (100.00%), avg time 5.358 (0.02 varience/0.13 deviation) demacro: 10 times (100.00%), avg time 5.760 (0.08 varience/0.29 deviation) Emilio, Any chance you could run this through your more comprehensive benchmark suite? Alex Bennée (4): accel/tcg: export some cputlb functions accel/tcg: introduce softmmu.c accel/tcg: use TLB helpers from softmmu.o accel/tcg: remove softmmu_template.h accel/tcg/Makefile.objs | 1 + accel/tcg/cputlb.c | 63 +---- accel/tcg/cputlb.h | 21 ++ accel/tcg/softmmu.c | 452 +++++++++++++++++++++++++++++++++++ accel/tcg/softmmu_template.h | 446 ---------------------------------- 5 files changed, 485 insertions(+), 498 deletions(-) create mode 100644 accel/tcg/cputlb.h create mode 100644 accel/tcg/softmmu.c delete mode 100644 accel/tcg/softmmu_template.h -- 2.17.1