Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 811 → Rev 1196

/kernel/trunk/genarch/src/softint/division.c
65,10 → 65,10
}
 
 
static unsigned long divandmod64(unsigned long a, unsigned long b, unsigned long *remainder)
static unsigned long long divandmod64(unsigned long long a, unsigned long long b, unsigned long long *remainder)
{
unsigned long result;
int steps = sizeof(unsigned long) * 8;
unsigned long long result;
int steps = sizeof(unsigned long long) * 8;
*remainder = 0;
result = 0;
111,12 → 111,12
}
 
/* 64bit integer division */
long __divdi3(long a, long b)
long long __divdi3(long long a, long long b)
{
unsigned long rem;
long result;
unsigned long long rem;
long long result;
result = (long)divandmod64(ABSVAL(a), ABSVAL(b), &rem);
result = (long long)divandmod64(ABSVAL(a), ABSVAL(b), &rem);
 
if ( SGN(a) == SGN(b)) return result;
return -result;
130,9 → 130,9
}
 
/* 64bit unsigned integer division */
unsigned long __udivdi3(unsigned long a, unsigned long b)
unsigned long long __udivdi3(unsigned long long a, unsigned long long b)
{
unsigned long rem;
unsigned long long rem;
return divandmod64(a, b, &rem);
}
 
151,17 → 151,17
}
 
/* 64bit remainder of the signed division */
long __moddi3(long a, long b)
long long __moddi3(long long a,long long b)
{
unsigned long rem;
unsigned long long rem;
divandmod64(a, b, &rem);
/* if divident is negative, remainder must be too */
if (!(SGN(a))) {
return -((long)rem);
return -((long long)rem);
}
return (long)rem;
return (long long)rem;
}
 
/* 32bit remainder of the unsigned division */
173,14 → 173,14
}
 
/* 64bit remainder of the unsigned division */
unsigned long __umoddi3(unsigned long a, unsigned long b)
unsigned long long __umoddi3(unsigned long long a, unsigned long long b)
{
unsigned long rem;
unsigned long long rem;
divandmod64(a, b, &rem);
return rem;
}
 
unsigned long __udivmoddi3(unsigned long a, unsigned long b, unsigned long *c)
unsigned long long __udivmoddi3(unsigned long long a, unsigned long long b, unsigned long long *c)
{
return divandmod64(a, b, c);
}