It appears the problem is the addic translation does not correctly set/reset the carry bit, and this is a regression vs the source base on 3/7/2007. With the change here, I can boot the ppc-prep machine again and use ethernet.
If you would like a pre-compiled binary of the test case, let me know because it was too big to send to the list.
signed-off-by: [EMAIL PROTECTED] Jason. J. Mayer wrote:
Hi, My concern is I cannot reproduce your problem for the following reasons: - the PREP machine (and the heathrow too...) is broken and cannot even boot. PCI and/or IRQ are broken, so the Linux kernel hangs. - when using the "known to work" Linux distributions on the mac99 machine (please take a look at the STATUS file), I am able to download a kernel from www.kernel.org, which makes me think TCP packets are sent and received correctly, with valid checksums. Then, it would be a great thing if you could isolate the failing routine and, for example, make a test case usable with linux-user emulation. This would be a great help to solve this issue. Thanks by advance.
Index: qemu/target-ppc/translate.c =================================================================== --- qemu.orig/target-ppc/translate.c +++ qemu/target-ppc/translate.c @@ -772,16 +772,14 @@ GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x0 target_long simm = SIMM(ctx->opcode); gen_op_load_gpr_T0(rA(ctx->opcode)); - if (likely(simm != 0)) { - gen_op_move_T2_T0(); - gen_op_addi(simm); + gen_op_move_T2_T0(); + gen_op_addi(simm); #if defined(TARGET_PPC64) - if (ctx->sf_mode) - gen_op_check_addc_64(); - else + if (ctx->sf_mode) + gen_op_check_addc_64(); + else #endif - gen_op_check_addc(); - } + gen_op_check_addc(); gen_op_store_T0_gpr(rD(ctx->opcode)); } /* addic. */
csum_test.tar.bz2
Description: application/bzip
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel