Switch project to use host's assembler and disassemble osSetIntMask
This commit is contained in:
parent
71e3d57f0e
commit
ee1f882b5b
19
Makefile
19
Makefile
|
|
@ -7,12 +7,10 @@ QEMU_IRIX ?= tools/irix/qemu-irix
|
|||
IRIX_ROOT ?= tools/irix/root
|
||||
|
||||
IDOCC ?= $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
IDOAS ?= $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/as
|
||||
|
||||
################################################################################
|
||||
|
||||
QEMUCC = $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
QEMUAS = $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/as
|
||||
|
||||
export ROMID
|
||||
|
||||
|
|
@ -46,6 +44,11 @@ ifeq ($(ROMID),jpn-final)
|
|||
VERSION=5
|
||||
endif
|
||||
|
||||
DEFINES := VERSION=$(VERSION) NTSC=$(NTSC) PAL=$(PAL) JPN=$(JPN) PIRACYCHECKS=$(PIRACYCHECKS)
|
||||
|
||||
C_DEFINES := $(foreach d,$(DEFINES),-D$(d))
|
||||
AS_DEFINES := $(foreach d,$(DEFINES),--defsym $(d)) --defsym _LANGUAGE_ASSEMBLY=1
|
||||
|
||||
A_DIR := src/assets/$(ROMID)
|
||||
B_DIR := build/$(ROMID)
|
||||
E_DIR := extracted/$(ROMID)
|
||||
|
|
@ -62,6 +65,8 @@ else
|
|||
TOOLCHAIN := mips-elf
|
||||
endif
|
||||
|
||||
AS := $(TOOLCHAIN)-as
|
||||
|
||||
MIPSISET := -mips2 -32
|
||||
OPT_LVL := -O2
|
||||
LOOPUNROLL := -Wo,-loopunroll,0
|
||||
|
|
@ -153,11 +158,7 @@ ifeq ($(ROMID), ntsc-beta)
|
|||
$(B_DIR)/lib/ultra/io/pfsisplug.o: OPT_LVL := -O1
|
||||
endif
|
||||
|
||||
CFLAGS = -DVERSION=$(VERSION) \
|
||||
-DNTSC=$(NTSC) \
|
||||
-DPAL=$(PAL) \
|
||||
-DJPN=$(JPN) \
|
||||
-DPIRACYCHECKS=$(PIRACYCHECKS) \
|
||||
CFLAGS = $(C_DEFINES) \
|
||||
$(LOOPUNROLL) \
|
||||
-Wab,-r4300_mul \
|
||||
-non_shared \
|
||||
|
|
@ -171,6 +172,8 @@ CFLAGS = -DVERSION=$(VERSION) \
|
|||
$(OPT_LVL) \
|
||||
$(MIPSISET)
|
||||
|
||||
ASFLAGS = -march=vr4300 -mabi=32 -Isrc/include $(AS_DEFINES)
|
||||
|
||||
C_FILES := $(shell find src/lib src/game src/inflate -name '*.c')
|
||||
S_FILES := $(shell find src/lib src/game -name '*.s')
|
||||
|
||||
|
|
@ -518,7 +521,7 @@ $(B_DIR)/%.o: src/%.c $(ASSETMGR_O_FILES)
|
|||
|
||||
$(B_DIR)/%.o: src/%.s
|
||||
@mkdir -p $(dir $@)
|
||||
$(IDOAS) $(CFLAGS) $< -o $@
|
||||
cpp -P -Wno-trigraphs -I src/include $(C_DEFINES) -D_LANGUAGE_ASSEMBLY -D_MIPSEB $< | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(B_DIR)/assets/%.o: $(A_DIR)/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
# Assembly Macros
|
||||
|
||||
.macro glabel label
|
||||
.global \label
|
||||
\label:
|
||||
.endm
|
||||
|
||||
|
|
@ -1,41 +1,36 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.text
|
||||
LEAF(segGetDataStart)
|
||||
lui v0, %hi(_dataSegmentStart)
|
||||
jr ra
|
||||
addiu v0, v0, %lo(_dataSegmentStart)
|
||||
END(segGetDataStart)
|
||||
.section .text
|
||||
|
||||
LEAF(segGetDatazipRomStart)
|
||||
lui v0, %hi(_datazipSegmentRomStart)
|
||||
jr ra
|
||||
addiu v0, v0, %lo(_datazipSegmentRomStart)
|
||||
END(segGetDatazipRomStart)
|
||||
glabel segGetDataStart
|
||||
lui $v0, %hi(_dataSegmentStart)
|
||||
jr $ra
|
||||
addiu $v0, $v0, %lo(_dataSegmentStart)
|
||||
|
||||
LEAF(segGetInflateRomStart)
|
||||
lui v0, %hi(_inflateSegmentRomStart)
|
||||
jr ra
|
||||
addiu v0, v0, %lo(_inflateSegmentRomStart)
|
||||
END(segGetInflateRomStart)
|
||||
glabel segGetDatazipRomStart
|
||||
lui $v0, %hi(_datazipSegmentRomStart)
|
||||
jr $ra
|
||||
addiu $v0, $v0, %lo(_datazipSegmentRomStart)
|
||||
|
||||
LEAF(segGetInflateRomStart2)
|
||||
lui v0, %hi(_inflateSegmentRomStart)
|
||||
jr ra
|
||||
addiu v0, v0, %lo(_inflateSegmentRomStart)
|
||||
END(segGetInflateRomStart2)
|
||||
glabel segGetInflateRomStart
|
||||
lui $v0, %hi(_inflateSegmentRomStart)
|
||||
jr $ra
|
||||
addiu $v0, $v0, %lo(_inflateSegmentRomStart)
|
||||
|
||||
LEAF(segGetGamezipsRomStart)
|
||||
lui v0, %hi(_gamezipSegmentRomStart)
|
||||
jr ra
|
||||
addiu v0, v0, %lo(_gamezipSegmentRomStart)
|
||||
END(segGetGamezipsRomStart)
|
||||
glabel segGetInflateRomStart2
|
||||
lui $v0, %hi(_inflateSegmentRomStart)
|
||||
jr $ra
|
||||
addiu $v0, $v0, %lo(_inflateSegmentRomStart)
|
||||
|
||||
LEAF(bootInflate)
|
||||
lui a3, %hi(inflate1173)
|
||||
addiu a3, a3, %lo(inflate1173)
|
||||
jr a3
|
||||
glabel segGetGamezipsRomStart
|
||||
lui $v0, %hi(_gamezipSegmentRomStart)
|
||||
jr $ra
|
||||
addiu $v0, $v0, %lo(_gamezipSegmentRomStart)
|
||||
|
||||
glabel bootInflate
|
||||
lui $a3, %hi(inflate1173)
|
||||
addiu $a3, $a3, %lo(inflate1173)
|
||||
jr $a3
|
||||
nop
|
||||
END(bootInflate)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.text
|
||||
LEAF(sqrtf)
|
||||
.section .text
|
||||
|
||||
glabel sqrtf
|
||||
sqrt.s $f0, $f12
|
||||
jr ra
|
||||
END(sqrtf)
|
||||
jr $ra
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.text
|
||||
LEAF(__osGetCause)
|
||||
STAY2(mfc0 v0, C0_CAUSE)
|
||||
jr ra
|
||||
END(__osGetCause)
|
||||
.section .text
|
||||
|
||||
glabel __osGetCause
|
||||
STAY2(mfc0 $v0, C0_CAUSE)
|
||||
jr $ra
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.text
|
||||
LEAF(osGetCount)
|
||||
STAY2(mfc0 v0, C0_COUNT)
|
||||
jr ra
|
||||
END(osGetCount)
|
||||
.section .text
|
||||
|
||||
glabel osGetCount
|
||||
STAY2(mfc0 $v0, C0_COUNT)
|
||||
jr $ra
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.text
|
||||
LEAF(__osGetFpcCsr)
|
||||
STAY2(cfc1 v0, $31)
|
||||
jr ra
|
||||
END(__osGetFpcCsr)
|
||||
.section .text
|
||||
|
||||
glabel __osGetFpcCsr
|
||||
STAY2(cfc1 $v0, $31)
|
||||
jr $ra
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.text
|
||||
LEAF(__osGetSR)
|
||||
STAY2(mfc0 v0, C0_SR)
|
||||
jr ra
|
||||
END(__osGetSR)
|
||||
.section .text
|
||||
|
||||
glabel __osGetSR
|
||||
STAY2(mfc0 $v0, C0_SR)
|
||||
jr $ra
|
||||
|
|
|
|||
|
|
@ -1,29 +1,30 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.text
|
||||
LEAF(osMapTLBRdb)
|
||||
mfc0 t0, C0_ENTRYHI
|
||||
li t1, 1
|
||||
mtc0 t1, C0_INX
|
||||
mtc0 zero, C0_PAGEMASK
|
||||
li t2, TLBLO_UNCACHED | TLBLO_D | TLBLO_V | TLBLO_G
|
||||
li t1, K2BASE
|
||||
mtc0 t1, C0_ENTRYHI
|
||||
li t1, KUSIZE
|
||||
srl t3, t1,TLBLO_PFNSHIFT
|
||||
or t3, t3,t2
|
||||
mtc0 t3, C0_ENTRYLO0
|
||||
li t1, TLBLO_G
|
||||
mtc0 t1, C0_ENTRYLO1
|
||||
.section .text
|
||||
|
||||
glabel osMapTLBRdb
|
||||
mfc0 $t0, C0_ENTRYHI
|
||||
li $t1, 1
|
||||
mtc0 $t1, C0_INX
|
||||
mtc0 $zero, C0_PAGEMASK
|
||||
li $t2, TLBLO_UNCACHED | TLBLO_D | TLBLO_V | TLBLO_G
|
||||
li $t1, K2BASE
|
||||
mtc0 $t1, C0_ENTRYHI
|
||||
li $t1, KUSIZE
|
||||
srl $t3, $t1, TLBLO_PFNSHIFT
|
||||
or $t3, $t3, $t2
|
||||
mtc0 $t3, C0_ENTRYLO0
|
||||
li $t1, TLBLO_G
|
||||
mtc0 $t1, C0_ENTRYLO1
|
||||
nop
|
||||
tlbwi
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mtc0 t0, C0_ENTRYHI
|
||||
jr ra
|
||||
mtc0 $t0, C0_ENTRYHI
|
||||
jr $ra
|
||||
nop
|
||||
END(osMapTLBRdb)
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.set noreorder
|
||||
.text
|
||||
LEAF(__osSetCompare)
|
||||
mtc0 a0, C0_COMPARE
|
||||
jr ra
|
||||
.section .text
|
||||
|
||||
glabel __osSetCompare
|
||||
mtc0 $a0, C0_COMPARE
|
||||
jr $ra
|
||||
nop
|
||||
END(__osSetCompare)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.set noreorder
|
||||
.text
|
||||
|
||||
LEAF(__osSetFpcCsr)
|
||||
cfc1 v0, $31
|
||||
ctc1 a0, $31
|
||||
jr ra
|
||||
glabel __osSetFpcCsr
|
||||
cfc1 $v0, $31
|
||||
ctc1 $a0, $31
|
||||
jr $ra
|
||||
nop
|
||||
END(__osSetFpcCsr)
|
||||
|
|
|
|||
|
|
@ -1,80 +0,0 @@
|
|||
#include <libultra_internal.h>
|
||||
#include "data.h"
|
||||
|
||||
const u32 var70059e30[] = {0x05550556};
|
||||
const u32 var70059e34[] = {0x0559055a};
|
||||
const u32 var70059e38[] = {0x05650566};
|
||||
const u32 var70059e3c[] = {0x0569056a};
|
||||
const u32 var70059e40[] = {0x05950596};
|
||||
const u32 var70059e44[] = {0x0599059a};
|
||||
const u32 var70059e48[] = {0x05a505a6};
|
||||
const u32 var70059e4c[] = {0x05a905aa};
|
||||
const u32 var70059e50[] = {0x06550656};
|
||||
const u32 var70059e54[] = {0x0659065a};
|
||||
const u32 var70059e58[] = {0x06650666};
|
||||
const u32 var70059e5c[] = {0x0669066a};
|
||||
const u32 var70059e60[] = {0x06950696};
|
||||
const u32 var70059e64[] = {0x0699069a};
|
||||
const u32 var70059e68[] = {0x06a506a6};
|
||||
const u32 var70059e6c[] = {0x06a906aa};
|
||||
const u32 var70059e70[] = {0x09550956};
|
||||
const u32 var70059e74[] = {0x0959095a};
|
||||
const u32 var70059e78[] = {0x09650966};
|
||||
const u32 var70059e7c[] = {0x0969096a};
|
||||
const u32 var70059e80[] = {0x09950996};
|
||||
const u32 var70059e84[] = {0x0999099a};
|
||||
const u32 var70059e88[] = {0x09a509a6};
|
||||
const u32 var70059e8c[] = {0x09a909aa};
|
||||
const u32 var70059e90[] = {0x0a550a56};
|
||||
const u32 var70059e94[] = {0x0a590a5a};
|
||||
const u32 var70059e98[] = {0x0a650a66};
|
||||
const u32 var70059e9c[] = {0x0a690a6a};
|
||||
const u32 var70059ea0[] = {0x0a950a96};
|
||||
const u32 var70059ea4[] = {0x0a990a9a};
|
||||
const u32 var70059ea8[] = {0x0aa50aa6};
|
||||
const u32 var70059eac[] = {0x0aa90aaa};
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel osSetIntMask
|
||||
/* 48650: 400c6000 */ mfc0 $t4,$12
|
||||
/* 48654: 3182ff01 */ andi $v0,$t4,0xff01
|
||||
/* 48658: 3c088006 */ lui $t0,%hi(__osGlobalIntMask)
|
||||
/* 4865c: 2508cf70 */ addiu $t0,$t0,%lo(__osGlobalIntMask)
|
||||
/* 48660: 8d0b0000 */ lw $t3,0x0($t0)
|
||||
/* 48664: 2401ffff */ addiu $at,$zero,-1
|
||||
/* 48668: 01614026 */ xor $t0,$t3,$at
|
||||
/* 4866c: 3108ff00 */ andi $t0,$t0,0xff00
|
||||
/* 48670: 00481025 */ or $v0,$v0,$t0
|
||||
/* 48674: 3c0aa430 */ lui $t2,0xa430
|
||||
/* 48678: 8d4a000c */ lw $t2,0xc($t2)
|
||||
/* 4867c: 11400005 */ beqz $t2,.L00048694
|
||||
/* 48680: 000b4c02 */ srl $t1,$t3,0x10
|
||||
/* 48684: 2401ffff */ addiu $at,$zero,-1
|
||||
/* 48688: 01214826 */ xor $t1,$t1,$at
|
||||
/* 4868c: 3129003f */ andi $t1,$t1,0x3f
|
||||
/* 48690: 01495025 */ or $t2,$t2,$t1
|
||||
.L00048694:
|
||||
/* 48694: 000a5400 */ sll $t2,$t2,0x10
|
||||
/* 48698: 004a1025 */ or $v0,$v0,$t2
|
||||
/* 4869c: 3c01003f */ lui $at,0x3f
|
||||
/* 486a0: 00814024 */ and $t0,$a0,$at
|
||||
/* 486a4: 010b4024 */ and $t0,$t0,$t3
|
||||
/* 486a8: 000843c2 */ srl $t0,$t0,0xf
|
||||
/* 486ac: 3c0a7006 */ lui $t2,%hi(var70059e30)
|
||||
/* 486b0: 01485021 */ addu $t2,$t2,$t0
|
||||
/* 486b4: 954a9e30 */ lhu $t2,%lo(var70059e30)($t2)
|
||||
/* 486b8: 3c01a430 */ lui $at,0xa430
|
||||
/* 486bc: ac2a000c */ sw $t2,0xc($at)
|
||||
/* 486c0: 3088ff01 */ andi $t0,$a0,0xff01
|
||||
/* 486c4: 3169ff00 */ andi $t1,$t3,0xff00
|
||||
/* 486c8: 01094024 */ and $t0,$t0,$t1
|
||||
/* 486cc: 3c01ffff */ lui $at,0xffff
|
||||
/* 486d0: 342100ff */ ori $at,$at,0xff
|
||||
/* 486d4: 01816024 */ and $t4,$t4,$at
|
||||
/* 486d8: 01886025 */ or $t4,$t4,$t0
|
||||
/* 486dc: 408c6000 */ mtc0 $t4,$12
|
||||
/* 486e0: 00000000 */ nop
|
||||
/* 486e4: 00000000 */ nop
|
||||
/* 486e8: 03e00008 */ jr $ra
|
||||
/* 486ec: 00000000 */ nop
|
||||
);
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
#include "macros.inc"
|
||||
.set noat
|
||||
.set noreorder
|
||||
|
||||
.section .text
|
||||
|
||||
glabel osSetIntMask
|
||||
mfc0 $t4, $12
|
||||
andi $v0, $t4, 0xff01
|
||||
lui $t0, %hi(__osGlobalIntMask)
|
||||
addiu $t0, $t0, %lo(__osGlobalIntMask)
|
||||
lw $t3, 0x0($t0)
|
||||
addiu $at, $zero, -1
|
||||
xor $t0, $t3, $at
|
||||
andi $t0, $t0, 0xff00
|
||||
or $v0, $v0, $t0
|
||||
lui $t2, 0xa430
|
||||
lw $t2, 0xc($t2)
|
||||
beqz $t2, .L00048694
|
||||
srl $t1, $t3, 0x10
|
||||
addiu $at, $zero, -1
|
||||
xor $t1, $t1, $at
|
||||
andi $t1, $t1, 0x3f
|
||||
or $t2, $t2, $t1
|
||||
.L00048694:
|
||||
sll $t2, $t2, 0x10
|
||||
or $v0, $v0, $t2
|
||||
lui $at, 0x3f
|
||||
and $t0, $a0, $at
|
||||
and $t0, $t0, $t3
|
||||
srl $t0, $t0, 0xf
|
||||
lui $t2, %hi(var70059e30)
|
||||
addu $t2, $t2, $t0
|
||||
lhu $t2, %lo(var70059e30)($t2)
|
||||
lui $at, 0xa430
|
||||
sw $t2, 0xc($at)
|
||||
andi $t0, $a0, 0xff01
|
||||
andi $t1, $t3, 0xff00
|
||||
and $t0, $t0, $t1
|
||||
lui $at, 0xffff
|
||||
ori $at, $at, 0xff
|
||||
and $t4, $t4, $at
|
||||
or $t4, $t4, $t0
|
||||
mtc0 $t4, $12
|
||||
nop
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
.section .rodata
|
||||
|
||||
glabel var70059e30
|
||||
.half 0x0555
|
||||
.half 0x0556
|
||||
.half 0x0559
|
||||
.half 0x055a
|
||||
.half 0x0565
|
||||
.half 0x0566
|
||||
.half 0x0569
|
||||
.half 0x056a
|
||||
.half 0x0595
|
||||
.half 0x0596
|
||||
.half 0x0599
|
||||
.half 0x059a
|
||||
.half 0x05a5
|
||||
.half 0x05a6
|
||||
.half 0x05a9
|
||||
.half 0x05aa
|
||||
.half 0x0655
|
||||
.half 0x0656
|
||||
.half 0x0659
|
||||
.half 0x065a
|
||||
.half 0x0665
|
||||
.half 0x0666
|
||||
.half 0x0669
|
||||
.half 0x066a
|
||||
.half 0x0695
|
||||
.half 0x0696
|
||||
.half 0x0699
|
||||
.half 0x069a
|
||||
.half 0x06a5
|
||||
.half 0x06a6
|
||||
.half 0x06a9
|
||||
.half 0x06aa
|
||||
.half 0x0955
|
||||
.half 0x0956
|
||||
.half 0x0959
|
||||
.half 0x095a
|
||||
.half 0x0965
|
||||
.half 0x0966
|
||||
.half 0x0969
|
||||
.half 0x096a
|
||||
.half 0x0995
|
||||
.half 0x0996
|
||||
.half 0x0999
|
||||
.half 0x099a
|
||||
.half 0x09a5
|
||||
.half 0x09a6
|
||||
.half 0x09a9
|
||||
.half 0x09aa
|
||||
.half 0x0a55
|
||||
.half 0x0a56
|
||||
.half 0x0a59
|
||||
.half 0x0a5a
|
||||
.half 0x0a65
|
||||
.half 0x0a66
|
||||
.half 0x0a69
|
||||
.half 0x0a6a
|
||||
.half 0x0a95
|
||||
.half 0x0a96
|
||||
.half 0x0a99
|
||||
.half 0x0a9a
|
||||
.half 0x0aa5
|
||||
.half 0x0aa6
|
||||
.half 0x0aa9
|
||||
.half 0x0aaa
|
||||
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
#include "asm_helper.h"
|
||||
#include "macros.inc"
|
||||
|
||||
.set noreorder
|
||||
.text
|
||||
LEAF(__osSetSR)
|
||||
mtc0 a0, C0_SR
|
||||
.section .text
|
||||
|
||||
glabel __osSetSR
|
||||
mtc0 $a0, C0_SR
|
||||
nop
|
||||
jr ra
|
||||
jr $ra
|
||||
nop
|
||||
END(__osSetSR)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
.set noat
|
||||
.set noreorder
|
||||
.set gp=64
|
||||
.include "macros.inc"
|
||||
.include "src/include/macros.inc"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue