Index: kernel/genarch/src/softint/division.c
===================================================================
--- kernel/genarch/src/softint/division.c	(revision 5a6a42f4d0f7e33bc079117b49c6e2ad4840ea1c)
+++ kernel/genarch/src/softint/division.c	(revision 8bcd727b2a0fd44ad4c48eabace4bad900ba75f2)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup genarch	
+/** @addtogroup genarch
  * @{
  */
@@ -186,4 +186,18 @@
 }
 
+int __divmodsi3(int a, int b, int *c)
+{
+	unsigned int rem;
+	int result = (int) divandmod32(ABSVAL(a), ABSVAL(b), &rem);
+	
+	if (SGN(a) == SGN(b)) {
+		*c = rem;
+		return result;
+	}
+	
+	*c = -rem;
+	return -result;
+}
+
 unsigned int __udivmodsi3(unsigned int a, unsigned int b,
     unsigned int *c)
@@ -192,4 +206,18 @@
 }
 
+long long __divmoddi3(long long a, long long b, long long *c)
+{
+	unsigned long long rem;
+	long long result = (int) divandmod64(ABSVAL(a), ABSVAL(b), &rem);
+	
+	if (SGN(a) == SGN(b)) {
+		*c = rem;
+		return result;
+	}
+	
+	*c = -rem;
+	return -result;
+}
+
 unsigned long long __udivmoddi3(unsigned long long a, unsigned long long b,
     unsigned long long *c)
Index: kernel/genarch/src/softint/multiplication.c
===================================================================
--- kernel/genarch/src/softint/multiplication.c	(revision 5a6a42f4d0f7e33bc079117b49c6e2ad4840ea1c)
+++ kernel/genarch/src/softint/multiplication.c	(revision 8bcd727b2a0fd44ad4c48eabace4bad900ba75f2)
@@ -29,5 +29,5 @@
 /** @addtogroup genarch
  * @{
- */ 
+ */
 /**
  * @file
@@ -130,5 +130,5 @@
 
 	return result;
-}	
+}
 
 /** @}
