mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
c: osStartThread
This commit is contained in:
@@ -188,6 +188,7 @@ $(BUILD_DIR)/lib/src/osSendMesg.o : OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osSetEventMesg.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osSetTime.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osSetTimer.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osStartThread.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osStopThread.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osTimer.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osViBlack.o: OPT_FLAGS := -O1
|
||||
|
||||
+1
-1
@@ -9256,7 +9256,7 @@ glabel __osThreadTail
|
||||
.word 0x00000000
|
||||
.word 0xFFFFFFFF
|
||||
|
||||
glabel D_800E4888
|
||||
glabel __RunQueue
|
||||
.word 0x800E4880
|
||||
|
||||
glabel __osActiveQueue
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
glabel __osDispatchThread
|
||||
/* 0D4024 800D3424 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0D4024 800D3424 3C04800E */ lui $a0, %hi(__RunQueue) # $a0, 0x800e
|
||||
/* 0D4028 800D3428 0C034D05 */ jal __osPopThread
|
||||
/* 0D402C 800D342C 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0D402C 800D342C 24844888 */ addiu $a0, %lo(__RunQueue) # addiu $a0, $a0, 0x4888
|
||||
/* 0D4030 800D3430 3C01800E */ lui $at, %hi(__osRunningThread) # $at, 0x800e
|
||||
/* 0D4034 800D3434 AC224890 */ sw $v0, %lo(__osRunningThread)($at)
|
||||
/* 0D4038 800D3438 24080004 */ li $t0, 4
|
||||
|
||||
@@ -281,8 +281,8 @@ glabel __osException
|
||||
/* 0D3CE4 800D30E4 AD2A0000 */ sw $t2, ($t1)
|
||||
/* 0D3CE8 800D30E8 0C034C79 */ jal send_mesg
|
||||
/* 0D3CEC 800D30EC 24040070 */ li $a0, 112
|
||||
/* 0D3CF0 800D30F0 3C0A800E */ lui $t2, %hi(D_800E4888) # $t2, 0x800e
|
||||
/* 0D3CF4 800D30F4 8D4A4888 */ lw $t2, %lo(D_800E4888)($t2)
|
||||
/* 0D3CF0 800D30F0 3C0A800E */ lui $t2, %hi(__RunQueue) # $t2, 0x800e
|
||||
/* 0D3CF4 800D30F4 8D4A4888 */ lw $t2, %lo(__RunQueue)($t2)
|
||||
/* 0D3CF8 800D30F8 2401EFFF */ li $at, -4097
|
||||
/* 0D3CFC 800D30FC 02018024 */ and $s0, $s0, $at
|
||||
/* 0D3D00 800D3100 8D5B0118 */ lw $k1, 0x118($t2)
|
||||
@@ -313,23 +313,23 @@ glabel __osException
|
||||
/* 0D3D60 800D3160 10000001 */ b .L800D3168
|
||||
/* 0D3D64 800D3164 00000000 */ nop
|
||||
.L800D3168:
|
||||
/* 0D3D68 800D3168 3C0A800E */ lui $t2, %hi(D_800E4888) # $t2, 0x800e
|
||||
/* 0D3D6C 800D316C 8D4A4888 */ lw $t2, %lo(D_800E4888)($t2)
|
||||
/* 0D3D68 800D3168 3C0A800E */ lui $t2, %hi(__RunQueue) # $t2, 0x800e
|
||||
/* 0D3D6C 800D316C 8D4A4888 */ lw $t2, %lo(__RunQueue)($t2)
|
||||
/* 0D3D70 800D3170 8F490004 */ lw $t1, 4($k0)
|
||||
/* 0D3D74 800D3174 8D4B0004 */ lw $t3, 4($t2)
|
||||
/* 0D3D78 800D3178 012B082A */ slt $at, $t1, $t3
|
||||
/* 0D3D7C 800D317C 10200007 */ beqz $at, .L800D319C
|
||||
/* 0D3D80 800D3180 00000000 */ nop
|
||||
/* 0D3D84 800D3184 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0D3D84 800D3184 3C04800E */ lui $a0, %hi(__RunQueue) # $a0, 0x800e
|
||||
/* 0D3D88 800D3188 03402825 */ move $a1, $k0
|
||||
/* 0D3D8C 800D318C 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0D3D90 800D3190 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0D3D90 800D3190 24844888 */ addiu $a0, %lo(__RunQueue) # addiu $a0, $a0, 0x4888
|
||||
/* 0D3D94 800D3194 08034D09 */ j __osDispatchThread
|
||||
/* 0D3D98 800D3198 00000000 */ nop
|
||||
|
||||
.L800D319C:
|
||||
/* 0D3D9C 800D319C 3C09800E */ lui $t1, %hi(D_800E4888) # $t1, 0x800e
|
||||
/* 0D3DA0 800D31A0 25294888 */ addiu $t1, %lo(D_800E4888) # addiu $t1, $t1, 0x4888
|
||||
/* 0D3D9C 800D319C 3C09800E */ lui $t1, %hi(__RunQueue) # $t1, 0x800e
|
||||
/* 0D3DA0 800D31A0 25294888 */ addiu $t1, %lo(__RunQueue) # addiu $t1, $t1, 0x4888
|
||||
/* 0D3DA4 800D31A4 8D2A0000 */ lw $t2, ($t1)
|
||||
/* 0D3DA8 800D31A8 AF4A0000 */ sw $t2, ($k0)
|
||||
/* 0D3DAC 800D31AC 08034D09 */ j __osDispatchThread
|
||||
|
||||
@@ -40,10 +40,10 @@ glabel send_mesg
|
||||
/* 0D3E74 800D3274 0C034D05 */ jal __osPopThread
|
||||
/* 0D3E78 800D3278 01202025 */ move $a0, $t1
|
||||
/* 0D3E7C 800D327C 00405025 */ move $t2, $v0
|
||||
/* 0D3E80 800D3280 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0D3E80 800D3280 3C04800E */ lui $a0, %hi(__RunQueue) # $a0, 0x800e
|
||||
/* 0D3E84 800D3284 01402825 */ move $a1, $t2
|
||||
/* 0D3E88 800D3288 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0D3E8C 800D328C 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0D3E8C 800D328C 24844888 */ addiu $a0, %lo(__RunQueue) # addiu $a0, $a0, 0x4888
|
||||
.L800D3290:
|
||||
/* 0D3E90 800D3290 02400008 */ jr $s2
|
||||
/* 0D3E94 800D3294 00000000 */ nop
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
glabel osStartThread
|
||||
/* 0C95A0 800C89A0 27BDFFD8 */ addiu $sp, $sp, -0x28
|
||||
/* 0C95A4 800C89A4 AFBF001C */ sw $ra, 0x1c($sp)
|
||||
/* 0C95A8 800C89A8 AFA40028 */ sw $a0, 0x28($sp)
|
||||
/* 0C95AC 800C89AC AFB10018 */ sw $s1, 0x18($sp)
|
||||
/* 0C95B0 800C89B0 0C034958 */ jal __osDisableInt
|
||||
/* 0C95B4 800C89B4 AFB00014 */ sw $s0, 0x14($sp)
|
||||
/* 0C95B8 800C89B8 8FAE0028 */ lw $t6, 0x28($sp)
|
||||
/* 0C95BC 800C89BC 24010001 */ li $at, 1
|
||||
/* 0C95C0 800C89C0 00408025 */ move $s0, $v0
|
||||
/* 0C95C4 800C89C4 95D10010 */ lhu $s1, 0x10($t6)
|
||||
/* 0C95C8 800C89C8 1221000C */ beq $s1, $at, .L800C89FC
|
||||
/* 0C95CC 800C89CC 24010008 */ li $at, 8
|
||||
/* 0C95D0 800C89D0 1621002A */ bne $s1, $at, .L800C8A7C
|
||||
/* 0C95D4 800C89D4 00000000 */ nop
|
||||
/* 0C95D8 800C89D8 8FB80028 */ lw $t8, 0x28($sp)
|
||||
/* 0C95DC 800C89DC 240F0002 */ li $t7, 2
|
||||
/* 0C95E0 800C89E0 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0C95E4 800C89E4 A70F0010 */ sh $t7, 0x10($t8)
|
||||
/* 0C95E8 800C89E8 8FA50028 */ lw $a1, 0x28($sp)
|
||||
/* 0C95EC 800C89EC 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0C95F0 800C89F0 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0C95F4 800C89F4 10000021 */ b .L800C8A7C
|
||||
/* 0C95F8 800C89F8 00000000 */ nop
|
||||
.L800C89FC:
|
||||
/* 0C95FC 800C89FC 8FB90028 */ lw $t9, 0x28($sp)
|
||||
/* 0C9600 800C8A00 8F280008 */ lw $t0, 8($t9)
|
||||
/* 0C9604 800C8A04 11000005 */ beqz $t0, .L800C8A1C
|
||||
/* 0C9608 800C8A08 00000000 */ nop
|
||||
/* 0C960C 800C8A0C 3C09800E */ lui $t1, %hi(D_800E4888) # $t1, 0x800e
|
||||
/* 0C9610 800C8A10 25294888 */ addiu $t1, %lo(D_800E4888) # addiu $t1, $t1, 0x4888
|
||||
/* 0C9614 800C8A14 1509000A */ bne $t0, $t1, .L800C8A40
|
||||
/* 0C9618 800C8A18 00000000 */ nop
|
||||
.L800C8A1C:
|
||||
/* 0C961C 800C8A1C 8FAB0028 */ lw $t3, 0x28($sp)
|
||||
/* 0C9620 800C8A20 240A0002 */ li $t2, 2
|
||||
/* 0C9624 800C8A24 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0C9628 800C8A28 A56A0010 */ sh $t2, 0x10($t3)
|
||||
/* 0C962C 800C8A2C 8FA50028 */ lw $a1, 0x28($sp)
|
||||
/* 0C9630 800C8A30 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0C9634 800C8A34 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0C9638 800C8A38 10000010 */ b .L800C8A7C
|
||||
/* 0C963C 800C8A3C 00000000 */ nop
|
||||
.L800C8A40:
|
||||
/* 0C9640 800C8A40 8FAD0028 */ lw $t5, 0x28($sp)
|
||||
/* 0C9644 800C8A44 240C0008 */ li $t4, 8
|
||||
/* 0C9648 800C8A48 A5AC0010 */ sh $t4, 0x10($t5)
|
||||
/* 0C964C 800C8A4C 8FAE0028 */ lw $t6, 0x28($sp)
|
||||
/* 0C9650 800C8A50 8DC40008 */ lw $a0, 8($t6)
|
||||
/* 0C9654 800C8A54 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0C9658 800C8A58 01C02825 */ move $a1, $t6
|
||||
/* 0C965C 800C8A5C 8FAF0028 */ lw $t7, 0x28($sp)
|
||||
/* 0C9660 800C8A60 0C034D05 */ jal __osPopThread
|
||||
/* 0C9664 800C8A64 8DE40008 */ lw $a0, 8($t7)
|
||||
/* 0C9668 800C8A68 00408825 */ move $s1, $v0
|
||||
/* 0C966C 800C8A6C 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0C9670 800C8A70 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0C9674 800C8A74 0C034CF3 */ jal __osEnqueueThread
|
||||
/* 0C9678 800C8A78 02202825 */ move $a1, $s1
|
||||
.L800C8A7C:
|
||||
/* 0C967C 800C8A7C 3C18800E */ lui $t8, %hi(__osRunningThread) # $t8, 0x800e
|
||||
/* 0C9680 800C8A80 8F184890 */ lw $t8, %lo(__osRunningThread)($t8)
|
||||
/* 0C9684 800C8A84 17000005 */ bnez $t8, .L800C8A9C
|
||||
/* 0C9688 800C8A88 00000000 */ nop
|
||||
/* 0C968C 800C8A8C 0C034D09 */ jal __osDispatchThread
|
||||
/* 0C9690 800C8A90 00000000 */ nop
|
||||
/* 0C9694 800C8A94 1000000F */ b .L800C8AD4
|
||||
/* 0C9698 800C8A98 00000000 */ nop
|
||||
.L800C8A9C:
|
||||
/* 0C969C 800C8A9C 3C19800E */ lui $t9, %hi(__osRunningThread) # $t9, 0x800e
|
||||
/* 0C96A0 800C8AA0 3C09800E */ lui $t1, %hi(D_800E4888) # $t1, 0x800e
|
||||
/* 0C96A4 800C8AA4 8D294888 */ lw $t1, %lo(D_800E4888)($t1)
|
||||
/* 0C96A8 800C8AA8 8F394890 */ lw $t9, %lo(__osRunningThread)($t9)
|
||||
/* 0C96AC 800C8AAC 8D2A0004 */ lw $t2, 4($t1)
|
||||
/* 0C96B0 800C8AB0 8F280004 */ lw $t0, 4($t9)
|
||||
/* 0C96B4 800C8AB4 010A082A */ slt $at, $t0, $t2
|
||||
/* 0C96B8 800C8AB8 10200006 */ beqz $at, .L800C8AD4
|
||||
/* 0C96BC 800C8ABC 00000000 */ nop
|
||||
/* 0C96C0 800C8AC0 240B0002 */ li $t3, 2
|
||||
/* 0C96C4 800C8AC4 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0C96C8 800C8AC8 A72B0010 */ sh $t3, 0x10($t9)
|
||||
/* 0C96CC 800C8ACC 0C034CB3 */ jal __osEnqueueAndYield
|
||||
/* 0C96D0 800C8AD0 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
.L800C8AD4:
|
||||
/* 0C96D4 800C8AD4 0C034960 */ jal __osRestoreInt
|
||||
/* 0C96D8 800C8AD8 02002025 */ move $a0, $s0
|
||||
/* 0C96DC 800C8ADC 8FBF001C */ lw $ra, 0x1c($sp)
|
||||
/* 0C96E0 800C8AE0 8FB00014 */ lw $s0, 0x14($sp)
|
||||
/* 0C96E4 800C8AE4 8FB10018 */ lw $s1, 0x18($sp)
|
||||
/* 0C96E8 800C8AE8 03E00008 */ jr $ra
|
||||
/* 0C96EC 800C8AEC 27BD0028 */ addiu $sp, $sp, 0x28
|
||||
|
||||
@@ -37,8 +37,8 @@ glabel osSetThreadPri
|
||||
/* 0CD4C8 800CC8C8 01802825 */ move $a1, $t4
|
||||
.L800CC8CC:
|
||||
/* 0CD4CC 800CC8CC 3C0D800E */ lui $t5, %hi(__osRunningThread) # $t5, 0x800e
|
||||
/* 0CD4D0 800CC8D0 3C0F800E */ lui $t7, %hi(D_800E4888) # $t7, 0x800e
|
||||
/* 0CD4D4 800CC8D4 8DEF4888 */ lw $t7, %lo(D_800E4888)($t7)
|
||||
/* 0CD4D0 800CC8D0 3C0F800E */ lui $t7, %hi(__RunQueue) # $t7, 0x800e
|
||||
/* 0CD4D4 800CC8D4 8DEF4888 */ lw $t7, %lo(__RunQueue)($t7)
|
||||
/* 0CD4D8 800CC8D8 8DAD4890 */ lw $t5, %lo(__osRunningThread)($t5)
|
||||
/* 0CD4DC 800CC8DC 8DF90004 */ lw $t9, 4($t7)
|
||||
/* 0CD4E0 800CC8E0 8DAE0004 */ lw $t6, 4($t5)
|
||||
@@ -46,10 +46,10 @@ glabel osSetThreadPri
|
||||
/* 0CD4E8 800CC8E8 10200006 */ beqz $at, .L800CC904
|
||||
/* 0CD4EC 800CC8EC 00000000 */ nop
|
||||
/* 0CD4F0 800CC8F0 24080002 */ li $t0, 2
|
||||
/* 0CD4F4 800CC8F4 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0CD4F4 800CC8F4 3C04800E */ lui $a0, %hi(__RunQueue) # $a0, 0x800e
|
||||
/* 0CD4F8 800CC8F8 A5A80010 */ sh $t0, 0x10($t5)
|
||||
/* 0CD4FC 800CC8FC 0C034CB3 */ jal __osEnqueueAndYield
|
||||
/* 0CD500 800CC900 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0CD500 800CC900 24844888 */ addiu $a0, %lo(__RunQueue) # addiu $a0, $a0, 0x4888
|
||||
.L800CC904:
|
||||
/* 0CD504 800CC904 0C034960 */ jal __osRestoreInt
|
||||
/* 0CD508 800CC908 02002025 */ move $a0, $s0
|
||||
|
||||
@@ -6,9 +6,9 @@ glabel func_800D65B0
|
||||
/* 0D71C0 800D65C0 3C0F800E */ lui $t7, %hi(__osRunningThread) # $t7, 0x800e
|
||||
/* 0D71C4 800D65C4 8DEF4890 */ lw $t7, %lo(__osRunningThread)($t7)
|
||||
/* 0D71C8 800D65C8 240E0002 */ li $t6, 2
|
||||
/* 0D71CC 800D65CC 3C04800E */ lui $a0, %hi(D_800E4888) # $a0, 0x800e
|
||||
/* 0D71CC 800D65CC 3C04800E */ lui $a0, %hi(__RunQueue) # $a0, 0x800e
|
||||
/* 0D71D0 800D65D0 00408025 */ move $s0, $v0
|
||||
/* 0D71D4 800D65D4 24844888 */ addiu $a0, %lo(D_800E4888) # addiu $a0, $a0, 0x4888
|
||||
/* 0D71D4 800D65D4 24844888 */ addiu $a0, %lo(__RunQueue) # addiu $a0, $a0, 0x4888
|
||||
/* 0D71D8 800D65D8 0C034CB3 */ jal __osEnqueueAndYield
|
||||
/* 0D71DC 800D65DC A5EE0010 */ sh $t6, 0x10($t7)
|
||||
/* 0D71E0 800D65E0 0C034960 */ jal __osRestoreInt
|
||||
|
||||
+41
-3
@@ -1,7 +1,45 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x800C89A0 */
|
||||
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
#include "libultra_internal.h"
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/osStartThread_0C95A0/osStartThread.s")
|
||||
extern OSThread* __osRunningThread;
|
||||
extern OSThread* __RunQueue; //__osRunQueue
|
||||
|
||||
void osStartThread(OSThread *t)
|
||||
{
|
||||
register u32 saveMask = __osDisableInt();
|
||||
switch (t->state)
|
||||
{
|
||||
case OS_STATE_WAITING:
|
||||
t->state = OS_STATE_RUNNABLE;
|
||||
__osEnqueueThread(&__RunQueue, t);
|
||||
break;
|
||||
case OS_STATE_STOPPED:
|
||||
if (t->queue == NULL || t->queue == &__RunQueue)
|
||||
{
|
||||
t->state = OS_STATE_RUNNABLE;
|
||||
__osEnqueueThread(&__RunQueue, t);
|
||||
}
|
||||
else
|
||||
{
|
||||
t->state = OS_STATE_WAITING;
|
||||
__osEnqueueThread(t->queue, t);
|
||||
__osEnqueueThread(&__RunQueue, __osPopThread(t->queue));
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (__osRunningThread == NULL)
|
||||
{
|
||||
__osDispatchThread();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (__osRunningThread->priority < __RunQueue->priority)
|
||||
{
|
||||
__osRunningThread->state = OS_STATE_RUNNABLE;
|
||||
__osEnqueueAndYield(&__RunQueue);
|
||||
}
|
||||
}
|
||||
__osRestoreInt(saveMask);
|
||||
}
|
||||
+3
-1
@@ -10,4 +10,6 @@ fi
|
||||
|
||||
#echo "Replace $1 with $2?"
|
||||
#read
|
||||
grep -rl "$1" asm/**/*.s src/**/*.{c,h} lib/**/*.{c,s} include/*.h data/dkr.data.s undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
|
||||
ofiles=$(grep -rl "$1" build/**/*.o)
|
||||
rm -v $ofiles
|
||||
grep -rl "$1" asm/**/*.s src/**/*.{c,h} lib/**/*.{c,s} include/*.h data/dkr.data.s undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
|
||||
|
||||
+1
-1
@@ -786,7 +786,7 @@ D_800E4870 = 0x800E4870;
|
||||
D_800E4874 = 0x800E4874;
|
||||
D_800E4878 = 0x800E4878;
|
||||
__osThreadTail = 0x800E4880;
|
||||
D_800E4888 = 0x800E4888;
|
||||
__RunQueue = 0x800E4888;
|
||||
__osActiveQueue = 0x800E488C;
|
||||
__osRunningThread = 0x800E4890;
|
||||
D_800E4894 = 0x800E4894;
|
||||
|
||||
Reference in New Issue
Block a user