POK(kernelpart)
/home/jaouen/pok_official/pok/trunk/kernel/libc/__udivdi3.c
Go to the documentation of this file.
00001 /*
00002  *                               POK header
00003  * 
00004  * The following file is a part of the POK project. Any modification should
00005  * made according to the POK licence. You CANNOT use this file or a part of
00006  * this file is this part of a file for your own project
00007  *
00008  * For more information on the POK licence, please see our LICENCE FILE
00009  *
00010  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
00011  *
00012  *                                      Copyright (c) 2007-2009 POK team 
00013  *
00014  * Created by julien on Thu Jan 15 23:34:13 2009 
00015  */
00016 
00017 
00018 
00019 unsigned long long __udivdi3 (unsigned long long num,
00020                                              unsigned long long den)
00021 {
00022 #ifdef POK_NEEDS_DEBUG
00023    unsigned long long quot, qbit;
00024 
00025    quot = 0;
00026    qbit = 1;
00027 
00028    if (den == 0)
00029    {
00030       return 0;
00031    }
00032 
00033    while ((long long) den >= 0)
00034    {
00035       den <<= 1;
00036       qbit <<= 1;
00037    }
00038 
00039    while (qbit)
00040    {
00041       if (den <= num)
00042       {
00043          num -= den;
00044          quot += qbit;
00045       }
00046       den >>= 1;
00047       qbit >>= 1;
00048    }
00049 
00050    return quot;
00051 #else
00052    (void) num;
00053    (void) den;
00054    return 0;
00055 #endif
00056 }
00057