A bug was introduced in following commit:
dc0ad84 target/ppc: update overflow flags for add/sub
As for 32-bit ppc target extracting bit 63 for overflow is not correct.
Made it dependent on TARGET_LOG_BITS. This had broken booting MacOS
9.2.1 image
Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
---
target/ppc/translate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index b6abc60..f40b5a1 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -818,7 +818,7 @@ static inline void gen_op_arith_compute_ov(DisasContext *ctx, TCGv arg0,
if (is_isa300(ctx)) {
tcg_gen_extract_tl(cpu_ov32, cpu_ov, 31, 1);
}
- tcg_gen_extract_tl(cpu_ov, cpu_ov, 63, 1);
+ tcg_gen_extract_tl(cpu_ov, cpu_ov, TARGET_LONG_BITS - 1, 1);
}
tcg_gen_or_tl(cpu_so, cpu_so, cpu_ov);
}
--
2.9.3
On 13/03/17 09:31, Nikunj A Dadhania wrote:
> A bug was introduced in following commit:
>
> dc0ad84 target/ppc: update overflow flags for add/sub
>
> As for 32-bit ppc target extracting bit 63 for overflow is not correct.
> Made it dependent on TARGET_LOG_BITS. This had broken booting MacOS
> 9.2.1 image
>
> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
> ---
> target/ppc/translate.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
> index b6abc60..f40b5a1 100644
> --- a/target/ppc/translate.c
> +++ b/target/ppc/translate.c
> @@ -818,7 +818,7 @@ static inline void gen_op_arith_compute_ov(DisasContext *ctx, TCGv arg0,
> if (is_isa300(ctx)) {
> tcg_gen_extract_tl(cpu_ov32, cpu_ov, 31, 1);
> }
> - tcg_gen_extract_tl(cpu_ov, cpu_ov, 63, 1);
> + tcg_gen_extract_tl(cpu_ov, cpu_ov, TARGET_LONG_BITS - 1, 1);
> }
> tcg_gen_or_tl(cpu_so, cpu_so, cpu_ov);
> }
>
Hi Nikunj,
I can confirm that this patch fixes the segfault for me - thanks!
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
However even with this fix in place, I'm still seeing strange horizontal
artifacts on the screen as demonstrated here:
https://www.ilande.co.uk/tmp/qemu/macos9-stripe.png
With the patch above I'll try bisecting again later today to try and
understand where these lines are coming from. So far I've spotted them
in MacOS 9 and OS X during tests...
ATB,
Mark.
On 13/03/17 12:54, Mark Cave-Ayland wrote: > With the patch above I'll try bisecting again later today to try and > understand where these lines are coming from. So far I've spotted them > in MacOS 9 and OS X during tests... Okay - I've completed the bisection, and the artifacts I'm seeing aren't related to any of the PPC patches. Thanks once again for looking into this. ATB, Mark.
On Mon, Mar 13, 2017 at 03:01:04PM +0530, Nikunj A Dadhania wrote:
> A bug was introduced in following commit:
>
> dc0ad84 target/ppc: update overflow flags for add/sub
>
> As for 32-bit ppc target extracting bit 63 for overflow is not correct.
> Made it dependent on TARGET_LOG_BITS. This had broken booting MacOS
> 9.2.1 image
>
> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Applied to ppc-for-2.9, thanks.
> ---
> target/ppc/translate.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
> index b6abc60..f40b5a1 100644
> --- a/target/ppc/translate.c
> +++ b/target/ppc/translate.c
> @@ -818,7 +818,7 @@ static inline void gen_op_arith_compute_ov(DisasContext *ctx, TCGv arg0,
> if (is_isa300(ctx)) {
> tcg_gen_extract_tl(cpu_ov32, cpu_ov, 31, 1);
> }
> - tcg_gen_extract_tl(cpu_ov, cpu_ov, 63, 1);
> + tcg_gen_extract_tl(cpu_ov, cpu_ov, TARGET_LONG_BITS - 1, 1);
> }
> tcg_gen_or_tl(cpu_so, cpu_so, cpu_ov);
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
© 2016 - 2025 Red Hat, Inc.