]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/boot/stdio.c
Merge remote-tracking branches 'asoc/fix/fsl-dma', 'asoc/fix/fsl-spdif', 'asoc/fix...
[karo-tx-linux.git] / arch / powerpc / boot / stdio.c
index 0a9feeb983424f53e98b047609f510adab849f26..a701261b17818118f824221e81a7177d09f004b4 100644 (file)
@@ -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;
@@ -190,7 +204,11 @@ int vsprintf(char *buf, const char *fmt, va_list args)
 
                /* get the conversion qualifier */
                qualifier = -1;
-               if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt =='Z') {
+               if (*fmt == 'l' && *(fmt + 1) == 'l') {
+                       qualifier = 'q';
+                       fmt += 2;
+               } else if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L'
+                       || *fmt == 'Z') {
                        qualifier = *fmt;
                        ++fmt;
                }
@@ -281,6 +299,10 @@ int vsprintf(char *buf, const char *fmt, va_list args)
                        num = va_arg(args, unsigned long);
                        if (flags & SIGN)
                                num = (signed long) num;
+               } else if (qualifier == 'q') {
+                       num = va_arg(args, unsigned long long);
+                       if (flags & SIGN)
+                               num = (signed long long) num;
                } else if (qualifier == 'Z') {
                        num = va_arg(args, size_t);
                } else if (qualifier == 'h') {