Re: [Qemu-devel] [PATCH 19/21] target-sh4: switch to AREG0 free mode
On Sun, Sep 2, 2012 at 11:42 PM, Aurelien Jarno wrote: > On Sun, Sep 02, 2012 at 05:33:48PM +, Blue Swirl wrote: >> Add an explicit CPUState parameter instead of relying on AREG0 >> and switch to AREG0 free mode. >> >> Signed-off-by: Blue Swirl >> --- >> configure|2 +- >> target-sh4/Makefile.objs |2 - >> target-sh4/helper.h | 84 +++--- >> target-sh4/op_helper.c | 182 >> ++--- >> target-sh4/translate.c | 114 - >> 5 files changed, 195 insertions(+), 189 deletions(-) >> >> diff --git a/configure b/configure >> index d760e07..d69e43e 100755 >> --- a/configure >> +++ b/configure >> @@ -3829,7 +3829,7 @@ symlink "$source_path/Makefile.target" >> "$target_dir/Makefile" >> >> >> case "$target_arch2" in >> - alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | >> sparc* | unicore32 | x86_64 | xtensa* | ppc*) >> + alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | >> sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*) >> echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak >>;; >> esac >> diff --git a/target-sh4/Makefile.objs b/target-sh4/Makefile.objs >> index 2e0e093..ca20f21 100644 >> --- a/target-sh4/Makefile.objs >> +++ b/target-sh4/Makefile.objs >> @@ -1,4 +1,2 @@ >> obj-y += translate.o op_helper.o helper.o cpu.o >> obj-$(CONFIG_SOFTMMU) += machine.o >> - >> -$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS) >> diff --git a/target-sh4/helper.h b/target-sh4/helper.h >> index 95e3c7c..6e4f108 100644 >> --- a/target-sh4/helper.h >> +++ b/target-sh4/helper.h >> @@ -1,54 +1,54 @@ >> #include "def-helper.h" >> >> -DEF_HELPER_0(ldtlb, void) >> -DEF_HELPER_0(raise_illegal_instruction, void) >> -DEF_HELPER_0(raise_slot_illegal_instruction, void) >> -DEF_HELPER_0(raise_fpu_disable, void) >> -DEF_HELPER_0(raise_slot_fpu_disable, void) >> -DEF_HELPER_0(debug, void) >> -DEF_HELPER_1(sleep, void, i32) >> -DEF_HELPER_1(trapa, void, i32) >> +DEF_HELPER_1(ldtlb, void, env) >> +DEF_HELPER_1(raise_illegal_instruction, void, env) >> +DEF_HELPER_1(raise_slot_illegal_instruction, void, env) >> +DEF_HELPER_1(raise_fpu_disable, void, env) >> +DEF_HELPER_1(raise_slot_fpu_disable, void, env) >> +DEF_HELPER_1(debug, void, env) >> +DEF_HELPER_2(sleep, void, env, i32) >> +DEF_HELPER_2(trapa, void, env, i32) >> >> -DEF_HELPER_2(movcal, void, i32, i32) >> -DEF_HELPER_0(discard_movcal_backup, void) >> -DEF_HELPER_1(ocbi, void, i32) >> +DEF_HELPER_3(movcal, void, env, i32, i32) >> +DEF_HELPER_1(discard_movcal_backup, void, env) >> +DEF_HELPER_2(ocbi, void, env, i32) >> >> -DEF_HELPER_2(addv, i32, i32, i32) >> -DEF_HELPER_2(addc, i32, i32, i32) >> -DEF_HELPER_2(subv, i32, i32, i32) >> -DEF_HELPER_2(subc, i32, i32, i32) >> -DEF_HELPER_2(div1, i32, i32, i32) >> -DEF_HELPER_2(macl, void, i32, i32) >> -DEF_HELPER_2(macw, void, i32, i32) >> +DEF_HELPER_3(addv, i32, env, i32, i32) >> +DEF_HELPER_3(addc, i32, env, i32, i32) >> +DEF_HELPER_3(subv, i32, env, i32, i32) >> +DEF_HELPER_3(subc, i32, env, i32, i32) >> +DEF_HELPER_3(div1, i32, env, i32, i32) >> +DEF_HELPER_3(macl, void, env, i32, i32) >> +DEF_HELPER_3(macw, void, env, i32, i32) >> >> -DEF_HELPER_1(ld_fpscr, void, i32) >> +DEF_HELPER_2(ld_fpscr, void, env, i32) >> >> DEF_HELPER_1(fabs_FT, f32, f32) >> DEF_HELPER_1(fabs_DT, f64, f64) >> -DEF_HELPER_2(fadd_FT, f32, f32, f32) >> -DEF_HELPER_2(fadd_DT, f64, f64, f64) >> -DEF_HELPER_1(fcnvsd_FT_DT, f64, f32) >> -DEF_HELPER_1(fcnvds_DT_FT, f32, f64) >> +DEF_HELPER_3(fadd_FT, f32, env, f32, f32) >> +DEF_HELPER_3(fadd_DT, f64, env, f64, f64) >> +DEF_HELPER_2(fcnvsd_FT_DT, f64, env, f32) >> +DEF_HELPER_2(fcnvds_DT_FT, f32, env, f64) >> >> -DEF_HELPER_2(fcmp_eq_FT, void, f32, f32) >> -DEF_HELPER_2(fcmp_eq_DT, void, f64, f64) >> -DEF_HELPER_2(fcmp_gt_FT, void, f32, f32) >> -DEF_HELPER_2(fcmp_gt_DT, void, f64, f64) >> -DEF_HELPER_2(fdiv_FT, f32, f32, f32) >> -DEF_HELPER_2(fdiv_DT, f64, f64, f64) >> -DEF_HELPER_1(float_FT, f32, i32) >> -DEF_HELPER_1(float_DT, f64, i32) >> -DEF_HELPER_3(fmac_FT, f32, f32, f32, f32) >> -DEF_HELPER_2(fmul_FT, f32, f32, f32) >> -DEF_HELPER_2(fmul_DT, f64, f64, f64) >> +DEF_HELPER_3(fcmp_eq_FT, void, env, f32, f32) >> +DEF_HELPER_3(fcmp_eq_DT, void, env, f64, f64) >> +DEF_HELPER_3(fcmp_gt_FT, void, env, f32, f32) >> +DEF_HELPER_3(fcmp_gt_DT, void, env, f64, f64) >> +DEF_HELPER_3(fdiv_FT, f32, env, f32, f32) >> +DEF_HELPER_3(fdiv_DT, f64, env, f64, f64) >> +DEF_HELPER_2(float_FT, f32, env, i32) >> +DEF_HELPER_2(float_DT, f64, env, i32) >> +DEF_HELPER_4(fmac_FT, f32, env, f32, f32, f32) >> +DEF_HELPER_3(fmul_FT, f32, env, f32, f32) >> +DEF_HELPER_3(fmul_DT, f64, env, f64, f64) >> DEF_HELPER_1(fneg_T, f32, f32) >> -DEF_HELPER_2(fsub_FT, f32, f32, f32) >> -DEF_HELPER_2(fsub_DT, f64, f64, f64) >> -DEF_HELPER_1(fsqrt_FT, f32, f32) >> -DEF_HELPER_1(fsqrt_DT, f64, f64) >> -DEF_HELPER_1(ftrc_FT, i32, f32) >> -DEF_HELPER_1(ftrc_DT, i32, f64
Re: [Qemu-devel] [PATCH 19/21] target-sh4: switch to AREG0 free mode
On Sun, Sep 02, 2012 at 05:33:48PM +, Blue Swirl wrote: > Add an explicit CPUState parameter instead of relying on AREG0 > and switch to AREG0 free mode. > > Signed-off-by: Blue Swirl > --- > configure|2 +- > target-sh4/Makefile.objs |2 - > target-sh4/helper.h | 84 +++--- > target-sh4/op_helper.c | 182 ++--- > target-sh4/translate.c | 114 - > 5 files changed, 195 insertions(+), 189 deletions(-) > > diff --git a/configure b/configure > index d760e07..d69e43e 100755 > --- a/configure > +++ b/configure > @@ -3829,7 +3829,7 @@ symlink "$source_path/Makefile.target" > "$target_dir/Makefile" > > > case "$target_arch2" in > - alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | > sparc* | unicore32 | x86_64 | xtensa* | ppc*) > + alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | > sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*) > echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak >;; > esac > diff --git a/target-sh4/Makefile.objs b/target-sh4/Makefile.objs > index 2e0e093..ca20f21 100644 > --- a/target-sh4/Makefile.objs > +++ b/target-sh4/Makefile.objs > @@ -1,4 +1,2 @@ > obj-y += translate.o op_helper.o helper.o cpu.o > obj-$(CONFIG_SOFTMMU) += machine.o > - > -$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS) > diff --git a/target-sh4/helper.h b/target-sh4/helper.h > index 95e3c7c..6e4f108 100644 > --- a/target-sh4/helper.h > +++ b/target-sh4/helper.h > @@ -1,54 +1,54 @@ > #include "def-helper.h" > > -DEF_HELPER_0(ldtlb, void) > -DEF_HELPER_0(raise_illegal_instruction, void) > -DEF_HELPER_0(raise_slot_illegal_instruction, void) > -DEF_HELPER_0(raise_fpu_disable, void) > -DEF_HELPER_0(raise_slot_fpu_disable, void) > -DEF_HELPER_0(debug, void) > -DEF_HELPER_1(sleep, void, i32) > -DEF_HELPER_1(trapa, void, i32) > +DEF_HELPER_1(ldtlb, void, env) > +DEF_HELPER_1(raise_illegal_instruction, void, env) > +DEF_HELPER_1(raise_slot_illegal_instruction, void, env) > +DEF_HELPER_1(raise_fpu_disable, void, env) > +DEF_HELPER_1(raise_slot_fpu_disable, void, env) > +DEF_HELPER_1(debug, void, env) > +DEF_HELPER_2(sleep, void, env, i32) > +DEF_HELPER_2(trapa, void, env, i32) > > -DEF_HELPER_2(movcal, void, i32, i32) > -DEF_HELPER_0(discard_movcal_backup, void) > -DEF_HELPER_1(ocbi, void, i32) > +DEF_HELPER_3(movcal, void, env, i32, i32) > +DEF_HELPER_1(discard_movcal_backup, void, env) > +DEF_HELPER_2(ocbi, void, env, i32) > > -DEF_HELPER_2(addv, i32, i32, i32) > -DEF_HELPER_2(addc, i32, i32, i32) > -DEF_HELPER_2(subv, i32, i32, i32) > -DEF_HELPER_2(subc, i32, i32, i32) > -DEF_HELPER_2(div1, i32, i32, i32) > -DEF_HELPER_2(macl, void, i32, i32) > -DEF_HELPER_2(macw, void, i32, i32) > +DEF_HELPER_3(addv, i32, env, i32, i32) > +DEF_HELPER_3(addc, i32, env, i32, i32) > +DEF_HELPER_3(subv, i32, env, i32, i32) > +DEF_HELPER_3(subc, i32, env, i32, i32) > +DEF_HELPER_3(div1, i32, env, i32, i32) > +DEF_HELPER_3(macl, void, env, i32, i32) > +DEF_HELPER_3(macw, void, env, i32, i32) > > -DEF_HELPER_1(ld_fpscr, void, i32) > +DEF_HELPER_2(ld_fpscr, void, env, i32) > > DEF_HELPER_1(fabs_FT, f32, f32) > DEF_HELPER_1(fabs_DT, f64, f64) > -DEF_HELPER_2(fadd_FT, f32, f32, f32) > -DEF_HELPER_2(fadd_DT, f64, f64, f64) > -DEF_HELPER_1(fcnvsd_FT_DT, f64, f32) > -DEF_HELPER_1(fcnvds_DT_FT, f32, f64) > +DEF_HELPER_3(fadd_FT, f32, env, f32, f32) > +DEF_HELPER_3(fadd_DT, f64, env, f64, f64) > +DEF_HELPER_2(fcnvsd_FT_DT, f64, env, f32) > +DEF_HELPER_2(fcnvds_DT_FT, f32, env, f64) > > -DEF_HELPER_2(fcmp_eq_FT, void, f32, f32) > -DEF_HELPER_2(fcmp_eq_DT, void, f64, f64) > -DEF_HELPER_2(fcmp_gt_FT, void, f32, f32) > -DEF_HELPER_2(fcmp_gt_DT, void, f64, f64) > -DEF_HELPER_2(fdiv_FT, f32, f32, f32) > -DEF_HELPER_2(fdiv_DT, f64, f64, f64) > -DEF_HELPER_1(float_FT, f32, i32) > -DEF_HELPER_1(float_DT, f64, i32) > -DEF_HELPER_3(fmac_FT, f32, f32, f32, f32) > -DEF_HELPER_2(fmul_FT, f32, f32, f32) > -DEF_HELPER_2(fmul_DT, f64, f64, f64) > +DEF_HELPER_3(fcmp_eq_FT, void, env, f32, f32) > +DEF_HELPER_3(fcmp_eq_DT, void, env, f64, f64) > +DEF_HELPER_3(fcmp_gt_FT, void, env, f32, f32) > +DEF_HELPER_3(fcmp_gt_DT, void, env, f64, f64) > +DEF_HELPER_3(fdiv_FT, f32, env, f32, f32) > +DEF_HELPER_3(fdiv_DT, f64, env, f64, f64) > +DEF_HELPER_2(float_FT, f32, env, i32) > +DEF_HELPER_2(float_DT, f64, env, i32) > +DEF_HELPER_4(fmac_FT, f32, env, f32, f32, f32) > +DEF_HELPER_3(fmul_FT, f32, env, f32, f32) > +DEF_HELPER_3(fmul_DT, f64, env, f64, f64) > DEF_HELPER_1(fneg_T, f32, f32) > -DEF_HELPER_2(fsub_FT, f32, f32, f32) > -DEF_HELPER_2(fsub_DT, f64, f64, f64) > -DEF_HELPER_1(fsqrt_FT, f32, f32) > -DEF_HELPER_1(fsqrt_DT, f64, f64) > -DEF_HELPER_1(ftrc_FT, i32, f32) > -DEF_HELPER_1(ftrc_DT, i32, f64) > -DEF_HELPER_2(fipr, void, i32, i32) > -DEF_HELPER_1(ftrv, void, i32) > +DEF_HELPER_3(fsub_FT, f32, env, f32, f32) > +DEF_HELPER_3(fsub_DT, f64, env, f64, f64) > +DEF_
[Qemu-devel] [PATCH 19/21] target-sh4: switch to AREG0 free mode
Add an explicit CPUState parameter instead of relying on AREG0 and switch to AREG0 free mode. Signed-off-by: Blue Swirl --- configure|2 +- target-sh4/Makefile.objs |2 - target-sh4/helper.h | 84 +++--- target-sh4/op_helper.c | 182 ++--- target-sh4/translate.c | 114 - 5 files changed, 195 insertions(+), 189 deletions(-) diff --git a/configure b/configure index d760e07..d69e43e 100755 --- a/configure +++ b/configure @@ -3829,7 +3829,7 @@ symlink "$source_path/Makefile.target" "$target_dir/Makefile" case "$target_arch2" in - alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | sparc* | unicore32 | x86_64 | xtensa* | ppc*) + alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | or32 | s390x | sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*) echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak ;; esac diff --git a/target-sh4/Makefile.objs b/target-sh4/Makefile.objs index 2e0e093..ca20f21 100644 --- a/target-sh4/Makefile.objs +++ b/target-sh4/Makefile.objs @@ -1,4 +1,2 @@ obj-y += translate.o op_helper.o helper.o cpu.o obj-$(CONFIG_SOFTMMU) += machine.o - -$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS) diff --git a/target-sh4/helper.h b/target-sh4/helper.h index 95e3c7c..6e4f108 100644 --- a/target-sh4/helper.h +++ b/target-sh4/helper.h @@ -1,54 +1,54 @@ #include "def-helper.h" -DEF_HELPER_0(ldtlb, void) -DEF_HELPER_0(raise_illegal_instruction, void) -DEF_HELPER_0(raise_slot_illegal_instruction, void) -DEF_HELPER_0(raise_fpu_disable, void) -DEF_HELPER_0(raise_slot_fpu_disable, void) -DEF_HELPER_0(debug, void) -DEF_HELPER_1(sleep, void, i32) -DEF_HELPER_1(trapa, void, i32) +DEF_HELPER_1(ldtlb, void, env) +DEF_HELPER_1(raise_illegal_instruction, void, env) +DEF_HELPER_1(raise_slot_illegal_instruction, void, env) +DEF_HELPER_1(raise_fpu_disable, void, env) +DEF_HELPER_1(raise_slot_fpu_disable, void, env) +DEF_HELPER_1(debug, void, env) +DEF_HELPER_2(sleep, void, env, i32) +DEF_HELPER_2(trapa, void, env, i32) -DEF_HELPER_2(movcal, void, i32, i32) -DEF_HELPER_0(discard_movcal_backup, void) -DEF_HELPER_1(ocbi, void, i32) +DEF_HELPER_3(movcal, void, env, i32, i32) +DEF_HELPER_1(discard_movcal_backup, void, env) +DEF_HELPER_2(ocbi, void, env, i32) -DEF_HELPER_2(addv, i32, i32, i32) -DEF_HELPER_2(addc, i32, i32, i32) -DEF_HELPER_2(subv, i32, i32, i32) -DEF_HELPER_2(subc, i32, i32, i32) -DEF_HELPER_2(div1, i32, i32, i32) -DEF_HELPER_2(macl, void, i32, i32) -DEF_HELPER_2(macw, void, i32, i32) +DEF_HELPER_3(addv, i32, env, i32, i32) +DEF_HELPER_3(addc, i32, env, i32, i32) +DEF_HELPER_3(subv, i32, env, i32, i32) +DEF_HELPER_3(subc, i32, env, i32, i32) +DEF_HELPER_3(div1, i32, env, i32, i32) +DEF_HELPER_3(macl, void, env, i32, i32) +DEF_HELPER_3(macw, void, env, i32, i32) -DEF_HELPER_1(ld_fpscr, void, i32) +DEF_HELPER_2(ld_fpscr, void, env, i32) DEF_HELPER_1(fabs_FT, f32, f32) DEF_HELPER_1(fabs_DT, f64, f64) -DEF_HELPER_2(fadd_FT, f32, f32, f32) -DEF_HELPER_2(fadd_DT, f64, f64, f64) -DEF_HELPER_1(fcnvsd_FT_DT, f64, f32) -DEF_HELPER_1(fcnvds_DT_FT, f32, f64) +DEF_HELPER_3(fadd_FT, f32, env, f32, f32) +DEF_HELPER_3(fadd_DT, f64, env, f64, f64) +DEF_HELPER_2(fcnvsd_FT_DT, f64, env, f32) +DEF_HELPER_2(fcnvds_DT_FT, f32, env, f64) -DEF_HELPER_2(fcmp_eq_FT, void, f32, f32) -DEF_HELPER_2(fcmp_eq_DT, void, f64, f64) -DEF_HELPER_2(fcmp_gt_FT, void, f32, f32) -DEF_HELPER_2(fcmp_gt_DT, void, f64, f64) -DEF_HELPER_2(fdiv_FT, f32, f32, f32) -DEF_HELPER_2(fdiv_DT, f64, f64, f64) -DEF_HELPER_1(float_FT, f32, i32) -DEF_HELPER_1(float_DT, f64, i32) -DEF_HELPER_3(fmac_FT, f32, f32, f32, f32) -DEF_HELPER_2(fmul_FT, f32, f32, f32) -DEF_HELPER_2(fmul_DT, f64, f64, f64) +DEF_HELPER_3(fcmp_eq_FT, void, env, f32, f32) +DEF_HELPER_3(fcmp_eq_DT, void, env, f64, f64) +DEF_HELPER_3(fcmp_gt_FT, void, env, f32, f32) +DEF_HELPER_3(fcmp_gt_DT, void, env, f64, f64) +DEF_HELPER_3(fdiv_FT, f32, env, f32, f32) +DEF_HELPER_3(fdiv_DT, f64, env, f64, f64) +DEF_HELPER_2(float_FT, f32, env, i32) +DEF_HELPER_2(float_DT, f64, env, i32) +DEF_HELPER_4(fmac_FT, f32, env, f32, f32, f32) +DEF_HELPER_3(fmul_FT, f32, env, f32, f32) +DEF_HELPER_3(fmul_DT, f64, env, f64, f64) DEF_HELPER_1(fneg_T, f32, f32) -DEF_HELPER_2(fsub_FT, f32, f32, f32) -DEF_HELPER_2(fsub_DT, f64, f64, f64) -DEF_HELPER_1(fsqrt_FT, f32, f32) -DEF_HELPER_1(fsqrt_DT, f64, f64) -DEF_HELPER_1(ftrc_FT, i32, f32) -DEF_HELPER_1(ftrc_DT, i32, f64) -DEF_HELPER_2(fipr, void, i32, i32) -DEF_HELPER_1(ftrv, void, i32) +DEF_HELPER_3(fsub_FT, f32, env, f32, f32) +DEF_HELPER_3(fsub_DT, f64, env, f64, f64) +DEF_HELPER_2(fsqrt_FT, f32, env, f32) +DEF_HELPER_2(fsqrt_DT, f64, env, f64) +DEF_HELPER_2(ftrc_FT, i32, env, f32) +DEF_HELPER_2(ftrc_DT, i32, env, f64) +DEF_HELPER_3(fipr, void, env, i32, i32) +DEF_HELPER_2(ftrv, void, env, i32) #include "def-helper.h" diff --git a/target-sh4/op_helper.c b/target-sh4/op_helper.c index 40