Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / libgcc / __udivmoddi4.c
diff --git a/qemu/roms/openbios/libgcc/__udivmoddi4.c b/qemu/roms/openbios/libgcc/__udivmoddi4.c
new file mode 100644 (file)
index 0000000..bed70e1
--- /dev/null
@@ -0,0 +1,31 @@
+#include "libgcc.h"
+
+uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem_p)
+{
+  uint64_t quot = 0, qbit = 1;
+
+  if ( den == 0 ) {
+    __divide_error();
+    return 0;                  /* If trap returns... */
+  }
+
+  /* Left-justify denominator and count shift */
+  while ( (int64_t)den >= 0 ) {
+    den <<= 1;
+    qbit <<= 1;
+  }
+
+  while ( qbit ) {
+    if ( den <= num ) {
+      num -= den;
+      quot += qbit;
+    }
+    den >>= 1;
+    qbit >>= 1;
+  }
+
+  if ( rem_p )
+    *rem_p = num;
+
+  return quot;
+}