summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch35
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))