[PATCH] target/nios2: fix page-fit instruction count

Pavel Dovgalyuk posted 1 patch 2 years, 11 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/161761084874.267629.6627766310804625252.stgit@pasha-ThinkPad-X280
Maintainers: Chris Wulff <crwulff@gmail.com>, Marek Vasut <marex@denx.de>
There is a newer version of this series
target/nios2/translate.c |    2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] target/nios2: fix page-fit instruction count
Posted by Pavel Dovgalyuk 2 years, 11 months ago
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>
---
 target/nios2/translate.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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;
         }


Re: [PATCH] target/nios2: fix page-fit instruction count
Posted by Richard Henderson 2 years, 11 months ago
On 4/5/21 1:20 AM, Pavel Dovgalyuk wrote:
> 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>
> ---
>   target/nios2/translate.c |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~