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

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