aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/add__divmoddi4.patch
blob: 8dd30a20ef18eecc9eb4575c2fa938d96789a220 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
add __divmoddi4 builtin

GCC 11 will generate it in code

void foo(unsigned char *u8Second, unsigned int *u32Nanosecond, long long timeSpec)
{
    long long i64Div;
    int i32Div;
    int i32Rem;
    i64Div = timeSpec;
    i32Rem = (int)(i64Div % 1000000000);
    i64Div /= 1000000000;
    *u32Nanosecond = i32Rem;
    i32Rem = (int)(i64Div % 60);
    *u8Second = i32Rem;
}


Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>

--- a/src/VBox/Runtime/common/math/gcc/divdi3.c
+++ b/src/VBox/Runtime/common/math/gcc/divdi3.c
@@ -68,3 +68,12 @@ __divdi3(a, b)
 		uq = - uq;
 	return uq;
 }
+
+quad_t
+__divmoddi4(quad_t a, quad_t b, quad_t* rem)
+{
+	quad_t d = __divdi3(a,b);
+	*rem = a - (d*b);
+	return d;
+}
+