diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-02-26 15:11:07 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-02-26 15:11:07 +0000 |
commit | 480b3a06d1fd212851286a9803ffed70bbe3d9d9 (patch) | |
tree | 76fc9ab89798e025d9a77fc44148f73cac826250 /extras/mini-os/lib | |
parent | 1511fb10045ecf8aad67a08df0d8cf5b63346fc4 (diff) | |
download | xen-480b3a06d1fd212851286a9803ffed70bbe3d9d9.tar.gz xen-480b3a06d1fd212851286a9803ffed70bbe3d9d9.tar.bz2 xen-480b3a06d1fd212851286a9803ffed70bbe3d9d9.zip |
stubdom: fix x86_32 compilation by __moddi3 from FreeBSD
(like has been done previously for umoddi3 etc.)
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/lib')
-rw-r--r-- | extras/mini-os/lib/math.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/extras/mini-os/lib/math.c b/extras/mini-os/lib/math.c index 807bcc8e0d..f1f7826080 100644 --- a/extras/mini-os/lib/math.c +++ b/extras/mini-os/lib/math.c @@ -388,6 +388,29 @@ __umoddi3(u_quad_t a, u_quad_t b) return (r); } +/* + * Return remainder after dividing two signed quads. + * + * XXX + * If -1/2 should produce -1 on this machine, this code is wrong. + */ +quad_t +__moddi3(quad_t a, quad_t b) +{ + u_quad_t ua, ub, ur; + int neg; + + if (a < 0) + ua = -(u_quad_t)a, neg = 1; + else + ua = a, neg = 0; + if (b < 0) + ub = -(u_quad_t)b; + else + ub = b; + (void)__qdivrem(ua, ub, &ur); + return (neg ? -ur : ur); +} #endif /* !defined(__ia64__) */ #ifndef HAVE_LIBC |