3 * - By John Hodge (thePowersGang)
9 #include "../helpers.h"
10 #include <drv_pci_int.h>
12 Uint64 __divmod64(Uint64 Num, Uint64 Den, Uint64 *Rem);
13 Uint64 __udivdi3(Uint64 Num, Uint64 Den);
14 Uint64 __umoddi3(Uint64 Num, Uint64 Den);
17 void *memcpy(void *__dest, const void *__src, size_t __len)
19 register Uint8 *dest = __dest;
20 register const Uint8 *src = __src;
28 void *memset(void *__dest, int __val, size_t __count)
30 register Uint8 *dest = __dest;
38 int memcmp(const void *__p1, const void *__p2, size_t __maxlen)
40 const char *m1 = __p1, *m2 = __p2;
43 if(*m1 != *m2) return *m1 - *m2;
50 Uint64 DivMod64U(Uint64 Num, Uint64 Den, Uint64 *Rem)
53 if(Den == 0) return 0; // TODO: #div0
67 if(Rem) *Rem = Num & 1;
71 if(Rem) *Rem = Num & 0xF;
75 if(Rem) *Rem = Num & 0x1F;
79 if(Rem) *Rem = Num & 0xFFF;
83 if( !(Den >> 32) && !(Num >> 32) ) {
84 if(Rem) *Rem = (Uint32)Num % (Uint32)Den; // Clear high bits
85 return (Uint32)Num / (Uint32)Den;
88 ret = __divmod64(Num, Den, Rem);
92 // Unsigned Divide 64-bit Integer
93 Uint64 __udivdi3(Uint64 Num, Uint64 Den)
95 return DivMod64U(Num, Den, NULL);
98 // Unsigned Modulus 64-bit Integer
99 Uint64 __umoddi3(Uint64 Num, Uint64 Den)
102 DivMod64U(Num, Den, &ret);
106 // ---- PCI (stubbed)
107 Uint32 PCI_CfgReadDWord(Uint32 Addr)
111 void PCI_CfgWriteDWord(Uint32 Addr, Uint32 Data)