Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

m68k: merge the mmu and non-mmu versions of div64.h

Trivial merge of the mmu and non-mmu versions of div64.h

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>

+33 -33
+33 -4
arch/m68k/include/asm/div64.h
··· 1 - #ifdef __uClinux__ 2 - #include "div64_no.h" 1 + #ifndef _M68K_DIV64_H 2 + #define _M68K_DIV64_H 3 + 4 + #ifdef CONFIG_MMU 5 + 6 + #include <linux/types.h> 7 + 8 + /* n = n / base; return rem; */ 9 + 10 + #define do_div(n, base) ({ \ 11 + union { \ 12 + unsigned long n32[2]; \ 13 + unsigned long long n64; \ 14 + } __n; \ 15 + unsigned long __rem, __upper; \ 16 + \ 17 + __n.n64 = (n); \ 18 + if ((__upper = __n.n32[0])) { \ 19 + asm ("divul.l %2,%1:%0" \ 20 + : "=d" (__n.n32[0]), "=d" (__upper) \ 21 + : "d" (base), "0" (__n.n32[0])); \ 22 + } \ 23 + asm ("divu.l %2,%1:%0" \ 24 + : "=d" (__n.n32[1]), "=d" (__rem) \ 25 + : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ 26 + (n) = __n.n64; \ 27 + __rem; \ 28 + }) 29 + 3 30 #else 4 - #include "div64_mm.h" 5 - #endif 31 + #include <asm-generic/div64.h> 32 + #endif /* CONFIG_MMU */ 33 + 34 + #endif /* _M68K_DIV64_H */
-28
arch/m68k/include/asm/div64_mm.h
··· 1 - #ifndef _M68K_DIV64_H 2 - #define _M68K_DIV64_H 3 - 4 - #include <linux/types.h> 5 - 6 - /* n = n / base; return rem; */ 7 - 8 - #define do_div(n, base) ({ \ 9 - union { \ 10 - unsigned long n32[2]; \ 11 - unsigned long long n64; \ 12 - } __n; \ 13 - unsigned long __rem, __upper; \ 14 - \ 15 - __n.n64 = (n); \ 16 - if ((__upper = __n.n32[0])) { \ 17 - asm ("divul.l %2,%1:%0" \ 18 - : "=d" (__n.n32[0]), "=d" (__upper) \ 19 - : "d" (base), "0" (__n.n32[0])); \ 20 - } \ 21 - asm ("divu.l %2,%1:%0" \ 22 - : "=d" (__n.n32[1]), "=d" (__rem) \ 23 - : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ 24 - (n) = __n.n64; \ 25 - __rem; \ 26 - }) 27 - 28 - #endif /* _M68K_DIV64_H */
-1
arch/m68k/include/asm/div64_no.h
··· 1 - #include <asm-generic/div64.h>