Handle all warnings (on libultra_d) (#20)

* handle kdebugserver warning

* profile.c warnings

* readhost.c warnings

* syncprintf

* log.c

* free.c

* rest of rg funcs

* remove only the part of exception thats causing a warning (we have got to remove more)

* explicitly split out thing in intmask

* remove link error from removing the part with the warning in exceptasm

* format

* use ultratype

* totalBytes fix

---------

Co-authored-by: someone2639 <someone2639@gmail.com>
This commit is contained in:
someone2639
2025-09-07 17:01:22 -04:00
committed by GitHub
parent 318128f42c
commit ca00332bb3
11 changed files with 18 additions and 280 deletions

View File

@@ -83,7 +83,7 @@ void kdebugserver(rdbPacket packet) {
}
if (buffer[0] == 2) {
send((char*)&__osRunningThread->context, sizeof(__OSThreadContext));
send((u8*)&__osRunningThread->context, sizeof(__OSThreadContext));
numChars = 0;
} else if (numChars >= 9 && buffer[0] == 1) {
addr = string_to_u32(&buffer[1]);

View File

@@ -53,7 +53,7 @@ void __osProfileIO(void* arg) {
totalBytes = t->histo_size * 2;
sendPtr = t->histo_base;
while (totalBytes > 0) {
bytesThisBlock = (totalBytes < 0x800U) ? totalBytes : 0x800U;
bytesThisBlock = (totalBytes < 0x800) ? totalBytes : 0x800;
ct = 0;
while (ct < bytesThisBlock) {

View File

@@ -13,7 +13,7 @@ u32 __osRdb_Read_Data_Buf;
u32 __osRdb_Read_Data_Ct;
void osReadHost(void* dramAddr, u32 nbytes) {
char tstr[4];
u8 tstr[4];
u32 sent = 0;
if (!readHostInitialized) {

View File

@@ -8,17 +8,14 @@
extern void* __printfunc;
void __osSyncVPrintf(const char* fmt, va_list ap) {
int ans;
#ifndef _FINALROM
if (__printfunc != NULL) {
ans = _Printf(__printfunc, NULL, fmt, ap);
_Printf(__printfunc, NULL, fmt, ap);
}
#endif
}
void osSyncPrintf(const char* fmt, ...) {
int ans;
va_list ap;
#ifndef _FINALROM
@@ -29,13 +26,12 @@ void osSyncPrintf(const char* fmt, ...) {
}
void rmonPrintf(const char* fmt, ...) {
int ans;
va_list ap;
#ifndef _FINALROM
va_start(ap, fmt);
if (__printfunc != NULL) {
ans = _Printf(__printfunc, NULL, fmt, ap);
_Printf(__printfunc, NULL, fmt, ap);
}
va_end(ap);
#endif

View File

@@ -83,14 +83,13 @@ void osFlushLog(OSLog* log) {
}
void __osLogWrite(OSLog* log, s16 code, s16 numArgs, va_list argPtr) {
int i;
u32 saveEnable;
u32 buf[19];
u32* bufp;
OSLogItem* hdr;
s32* args;
s32* dest;
int numLongs;
u32* args;
u32* dest;
u32 numLongs;
bufp = buf;
hdr = buf;
@@ -103,14 +102,14 @@ void __osLogWrite(OSLog* log, s16 code, s16 numArgs, va_list argPtr) {
hdr->argCount = numArgs;
hdr->eventID = code;
for (i = 0; i < numArgs; i++) {
*args++ = va_arg(argPtr, int);
for (s32 i = 0; i < numArgs; i++) {
*args++ = va_arg(argPtr, s32);
}
if (__osLogOKtoWrite) {
if ((log->writeOffset + numLongs) < (log->len >> 2)) {
dest = log->base + log->writeOffset;
for (i = 0; i < numLongs; i++) {
for (u32 i = 0; i < numLongs; i++) {
*dest++ = *bufp++;
}
log->writeOffset += numLongs;

View File

@@ -117,70 +117,6 @@ LEAF(__osExceptionPreamble)
jr k0
END(__osExceptionPreamble)
#ifndef _FINALROM
LEAF(__ptExceptionPreamble)
.set noreorder
sw k0, -0x10(sp)
b pt_next
lui k0, %hi(__ptException)
nop
nop
pt_next:
addiu k0, k0, %lo(__ptException)
jr k0
nop
.set reorder
END(__ptExceptionPreamble)
LEAF(__ptException)
.set noreorder
mfc0 k0, C0_CAUSE
andi k0, k0, 0x7c
bnez k0, pt_not_Int
srl k0, k0, 2
mfc0 k0, C0_CAUSE
nop
andi k0, k0, CAUSE_IP7
beqz k0, __osException
nop
j pt_break
nop
pt_not_Int:
sw k1, -8(sp)
/* determine if the pt exception handler should deal with this cause */
la k1, __osCauseTable_pt
add k1, k1, k0
lbu k0, (k1)
beqz k0, __osException
nop
pt_break:
pi_ok_loop:
lw k0, PHYS_TO_K1(PI_STATUS_REG)
nop
andi k0, k0, (PI_STATUS_DMA_BUSY | PI_STATUS_IO_BUSY)
bnez k0, pi_ok_loop
nop
lw k0, KMC_STAT
nop
andi k0, k0, 8
bnez k0, pt_prof
li k0, KMC_CODE_ENTRY
lw k1, -8(sp)
jr k0
addiu sp, sp, -0x60
pt_prof:
mfc0 k0, C0_EPC
/* the following two ways is a (necessarily) messy way to write "sw k0, KMC_WPORT" without using at */
lui k1, (KMC_WPORT >> 16 + 1)
sw k0, -(KMC_WPORT & 0xFFFF)(k1)
lw k1, -8(sp)
lw k0, -0x10(sp)
eret
nop
.set reorder
END(__ptException)
#endif
LEAF(__osException)
/* Load scratch space for thread saving */
la k0, __osThreadSave
@@ -202,200 +138,6 @@ LEAF(__osException)
sw zero, THREAD_FP(k0)
/* This instruction is useless, leftover because of bad placement of an ifdef for the debug version */
MFC0( t0, C0_CAUSE)
#ifndef _FINALROM
lw t2, __kmc_pt_mode
bnez t2, skip_kmc_mode
andi t1, t0, 0x7c
li t2, 0
bne t1, t2, savecontext
and t1, k1, t0
andi t2, t1, CAUSE_IP7
beqz t2, notIP7
/* clear rdb write interrupt */
la t1, RDB_WRITE_INTR_REG
sw zero, (t1)
IP7check:
MFC0( t0, C0_CAUSE)
andi t0, t0, CAUSE_IP7
bne zero, t0, IP7check
la t2, RDB_BASE_REG
lw t0, (t2)
srl t1, t0, 0x1a
andi t1, t1, 0x3f
li t2, RDB_TYPE_HtoG_DATA
beq t1, t2, HandData
li t2, RDB_TYPE_HtoG_DEBUG
beq t1, t2, HandDbg
li t2, RDB_TYPE_HtoG_KDEBUG
beq t1, t2, HandKDebug
li t2, RDB_TYPE_HtoG_DEBUG_CT
beq t1, t2, DbgCnt
li t2, RDB_TYPE_HtoG_DATA_DONE
beq t1, t2, DataRead
li t2, RDB_TYPE_HtoG_LOG_DONE
beq t1, t2, LogRead
li t2, RDB_TYPE_HtoG_REQ_RAMROM
beq t1, t2, ReqRamrom
li t2, RDB_TYPE_HtoG_FREE_RAMROM
beq t1, t2, FreeRamrom
li t2, RDB_TYPE_HtoG_PROF_SIGNAL
beq t1, t2, SignalProf
b rdbout
SignalProf:
li t2, 1
srl t1, t0, 0x10
andi t1, t1, 0xff
beq t1, t2, AckProf
li t2, 0xa8
sw t2, __osRdb_Mesg
b savecontext
AckProf:
li t2, 0xb0
sw t2, __osRdb_Mesg
b savecontext
HandKDebug:
sw t0, __os_Kdebug_Pkt
b savecontext
DbgCnt:
li t2, 0xffffff
and t1, t0, t2
sw t1, __osRdb_DbgRead_Ct
b rdbout
DataRead:
li t2, 0x88
sw t2, __osRdb_Mesg
b savecontext
LogRead:
li t2, 0x80
sw t2, __osRdb_Mesg
b savecontext
ReqRamrom:
li t2, 0x90
sw t2, __osRdb_Mesg
b savecontext
FreeRamrom:
li t2, 0x98
sw t2, __osRdb_Mesg
b savecontext
HandData:
srl t1, t0, 0x18
andi t1, t1, 3
beq zero, t1, rdbout
lw t2, __osRdb_Read_Data_Ct
subu t2, t2, t1
sw t2, __osRdb_Read_Data_Ct
sd t3, THREAD_GP11(k0)
lw t3, __osRdb_Read_Data_Buf
srl t2, t0, 0x10
andi t2, t2, 0xff
sb t2, (t3)
addi t3, t3, 1
addi t1, t1, -1
beq zero, t1, doneData
srl t2, t0, 8
andi t2, t2, 0xff
sb t2, (t3)
addi t3, t3, 1
addi t1, t1, -1
beq zero, t1, doneData
andi t0, t0, 0xff
sb t0, (t3)
addi t3, t3, 1
doneData:
sw t3, __osRdb_Read_Data_Buf
ld t3, THREAD_GP11(k0)
lw t2, __osRdb_Read_Data_Ct
bne zero, t2, rdbout
li t2, 0x78
sw t2, __osRdb_Mesg
b savecontext
HandDbg:
srl t1, t0, 0x18
andi t1, t1, 3
beq zero, t1, rdbout
lw t2, __osRdb_DbgRead_Ct
subu t2, t2, t1
sw t2, __osRdb_DbgRead_Ct
sd t3, THREAD_GP11(k0)
lw t3, __osRdb_DbgRead_Buf
bne zero, t3, 1f
ld t3, THREAD_GP11(k0)
b rdbout
1:
srl t2, t0, 0x10
andi t2, t2, 0xff
sb t2, (t3)
addi t3, t3, 1
addi t1, t1, -1
beq zero, t1, doneDbg
srl t2, t0, 8
andi t2, t2, 0xff
sb t2, (t3)
addi t3, t3, 1
addi t1, t1, -1
beq zero, t1, doneDbg
andi t0, t0, 0xff
sb t0, (t3)
addi t3, t3, 1
doneDbg:
sw t3, __osRdb_DbgRead_Buf
ld t3, THREAD_GP11(k0)
lw t2, __osRdb_DbgRead_Ct
bne zero, t2, rdbout
li t2, 0xa0
sw t2, __osRdb_Mesg
b savecontext
notIP7:
andi t2, t1, CAUSE_IP6
beqz t2, savecontext
/* clear rdb read interrupt */
la t1, RDB_READ_INTR_REG
sw zero, (t1)
lw t2, __osRdb_IP6_Ct
bnez t2, 2f
li t2, 1
sw t2, __osRdb_IP6_Empty
b rdbout
2:
addi t2, t2, -1
sw t2, __osRdb_IP6_Ct
lw t0, __osRdb_IP6_Data
lw t1, __osRdb_IP6_CurSend
sll t2, t1, 2
add t0, t2, t0
lw t2, (t0)
addi t1, t1, 1
lw t0, __osRdb_IP6_Size
sub t0, t0, t1
bgtz t0, 5f
li t1, 0
5:
sw t1, __osRdb_IP6_CurSend
checkIP6:
MFC0( t0, C0_CAUSE)
andi t0, t0, CAUSE_IP6
bne zero, t0, checkIP6
la t0, RDB_BASE_REG
sw t2, (t0)
rdbout:
ld t0, THREAD_GP8(k0)
ld t1, THREAD_GP9(k0)
ld t2, THREAD_GP10(k0)
.set noat
ld $1, THREAD_GP1(k0)
.set at
lw k1, THREAD_SR(k0)
MTC0( k1, C0_SR)
.set noreorder
nop
nop
nop
nop
eret
.set reorder
skip_kmc_mode:
#endif
savecontext:
/* Save the context of the previously running thread to be restored when it resumes */

View File

@@ -17,8 +17,9 @@ LEAF(osGetIntMask)
lw t1, PHYS_TO_K1(MI_INTR_MASK_REG)
beqz t1, 1f
la t0, __OSGlobalIntMask # this is intentionally a macro in the branch delay slot
lui t0, %hi(__OSGlobalIntMask)
addiu t0, %lo(__OSGlobalIntMask) # Saves an instruction if the above branch was taken
lw t0, 0(t0)
srl t0, t0, 0x10
xor t0, t0, -1

View File

@@ -13,7 +13,7 @@ void osFree(void* region, void* addr) {
#ifdef _DEBUG
assert((region != NULL) && (addr != NULL));
if (((char*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
if (((u8*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
__osError(ERR_OSFREE_REGION, 1, region);
return;
}

View File

@@ -11,7 +11,7 @@ s32 osGetRegionBufCount(void* region) {
#ifdef _DEBUG
assert(rp != NULL);
if (((char*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
if (((u8*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
__osError(ERR_OSGETREGIONBUFCOUNT, 1, region);
return 0;
}

View File

@@ -11,7 +11,7 @@ s32 osGetRegionBufSize(void* region) {
#ifdef _DEBUG
assert(rp != NULL);
if (((char*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
if (((u8*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
__osError(ERR_OSGETREGIONBUFSIZE, 1, region);
return 0;
}

View File

@@ -12,7 +12,7 @@ void* osMalloc(void* region) {
#ifdef _DEBUG
assert(rp != NULL);
if (((char*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
if (((u8*)rp + ALIGN(sizeof(OSRegion), rp->r_alignSize)) != rp->r_startBufferAddress) {
__osError(ERR_OSMALLOC, 1, region);
return NULL;
}