qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [sparc32] do_unassigned_access vs. cpu_sparc_handle_mmu_fault
@ 2009-12-16 19:11 Artyom Tarasenko
  2009-12-19 10:45 ` [Qemu-devel] " Blue Swirl
  0 siblings, 1 reply; 2+ messages in thread
From: Artyom Tarasenko @ 2009-12-16 19:11 UTC (permalink / raw)
  To: qemu-devel, Blue Swirl

The function do_unassigned_access in op_helper.c looks very similar
 to the function cpu_sparc_handle_mmu_fault in helper.c and it is
called after the later one.

Why do we need to set env->mmuregs[3] and env->mmuregs[4]  twice?
Setting the SFSR and SFAR in do_unassigned_access looks redundant to
me and actually the second setting env->mmuregs[3] will also set the
overflow flag and therefore produce a wrong result.

Also

env->mmuregs[4] = addr;

looks wrong because addr is definied as target_phys_addr_t, so there
is a cast to the smaller uint_32 type.

If I remove the suspicious code from do_unassigned_access I can boot
Solaris 2.6.
Shall I produce a patch for 0.12?

-- 
Regards,
Artyom Tarasenko

solaris/sparc under qemu blog: http://tyom.blogspot.com/

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Qemu-devel] Re: [sparc32] do_unassigned_access vs. cpu_sparc_handle_mmu_fault
  2009-12-16 19:11 [Qemu-devel] [sparc32] do_unassigned_access vs. cpu_sparc_handle_mmu_fault Artyom Tarasenko
@ 2009-12-19 10:45 ` Blue Swirl
  0 siblings, 0 replies; 2+ messages in thread
From: Blue Swirl @ 2009-12-19 10:45 UTC (permalink / raw)
  To: Artyom Tarasenko; +Cc: qemu-devel

On Wed, Dec 16, 2009 at 7:11 PM, Artyom Tarasenko
<atar4qemu@googlemail.com> wrote:
> The function do_unassigned_access in op_helper.c looks very similar
>  to the function cpu_sparc_handle_mmu_fault in helper.c and it is
> called after the later one.
>
> Why do we need to set env->mmuregs[3] and env->mmuregs[4]  twice?
> Setting the SFSR and SFAR in do_unassigned_access looks redundant to
> me and actually the second setting env->mmuregs[3] will also set the
> overflow flag and therefore produce a wrong result.
>
> Also
>
> env->mmuregs[4] = addr;
>
> looks wrong because addr is definied as target_phys_addr_t, so there
> is a cast to the smaller uint_32 type.
>
> If I remove the suspicious code from do_unassigned_access I can boot
> Solaris 2.6.
> Shall I produce a patch for 0.12?

Please do, though as 0.12.0 has been tagged, it may be 0.12.1 material
or just for HEAD.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-12-19 10:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-16 19:11 [Qemu-devel] [sparc32] do_unassigned_access vs. cpu_sparc_handle_mmu_fault Artyom Tarasenko
2009-12-19 10:45 ` [Qemu-devel] " Blue Swirl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).