2127b551c6806b37913270b8ca199389a293371c
[tpg/acess2.git] / Usermode / Libraries / libgcc.so_src / libgcc.c
1 /* Acess GCC Helper Library
2  *
3  */
4 #include <sys/sys.h>
5
6 typedef unsigned long long int uint64_t;
7
8 // === CODE ===
9 int SoMain()
10 {
11         return 0;
12 }
13
14 // --- Errors ---
15 void __stack_chk_fail()
16 {
17         write(1, 32, "FATAL ERROR: Stack Check Failed\n");
18         _exit(-1);
19         for(;;);
20 }
21
22 // --- 64-Bit Math ---
23 /**
24  * \fn uint64_t __udivdi3(uint64_t Num, uint64_t Den)
25  * \brief Divide two 64-bit integers
26  */
27 uint64_t __udivdi3(uint64_t Num, uint64_t Den)
28 {
29         uint64_t        ret = 0;
30         if(Den == 0)    // Call Div by Zero Error
31                 __asm__ __volatile__ ("int $0");
32         while(Num > Den) {
33                 ret ++;
34                 Num -= Den;
35         }
36         return ret;
37 }
38
39 /**
40  * \fn uint64_t __umoddi3(uint64_t Num, uint64_t Den)
41  * \brief Get the modulus of two 64-bit integers
42  */
43 uint64_t __umoddi3(uint64_t Num, uint64_t Den)
44 {
45         if(Den == 0)    // Call Div by Zero Error
46                 __asm__ __volatile__ ("int $0");
47         while(Num > Den)
48                 Num -= Den;
49         return Num;
50 }

UCC git Repository :: git.ucc.asn.au