On 17/12/15 20:54, Richard Henderson wrote: > The primary focus of this patch set is to reduce the number of > helpers that modify TCG globals, and thus increase the lifetime > of those globals within each TB, and thus decrease the number > of times that tcg must spill and fill them from backing store. > > This patch set is relative to the "Improve sparc register windows" > patches, which turned all of the integer registers into TCG globals. > Thus this patch set improves the effect of the previous patch set. > > As a byproduct, I also implement the bulk of the interesting v9 ASIs > inline, thus exposing e.g. the little-endian loads and stores as > simple tcg operations. > > > r~ > > > Richard Henderson (25): > target-sparc: Mark more flags for helpers > target-sparc: Remove softint as a TCG global > target-sparc: Store mmu index in TB flags > target-sparc: Create gen_exception > target-sparc: Unify asi handling between 32 and 64-bit > target-sparc: Store %asi in TB flags > target-sparc: Introduce get_asi > target-sparc: Pass TCGMemOp to gen_ld/st_asi > target-sparc: Import linux/arch/sparc/include/uapi/asm/asi.h > target-sparc: Add UA2011 defines to asi.h > target-sparc: Use defines from asi.h > target-sparc: Add MMU_REAL_IDX > target-sparc: Directly implement easy ld/st asis > target-sparc: Use QT0 to return results from ldda > target-sparc: Introduce gen_check_align > target-sparc: Directly implement easy ldd/std asis > target-sparc: Fix obvious error in ASI_M_BFILL > target-sparc: Pass TCGMemOp constants to helper_ld/st_asi > target-sparc: Directly implement easy ldf/stf asis > target-sparc: Directly implement block and short ldf/stf asis > target-sparc: Remove helper_ldf_asi, helper_stf_asi > target-sparc: Use explicit writes to cpu_fsr > target-sparc: Use cpu_fsr in stfsr > target-sparc: Use cpu_loop_exit_restore from > helper_check_ieee_exceptions > target-sparc: Elide duplicate updates to fprs > > target-sparc/asi.h | 311 +++++++++++ > target-sparc/cpu.h | 46 +- > target-sparc/fop_helper.c | 229 +++----- > target-sparc/helper.h | 168 +++--- > target-sparc/ldst_helper.c | 696 +++++++++++------------- > target-sparc/mmu_helper.c | 90 ++-- > target-sparc/translate.c | 1264 > ++++++++++++++++++++++++++++---------------- > 7 files changed, 1667 insertions(+), 1137 deletions(-) > create mode 100644 target-sparc/asi.h
Hi Richard, I've given your tgt-sparc branch a good run with my OpenBIOS test suite, and I don't see any regressions here so this is looking good from my point of view. As a general comment, qemu-system-sparc64 feels noticeably slicker with this patchset applied. Also with SPARC32 this branch apparently fixes at least one bug since my pre-installed Solaris 8 image will now start X windows (although it still hangs for long periods of time - but I believe that is the long-standing MUTEX_HELD bug rather than anything new). If there are explicit bug-fixes related to above then my preference would be to have them as a separate patchset outside of the performance improvements, but then if this isn't feasible then I don't feel that this should block getting this patches applied to master. Tested-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> Thanks once again for all your work on this! ATB, Mark.