diff --git a/Makefile b/Makefile index 78145cdf..a6b876b8 100644 --- a/Makefile +++ b/Makefile @@ -193,6 +193,7 @@ build/src/libultra/2C700.o: OPTFLAGS := -O1 -g0 build/src/libultra/2D300.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/controller.o: OPTFLAGS := -O1 -g0 build/src/libultra/libc/string.o: OPTFLAGS := -O2 -g0 +build/src/libultra/libc/ldiv.o: OPTFLAGS := -O2 -g0 # cc & asm-processor build/src/%.o: CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(CC) -- $(AS) $(ASFLAGS) -- diff --git a/src/libultra/libc/ldiv.c b/src/libultra/libc/ldiv.c index 899d716f..657071f6 100644 --- a/src/libultra/libc/ldiv.c +++ b/src/libultra/libc/ldiv.c @@ -1,7 +1,18 @@ #include "global.h" #include "libc/stdlib.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ldiv/lldiv.s") +lldiv_t lldiv(long long numer, long long denom) { + lldiv_t val; + + val.quot = numer / denom; + val.rem = numer - denom * val.quot; + if ((val.quot < 0) && (val.rem > 0)) { + val.quot++; + val.rem -= denom; + } + + return val; +} ldiv_t ldiv(long numer, long denom) { ldiv_t val;