update libultra asm (#648)

* update libultra asm

* fix gcc __osThreadTail

---------

Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
coco875
2024-08-23 07:31:24 +02:00
committed by GitHub
parent 8733751fb5
commit 7025ff0ca1
24 changed files with 1927 additions and 749 deletions
+4 -8
View File
@@ -1,15 +1,11 @@
#include "libultra_internal.h"
#ifndef AVOID_UB
OSThread *__osThreadTail = NULL;
u32 __osTest = -1;
OSThread *__osRunQueue = (OSThread *) &__osThreadTail;
OSThread *__osActiveQueue = (OSThread *) &__osThreadTail;
NO_REORDER OSThread *__osThreadTail = NULL;
NO_REORDER u32 __osTest = -1;
NO_REORDER OSThread *__osRunQueue = (OSThread *) &__osThreadTail;
NO_REORDER OSThread *__osActiveQueue = (OSThread *) &__osThreadTail;
OSThread *__osRunningThread = NULL;
OSThread *__osFaultedThread = NULL;
#else
OSThread_ListHead __osThreadTail_fix = {NULL, -1, (OSThread *) &__osThreadTail_fix, (OSThread *) &__osThreadTail_fix, NULL, 0};
#endif
void __osDequeueThread(OSThread **queue, OSThread *thread) {
register OSThread **a2;
+6 -14
View File
@@ -10,10 +10,13 @@ typedef struct __OSEventState
OSMesg message;
} __OSEventState;
typedef struct __osThreadTail
typedef struct // __osThreadTail
{
OSThread *next;
OSPri priority;
/* 0x00 */ OSThread *next;
/* 0x04 */ OSPri priority;
/* 0x08 */ OSThread *queue;
/* 0x0c */ OSThread *tlnext;
} OSThreadTail;
/*
@@ -31,23 +34,12 @@ typedef struct
/*0x10*/ struct OSThread_s *unk10;
/*0x14*/ u32 unk14;
} OSThread_ListHead;
#ifdef AVOID_UB
// Now fix the symbols to the new one.
extern OSThread_ListHead __osThreadTail_fix;
#define __osThreadTail __osThreadTail_fix.next
#define D_80334894 __osThreadTail_fix.priority
#define __osRunQueue __osThreadTail_fix.queue
#define __osActiveQueue __osThreadTail_fix.tlnext
#define __osRunningThread __osThreadTail_fix.unk10
#else
// Original OSThread_ListHead definitions
extern OSThread *__osThreadTail;
extern OSThread *__osActiveQueue;
extern OSThread *__osRunQueue;
extern OSThread *__osRunningThread;
#endif
// Original EEPROM definitions
extern u32 D_80365E00[15];
+1 -1
View File
@@ -14,7 +14,7 @@ typedef struct {
u32 D_80194040;
u64 osClockRate = 62500000;
u32 D_800EA5E8 = 0;
u32 __osShutdown = 0;
u32 __OSGlobalIntMask = OS_IM_ALL;
u32 D_800EA5F0 = 0;
-4
View File
@@ -16,14 +16,10 @@ extern void __osTimerInterrupt(void);
extern u32 __osProbeTLB(void *);
extern int __osSpDeviceBusy(void);
#ifdef AVOID_UB
extern OSThread_ListHead __osThreadTail_fix;
#else
extern OSThread *__osRunningThread;
extern OSThread *__osActiveQueue;
extern OSThread *__osFaultedThread;
extern OSThread *__osRunQueue;
#endif
extern OSTimer *__osTimerList;
extern OSTimer __osBaseTimer;