summaryrefslogtreecommitdiff
path: root/arch/sh/lib/div64-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/lib/div64-generic.c')
-rw-r--r--arch/sh/lib/div64-generic.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/sh/lib/div64-generic.c b/arch/sh/lib/div64-generic.c
new file mode 100644
index 00000000..60e76aa8
--- /dev/null
+++ b/arch/sh/lib/div64-generic.c
@@ -0,0 +1,19 @@
+/*
+ * Generic __div64_32 wrapper for __xdiv64_32.
+ */
+
+#include <linux/types.h>
+#include <asm/div64.h>
+
+extern uint64_t __xdiv64_32(u64 n, u32 d);
+
+uint32_t __div64_32(u64 *xp, u32 y)
+{
+ uint32_t rem;
+ uint64_t q = __xdiv64_32(*xp, y);
+
+ rem = *xp - q * y;
+ *xp = q;
+
+ return rem;
+}