Subject: [PATCH] powerpc: Make unaligned accesses endian-safe for powerpc

From: Rajesh B Prathipati <[email-masked]>
Date: Thu, 12 Dec 2013 21:15:56 +0530

From: Rajesh B Prathipati <[email-masked]>

The generic put_unaligned/get_unaligned macros were made endian-safe by 
calling the appropriate endian dependent macros based on the endian type 
of the powerpc processor.

Signed-off-by: Rajesh B Prathipati <[email-masked]>
---
This patch applies to linux kernel version 3.12. This patch has been 
tested and it fixes the problem with linux 3.12 USB stack.

--- linux/arch/powerpc/include/asm/unaligned.h.orig     2013-12-12 
00:07:05.329073544 -0200
+++ linux/arch/powerpc/include/asm/unaligned.h  2013-12-11 
23:56:52.918630238 -0200
@@ -4,13 +4,18 @@
  #ifdef __KERNEL__

  /*
- * The PowerPC can do unaligned accesses itself in big endian mode.
+ * The PowerPC can do unaligned accesses itself based on its endian mode.
   */
  #include <linux/unaligned/access_ok.h>
  #include <linux/unaligned/generic.h>

+#ifdef __LITTLE_ENDIAN__
+#define get_unaligned  __get_unaligned_le
+#define put_unaligned  __put_unaligned_le
+#else
  #define get_unaligned  __get_unaligned_be
  #define put_unaligned  __put_unaligned_be
+#endif

  #endif /* __KERNEL__ */
  #endif /* _ASM_POWERPC_UNALIGNED_H */