1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/* * libgcc/__divsi3.c */ #include <stdint.h> #include <stddef.h> extern uint32_t __udivmodsi4(uint32_t num, uint32_t den, uint32_t * rem); int32_t __divsi3(int32_t num, int32_t den) { int minus = 0; int32_t v; if (num < 0) { num = -num; minus = 1; } if (den < 0) { den = -den; minus ^= 1; } v = __udivmodsi4(num, den, NULL); if (minus) v = -v; return v; }