All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] RX target update
@ 2021-09-09 12:04 Yoshinori Sato
  2021-09-09 12:04 ` [PATCH 1/2] target/rx: Fix helper definiton Yoshinori Sato
  2021-09-09 12:04 ` [PATCH 2/2] target/rx: gdbstub add acc register operation Yoshinori Sato
  0 siblings, 2 replies; 5+ messages in thread
From: Yoshinori Sato @ 2021-09-09 12:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Yoshinori Sato

I found some problem in RX target.
This patches fix it.

Yoshinori Sato (2):
  target/rx: Fix helper definiton.
  target/rx: gdbstub add acc register operation.

 target/rx/helper.h  | 36 ++++++++++++++++++------------------
 target/rx/gdbstub.c |  3 ++-
 2 files changed, 20 insertions(+), 19 deletions(-)

-- 
2.30.2



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] target/rx: Fix helper definiton.
  2021-09-09 12:04 [PATCH 0/2] RX target update Yoshinori Sato
@ 2021-09-09 12:04 ` Yoshinori Sato
  2021-09-09 12:34   ` Peter Maydell
  2021-09-09 12:04 ` [PATCH 2/2] target/rx: gdbstub add acc register operation Yoshinori Sato
  1 sibling, 1 reply; 5+ messages in thread
From: Yoshinori Sato @ 2021-09-09 12:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Yoshinori Sato

Due to an incorrect definition of helper,
TCG optimization could sometimes behave unexpectedly.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 target/rx/helper.h | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/target/rx/helper.h b/target/rx/helper.h
index f0b7ebbbf7..efbca7a1b8 100644
--- a/target/rx/helper.h
+++ b/target/rx/helper.h
@@ -5,27 +5,27 @@ DEF_HELPER_1(wait, noreturn, env)
 DEF_HELPER_1(debug, noreturn, env)
 DEF_HELPER_2(rxint, noreturn, env, i32)
 DEF_HELPER_1(rxbrk, noreturn, env)
-DEF_HELPER_FLAGS_3(fadd, TCG_CALL_NO_WG, f32, env, f32, f32)
-DEF_HELPER_FLAGS_3(fsub, TCG_CALL_NO_WG, f32, env, f32, f32)
-DEF_HELPER_FLAGS_3(fmul, TCG_CALL_NO_WG, f32, env, f32, f32)
-DEF_HELPER_FLAGS_3(fdiv, TCG_CALL_NO_WG, f32, env, f32, f32)
-DEF_HELPER_FLAGS_3(fcmp, TCG_CALL_NO_WG, void, env, f32, f32)
-DEF_HELPER_FLAGS_2(ftoi, TCG_CALL_NO_WG, i32, env, f32)
-DEF_HELPER_FLAGS_2(round, TCG_CALL_NO_WG, i32, env, f32)
-DEF_HELPER_FLAGS_2(itof, TCG_CALL_NO_WG, f32, env, i32)
+DEF_HELPER_3(fadd, f32, env, f32, f32)
+DEF_HELPER_3(fsub, f32, env, f32, f32)
+DEF_HELPER_3(fmul, f32, env, f32, f32)
+DEF_HELPER_3(fdiv, f32, env, f32, f32)
+DEF_HELPER_3(fcmp, void, env, f32, f32)
+DEF_HELPER_2(ftoi, i32, env, f32)
+DEF_HELPER_2(round, i32, env, f32)
+DEF_HELPER_2(itof, f32, env, i32)
 DEF_HELPER_2(set_fpsw, void, env, i32)
-DEF_HELPER_FLAGS_2(racw, TCG_CALL_NO_WG, void, env, i32)
-DEF_HELPER_FLAGS_2(set_psw_rte, TCG_CALL_NO_WG, void, env, i32)
-DEF_HELPER_FLAGS_2(set_psw, TCG_CALL_NO_WG, void, env, i32)
-DEF_HELPER_1(pack_psw, i32, env)
-DEF_HELPER_FLAGS_3(div, TCG_CALL_NO_WG, i32, env, i32, i32)
-DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i32)
-DEF_HELPER_FLAGS_1(scmpu, TCG_CALL_NO_WG, void, env)
+DEF_HELPER_2(racw, void, env, i32)
+DEF_HELPER_2(set_psw_rte, void, env, i32)
+DEF_HELPER_2(set_psw, void, env, i32)
+DEF_HELPER_FLAGS_1(pack_psw, TCG_CALL_NO_WG, i32, env)
+DEF_HELPER_3(div,  i32, env, i32, i32)
+DEF_HELPER_3(divu, i32, env, i32, i32)
+DEF_HELPER_1(scmpu, void, env)
 DEF_HELPER_1(smovu, void, env)
 DEF_HELPER_1(smovf, void, env)
 DEF_HELPER_1(smovb, void, env)
 DEF_HELPER_2(sstr, void, env, i32)
-DEF_HELPER_FLAGS_2(swhile, TCG_CALL_NO_WG, void, env, i32)
-DEF_HELPER_FLAGS_2(suntil, TCG_CALL_NO_WG, void, env, i32)
-DEF_HELPER_FLAGS_2(rmpa, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_2(swhile, void, env, i32)
+DEF_HELPER_2(suntil, void, env, i32)
+DEF_HELPER_2(rmpa, void, env, i32)
 DEF_HELPER_1(satr, void, env)
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] target/rx: gdbstub add acc register operation.
  2021-09-09 12:04 [PATCH 0/2] RX target update Yoshinori Sato
  2021-09-09 12:04 ` [PATCH 1/2] target/rx: Fix helper definiton Yoshinori Sato
@ 2021-09-09 12:04 ` Yoshinori Sato
  2021-09-09 12:41   ` Peter Maydell
  1 sibling, 1 reply; 5+ messages in thread
From: Yoshinori Sato @ 2021-09-09 12:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Yoshinori Sato

I added it because the operation of the acc register was not implemented.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 target/rx/gdbstub.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/rx/gdbstub.c b/target/rx/gdbstub.c
index c811d4810b..b5da5c42cb 100644
--- a/target/rx/gdbstub.c
+++ b/target/rx/gdbstub.c
@@ -47,7 +47,7 @@ int rx_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
     case 24:
         return gdb_get_regl(mem_buf, env->fpsw);
     case 25:
-        return 0;
+        return gdb_get_reg64(mem_buf, env->acc);
     }
     return 0;
 }
@@ -103,6 +103,7 @@ int rx_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
         env->fpsw = ldl_p(mem_buf);
         break;
     case 25:
+        env->acc = ldq_p(mem_buf);
         return 8;
     default:
         return 0;
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] target/rx: Fix helper definiton.
  2021-09-09 12:04 ` [PATCH 1/2] target/rx: Fix helper definiton Yoshinori Sato
@ 2021-09-09 12:34   ` Peter Maydell
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2021-09-09 12:34 UTC (permalink / raw)
  To: Yoshinori Sato; +Cc: QEMU Developers

On Thu, 9 Sept 2021 at 13:10, Yoshinori Sato <ysato@users.sourceforge.jp> wrote:
>
> Due to an incorrect definition of helper,
> TCG optimization could sometimes behave unexpectedly.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>

Could you give more detail, please?

I had a look at one or two -- it looks like the floating point
related helpers like fadd write to env->fpsw. That is a TCG global,
but we only use it in the implementation of the "move from FPSW
to a general-purpose register" instruction. So I think the
better fix for that case would be to stop defining fpsw as
a TCG global and instead make the "move from FPSW" insn
use tcg_gen_ld_i32() to read from env->fpsw.

Probably doing the same thing for every helper function is
not right -- some will be better handled by reducing
the use of TCG globals, and some will indeed need to have
the TCG_CALL_NO_WG flag removed.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] target/rx: gdbstub add acc register operation.
  2021-09-09 12:04 ` [PATCH 2/2] target/rx: gdbstub add acc register operation Yoshinori Sato
@ 2021-09-09 12:41   ` Peter Maydell
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2021-09-09 12:41 UTC (permalink / raw)
  To: Yoshinori Sato; +Cc: QEMU Developers

On Thu, 9 Sept 2021 at 13:08, Yoshinori Sato <ysato@users.sourceforge.jp> wrote:
>
> I added it because the operation of the acc register was not implemented.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  target/rx/gdbstub.c | 3 ++-

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-09 12:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-09 12:04 [PATCH 0/2] RX target update Yoshinori Sato
2021-09-09 12:04 ` [PATCH 1/2] target/rx: Fix helper definiton Yoshinori Sato
2021-09-09 12:34   ` Peter Maydell
2021-09-09 12:04 ` [PATCH 2/2] target/rx: gdbstub add acc register operation Yoshinori Sato
2021-09-09 12:41   ` Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.