This commit is contained in:
Alejandro Javier Asenjo Nitti
2023-10-17 18:50:39 -03:00
parent 522780c936
commit a3cd19ed4e
2 changed files with 48 additions and 11 deletions
+12
View File
@@ -194,6 +194,8 @@ 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
build/src/libultra/libc/ll.o: OPTFLAGS := -O1 -g0
build/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32
build/src/libultra/gu/ortho.o: OPTFLAGS := -O3 -g0
build/src/libultra/gu/lookat.o: OPTFLAGS := -O3 -g0
@@ -201,6 +203,8 @@ build/src/libultra/gu/lookat.o: OPTFLAGS := -O3 -g0
CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(IDO) -- $(AS) $(ASFLAGS) --
build/src/libultra/gu/lookat.o: CC := $(IDO)
build/src/libultra/gu/ortho.o: CC := $(IDO)
build/src/libultra/libc/ll.o: CC := $(IDO)
#build/src/%.o: CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(IDO) -- $(AS) $(ASFLAGS) --
all: uncompressed
@@ -298,6 +302,14 @@ $(BUILD_DIR)/%.o: %.c
$(OBJDUMP_CMD)
$(RM_MDEBUG)
# Patch ll.o
build/src/libultra/libc/ll.o: src/libultra/libc/ll.c
$(CC_CHECK) $(CC_CHECK_FLAGS) $(IINC) -I $(dir $*) $(CHECK_WARNINGS) $(BUILD_DEFINES) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(C_DEFINES) $(MIPS_BUILTIN_DEFS) -o $@ $<
$(CC) -c $(CFLAGS) $(BUILD_DEFINES) $(IINC) $(WARNINGS) $(MIPS_VERSION) $(ENDIAN) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(C_DEFINES) $(OPTFLAGS) -o $@ $<
$(PYTHON) tools/set_o32abi_bit.py $@
$(OBJDUMP_CMD)
$(RM_MDEBUG)
-include $(DEP_FILES)
# Print target for debugging
+36 -11
View File
@@ -1,21 +1,46 @@
#include "common.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ull_rshift.s")
long long __ull_rshift(unsigned long long left, unsigned long long right) {
return left >> right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ull_rem.s")
unsigned long long __ull_rem(unsigned long long left, unsigned long long right) {
return left % right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ull_div.s")
unsigned long long __ull_div(unsigned long long left, unsigned long long right) {
return left / right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_lshift.s")
long long __ll_lshift(long long left, long long right) {
return left << right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_rem.s")
long long __ll_rem(long long left, unsigned long long right) {
return left % right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_div.s")
long long __ll_div(long long left, long long right) {
return left / right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_mul.s")
long long __ll_mul(long long left, long long right) {
return left * right;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ull_divremi.s")
void __ull_divremi(unsigned long long* quotient, unsigned long long* remainder, unsigned long long dividend,
unsigned short divisor) {
*quotient = dividend / divisor;
*remainder = dividend % divisor;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_mod.s")
long long __ll_mod(long long left, long long right) {
long long rem = left % right;
if (((rem < 0) && (right > 0)) || ((rem > 0) && (right < 0))) {
rem += right;
}
return rem;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/ll/__ll_rshift.s")
long long __ll_rshift(long long left, long long right) {
return left >> right;
}