#define DIV_CR (*(vuint16*)(0x04000280)) #define DIV_NUMERATOR64 (*(vint64*) (0x04000290)) #define DIV_NUMERATOR32 (*(vint32*) (0x04000290)) #define DIV_DENOMINATOR64 (*(vint64*) (0x04000298)) #define DIV_DENOMINATOR32 (*(vint32*) (0x04000298)) #define DIV_RESULT64 (*(vint64*) (0x040002A0)) #define DIV_RESULT32 (*(vint32*) (0x040002A0)) #define DIV_REMAINDER64 (*(vint64*) (0x040002A8)) #define DIV_REMAINDER32 (*(vint32*) (0x040002A8)) // Integer divide // Takes a 32 bit numerator and 32 bit // denominator and returns 32 bit result static inline int32 mod32(int32 num, int32 den) { DIV_CR = DIV_32_32; while(DIV_CR & DIV_BUSY); DIV_NUMERATOR32 = num; DIV_DENOMINATOR32 = den; while(DIV_CR & DIV_BUSY); return (DIV_REMAINDER32); }