[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |