#line 2 "../src/kernel/mips/asm0.h"
#ifdef ASMINLINE
#define LOCAL_HIREMAINDER register ulong hiremainder
#define LOCAL_OVERFLOW register ulong overflow
#define mulll(a, b) \
__extension__ ({ ulong __value, __arg1 = (a), __arg2 = (b); \
__asm__ ("multu %2,%3\n\tmfhi %1" \
: "=&l" (__value), "=&r" (hiremainder) \
: "r" (__arg1), "r" (__arg2) \
: "hi"); \
__value; \
})
#define addmul(a, b) \
__extension__ ({ \
ulong __arg1 = (a), __arg2 = (b), __value, __tmp; \
__asm__ ("multu %3,%4\n\tmfhi %0\n\tmflo %2\n\t" \
"addu %1,%2,%5\n\tsltu %2,%1,%5\n\taddu %0,%0,%2" \
: "=&r" (hiremainder), "=&r" (__value), "=&r" (__tmp) \
: "r" (__arg1), "r" (__arg2), "r" (hiremainder) \
: "hi", "lo"); \
__value; \
})
#endif