http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53037
--- Comment #7 from H. Peter Anvin <hpa at zytor dot com> 2012-04-19 16:57:14 UTC --- The __u64/__s64 types are used for interfaces only. The kernel itself is x86-64 and uses aligned types for internal uses. The mismatch between i386 and x86-64 alignment has a tendency to cause unexpected bugs, and Linus would like to avoid those by having new interfaces use aligned types consistently.