Message ID | 162072241046.823357.10485774346114851009.stgit@pasha-ThinkPad-X280 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/nios2: fix page-fit instruction count | expand |
ping On 11.05.2021 11:40, 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> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > --- > 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; > } >
Laurent, how about through trivial? r~ On 5/24/21 11:40 PM, Pavel Dovgalyuk wrote: > ping > > On 11.05.2021 11:40, 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> >> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >> --- >> 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; >> } >> >
Le 25/05/2021 à 16:28, Richard Henderson a écrit : > Laurent, how about through trivial? Applied to my trivial-patches branch. Thanks, Laurent > > r~ > > On 5/24/21 11:40 PM, Pavel Dovgalyuk wrote: >> ping >> >> On 11.05.2021 11:40, 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> >>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >>> --- >>> 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; >>> } >>> >> > >
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; }