From: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: shorne@gmail.com, pavel.dovgalyuk@ispras.ru, proljc@gmail.com
Subject: [PATCH] target/openrisc: fix icount handling for timer instructions
Date: Mon, 29 Mar 2021 10:42:41 +0300 [thread overview]
Message-ID: <161700376169.1135890.8707223959310729949.stgit@pasha-ThinkPad-X280> (raw)
This patch adds icount handling to mfspr/mtspr instructions
that may deal with hardware timers.
Signed-off-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
---
target/openrisc/translate.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c
index c6dce879f1..a9c81f8bd5 100644
--- a/target/openrisc/translate.c
+++ b/target/openrisc/translate.c
@@ -884,6 +884,18 @@ static bool trans_l_mfspr(DisasContext *dc, arg_l_mfspr *a)
gen_illegal_exception(dc);
} else {
TCGv spr = tcg_temp_new();
+
+ if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) {
+ gen_io_start();
+ if (dc->delayed_branch) {
+ tcg_gen_mov_tl(cpu_pc, jmp_pc);
+ tcg_gen_discard_tl(jmp_pc);
+ } else {
+ tcg_gen_movi_tl(cpu_pc, dc->base.pc_next + 4);
+ }
+ dc->base.is_jmp = DISAS_EXIT;
+ }
+
tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k);
gen_helper_mfspr(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->d), spr);
tcg_temp_free(spr);
@@ -898,6 +910,9 @@ static bool trans_l_mtspr(DisasContext *dc, arg_l_mtspr *a)
} else {
TCGv spr;
+ if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) {
+ gen_io_start();
+ }
/* For SR, we will need to exit the TB to recognize the new
* exception state. For NPC, in theory this counts as a branch
* (although the SPR only exists for use by an ICE). Save all
next reply other threads:[~2021-03-29 7:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-29 7:42 Pavel Dovgalyuk [this message]
2021-03-30 22:05 ` [PATCH] target/openrisc: fix icount handling for timer instructions Stafford Horne
2021-03-31 7:27 ` Pavel Dovgalyuk
2021-03-31 12:33 ` Stafford Horne
2021-03-31 12:48 ` Pavel Dovgalyuk
2021-03-31 14:30 ` Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2020-11-05 11:54 Pavel Dovgalyuk
2020-11-05 21:39 ` Richard Henderson
2020-11-06 6:36 ` Pavel Dovgalyuk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=161700376169.1135890.8707223959310729949.stgit@pasha-ThinkPad-X280 \
--to=pavel.dovgalyuk@ispras.ru \
--cc=proljc@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=shorne@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).