1/*
2 * arch/i386/libgcc/__divdi3.c
3 */
4
5#include <stdint.h>
6#include <stddef.h>
7
8extern uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t * rem);
9
10int64_t __divdi3(int64_t num, int64_t den)
11{
12    int minus = 0;
13    int64_t v;
14
15    if (num < 0) {
16	num = -num;
17	minus = 1;
18    }
19    if (den < 0) {
20	den = -den;
21	minus ^= 1;
22    }
23
24    v = __udivmoddi4(num, den, NULL);
25    if (minus)
26	v = -v;
27
28    return v;
29}
30