diff options
Diffstat (limited to 'sys-fs/reiserfsprogs/files/reiserfsprogs-3.6.19-unaligned.patch')
-rw-r--r-- | sys-fs/reiserfsprogs/files/reiserfsprogs-3.6.19-unaligned.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sys-fs/reiserfsprogs/files/reiserfsprogs-3.6.19-unaligned.patch b/sys-fs/reiserfsprogs/files/reiserfsprogs-3.6.19-unaligned.patch new file mode 100644 index 000000000000..5883ce85f827 --- /dev/null +++ b/sys-fs/reiserfsprogs/files/reiserfsprogs-3.6.19-unaligned.patch @@ -0,0 +1,35 @@ +backported from 3.6.20 + +http://bugs.gentoo.org/153494 + +--- include/reiserfs_fs.h ++++ include/reiserfs_fs.h +@@ -38,14 +38,22 @@ + # define extern_inline + #endif + +-#include <asm/unaligned.h> +- + #ifndef get_unaligned +-#if defined(__ppc__) || defined(ppc) || defined(__ppc) || \ +- defined(__PPC) || defined(powerpc) || defined(__powerpc__) +-# define get_unaligned(ptr) (*(ptr)) +-# define put_unaligned(val,ptr) ((void)(*(ptr) = (val))) ++#define get_unaligned(ptr) \ ++({ \ ++ __typeof__(*(ptr)) __tmp; \ ++ memcpy(&__tmp, (ptr), sizeof(*(ptr))); \ ++ __tmp; \ ++}) + #endif ++ ++#ifndef put_unaligned ++#define put_unaligned(val, ptr) \ ++({ \ ++ __typeof__(*(ptr)) __tmp = (val); \ ++ memcpy((ptr), &__tmp, sizeof(*(ptr))); \ ++ (void)0; \ ++}) + #endif + + #define get_leXX(xx,p,field) (le##xx##_to_cpu ((p)->field)) |