summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>2021-05-11 11:40:10 +0300
committerLaurent Vivier <laurent@vivier.eu>2021-06-05 21:17:10 +0200
commitdd6921894905c8ce0664a77f9dac78408bc3b52d (patch)
treed25e047fbdade4f9e32c259765fdc23b5cc99d1e
parentd7878875ae09e9c59aa2bd52e6f289cb845e944e (diff)
downloadqemu-dd6921894905c8ce0664a77f9dac78408bc3b52d.zip
target/nios2: fix page-fit instruction count
This patch fixes calculation of number of the instructions that fit the current page. It prevents creation of the translation blocks that cross the page boundaries. It is required for deterministic exception generation in icount mode. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <162072241046.823357.10485774346114851009.stgit@pasha-ThinkPad-X280> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r--target/nios2/translate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
index 9824544eb3..399f22d938 100644
--- a/target/nios2/translate.c
+++ b/target/nios2/translate.c
@@ -829,7 +829,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
/* Set up instruction counts */
num_insns = 0;
if (max_insns > 1) {
- int page_insns = (TARGET_PAGE_SIZE - (tb->pc & TARGET_PAGE_MASK)) / 4;
+ int page_insns = (TARGET_PAGE_SIZE - (tb->pc & ~TARGET_PAGE_MASK)) / 4;
if (max_insns > page_insns) {
max_insns = page_insns;
}