Ian Jackson writes ("Re: [Xen-devel] [PATCH 4/4] xen/public: arm: rework the macro set_xen_guest_handle_raw"): > Stefano Stabellini writes ("Re: [Xen-devel] [PATCH 4/4] xen/public: arm: > rework the macro set_xen_guest_handle_raw"): > > Finally, based on the defect report #283 [2], the behavior of writing > > from one member and reading from another is not clear. > > Because the hypervisor is compiled with -fno-strict-aliasing.
Incidentally, it is _necessary_ to write to the uint64_t last. C99 6.2.6.1(5) says that if you write to the 32-bit pointer, the upper bits (corresponding to the uint64 but not part of the pointer) take on unspecified values. So writing the 32-bit pointer always invalidates the top bits, so if you write to the uint64_t first, the 32-bit write makes the 64-bit write a dead store. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel