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

Re: [Xen-devel] libxc: Casting of xen virtual address type xen_vaddr_t to signed int64 type: (int64_t)vaddr



Hi Julien,

Added by mistake, sorry about that.

Thanks

On Mon, May 20, 2019 at 12:49 PM Julien Grall <julien.grall@xxxxxxx> wrote:
>
> Hi Viktor,
>
> Is there any specific reason I ended up to be CCed in a middle of an x86 
> thread?
>
> Cheers,
>
> On 20/05/2019 10:17, Viktor Mitin wrote:
> >>> Mean that result of "(int64_t)vaddr >> 63" can be 0 or 1.
> >>> So the next code may not work properly in case of another 
> >>> 'implementations'.
> >>> With another compiler (i.e. clang, etc) this code may introduce bugs
> >>> which are hard to find.
> >>>
> >>> ((int64_t)vaddr >> 47) == ((int64_t)vaddr >> 63)
> >>>
> >>> For this reason it is better to avoid implementation-defined code.
> >>
> >> Well, ideally we'd like to get away without using implementation
> >> defined behavior. But I'm afraid we're quite far from that, and
> >> we'd not always be willing to accept the worse source and/or
> >> binary code that would be needed to avoid it.
> >
> > How about using the next one-liner to avoid implementation-defined code :
> >
> > //Returns true in case when the top left 17 bits are all zero or are all one
> > return ((!(vaddr >> 47)) || (((vaddr >> 47)&0x1FFFF) == 0x1FFFF))
> >
> > Agree?
> >
> > Thanks
> >
>
> --
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.