/* Public domain. */ extern int __mulhi3 (int, int); int __mulhi3 (int x, int y) { char bit; int neg = 0; int rv = 0; if (y < 0) { y = - y; neg = 1; } for (bit = 0; y && bit < sizeof (y) * 8; bit ++) { if (y & 1) rv += x; x <<= 1; y >>= 1; } return neg ? - rv : rv; }