The primary goal of this patch set is to have all references to windowed registers to go through new routines that have access to DisasContext. This is a prerequisite to any change in how windowed registers might be managed.
Since such a goal must of course touch get_src[12], and therefore touch the use of the cpu_src[12] temporaries, a secondary goal of the patch set became to clean up all of the temporary management within the translator. And in particular eliminate the 6 "global" temps that we currently allocate inside gen_intermediate_code_internal. Changes v1->v2: * Fix use without initialization that clang found that gcc did not. (Was I compiling without optimization last time?) * Re-based vs master. r~ Richard Henderson (20): target-sparc: Add gen_load/store/dest_gpr target-sparc: Conversion to gen_*_gpr, part 1 target-sparc: Use gen_load_gpr in get_src[12] target-sparc: Convert asi helpers to gen_*_gpr target-sparc: Convert swap to gen_load/store_gpr target-sparc: Finish conversion to gen_load_gpr target-sparc: Cleanup cpu_src[12] allocation target-sparc: Make the cpu_addr variable local to load/store handling target-sparc: Split out get_temp_i32 target-sparc: Use get_temp_i32 in gen_dest_fpr_F target-sparc: Avoid cpu_tmp32 in Read Priv Register target-sparc: Avoid cpu_tmp32 in Write Priv Register target-sparc: Tidy ldfsr, stfsr target-sparc: Remove usage of cpu_tmp64 from most helper functions target-sparc: Don't use a temporary for gen_dest_fpr_D target-sparc: Remove cpu_tmp64 use from softint insns target-sparc: Remove last uses of cpu_tmp64 target-sparc: Only use cpu_dst for eventual writes to a gpr target-sparc: Make cpu_dst local to OP=2 insns target-sparc: Remove cpu_tmp0 as a global target-sparc/translate.c | 1236 +++++++++++++++++++++++----------------------- 1 file changed, 612 insertions(+), 624 deletions(-) -- 1.7.11.7