From: Philippe Bergheaud <felix@linux.vnet.ibm.com>
Subject: powerpc/boot: fix do_div for 64bit wrapper
Patch-mainline: v3.16-rc1
Git-commit: f4bce2f784706800efcab6830111df9b75c2f199
References: fate#315275, LTC#104787, bnc#865994
X-Patchwork-Id: 318081

Summary:     SLES 12 - Additional POWER LE kernel patches for SLES 12 Beta2
Description: Add little-endian support for POWER8.

Upstream-Description:

    When the boot wrapper is compiled in 64bit, there is no need to
    use __div64_32.
    
    Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>

Signed-off-by: Philippe Bergheaud <felix@linux.vnet.ibm.com>
Acked-by: Torsten Duwe <duwe@suse.de>
---
arch/powerpc/boot/stdio.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/powerpc/boot/stdio.c b/arch/powerpc/boot/stdio.c
index 5b57800bbc67..a701261b1781 100644
--- a/arch/powerpc/boot/stdio.c
+++ b/arch/powerpc/boot/stdio.c
@@ -21,6 +21,18 @@ size_t strnlen(const char * s, size_t count)
 	return sc - s;
 }
 
+#ifdef __powerpc64__
+
+# define do_div(n, base) ({						\
+	unsigned int __base = (base);					\
+	unsigned int __rem;						\
+	__rem = ((unsigned long long)(n)) % __base;			\
+	(n) = ((unsigned long long)(n)) / __base;			\
+	__rem;								\
+})
+
+#else
+
 extern unsigned int __div64_32(unsigned long long *dividend,
 			       unsigned int divisor);
 
@@ -39,6 +51,8 @@ extern unsigned int __div64_32(unsigned long long *dividend,
 	__rem;								\
  })
 
+#endif /* __powerpc64__ */
+
 static int skip_atoi(const char **s)
 {
 	int i, c;
