On 06/12/2023 8:46 am, Jan Beulich wrote: > On 06.12.2023 08:10, Juergen Gross wrote: >> Instead of defining get_unaligned() and put_unaligned() in a way that >> is only supporting architectures allowing unaligned accesses, use the >> same approach as the Linux kernel and let the compiler do the >> decision how to generate the code for probably unaligned data accesses. >> >> Update include/xen/unaligned.h from include/asm-generic/unaligned.h of >> the Linux kernel. >> >> The generated code has been checked to be the same on x86. >> >> Modify the Linux variant to not use underscore prefixed identifiers, >> avoid unneeded parentheses and drop the 24-bit accessors. >> >> Signed-off-by: Arnd Bergmann <a...@arndb.de> >> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git >> 803f4e1eab7a >> Signed-off-by: Juergen Gross <jgr...@suse.com> > Acked-by: Jan Beulich <jbeul...@suse.com> > > Nevertheless ... > >> @@ -15,67 +7,82 @@ >> #include <asm/byteorder.h> >> #endif >> >> -#define get_unaligned(p) (*(p)) >> -#define put_unaligned(val, p) (*(p) = (val)) >> +/* >> + * This is the most generic implementation of unaligned accesses >> + * and should work almost anywhere. >> + */ >> + >> +#define get_unaligned_t_(type, ptr) ({ >> \ > ..., do we need the trailing underscores here in addition to the already > sufficiently clear _t suffixes? (Leaving aside that ..._t generally is to > denote types, not macros or functions.)
_t is fine. It's what we use for {min,max}_t() and friends too. ~Andrew