qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: strange crash on FreeBSD-current/amd64 (pointer tru


From: Juergen Lock
Subject: Re: [Qemu-devel] Re: strange crash on FreeBSD-current/amd64 (pointer truncation?)
Date: Sat, 3 Feb 2007 02:43:55 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

On Fri, Feb 02, 2007 at 10:24:28PM +0000, Thiemo Seufer wrote:
> Juergen Lock wrote:
> > > > Ok Jung-uk Kim found the following fix: (Thanx!)
> > > > 
> > > > --- qemu/cpu-exec.c.orig        Wed Jan 31 16:58:03 2007
> > > > +++ qemu/cpu-exec.c     Wed Jan 31 17:08:11 2007
> > > > @@ -226,9 +226,9 @@
> > > >  
> > > >  int cpu_exec(CPUState *env1)
> > > >  {
> > > > -    int saved_T0, saved_T1;
> > > > +    long saved_T0, saved_T1;
> > > >  #if defined(reg_T2)
> > > > -    int saved_T2;
> > > > +    long saved_T2;
> > > 
> > > I used target_ulong instead.
> > 
> > Isn't that 32 bit for 32 bit targets?  Then it wouldn't fix the bug,
> > the problem happened for 32 bit guests (i386-softmmu) on 64 bit hosts
> > (FreeBSD-current/amd64), there the upper half of rbx which held a
> > pointer in the calling function was lost...
> 
> Apparently I miss something here. If T0 is a (32bit) target_ulong,
> why does saving it to a (32bit) target_ulong and restoring it from
> there cause any trouble?

Hmm.  All I can say is the upper half of rbx (which holds T0) gets
spilled on FreeBSD-current/amd64 hosts unless saving and restoring
the full 64 bit of it...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]