final io chunk

This commit is contained in:
angie
2023-09-03 19:07:13 -03:00
parent 17e3264c3c
commit db60759a48
30 changed files with 144 additions and 106 deletions
+2 -2
View File
@@ -1,9 +1,9 @@
#include "global.h"
#include "ultra64.h"
s32 __osSiRawReadIo(uintptr_t devAddr, u32* data) {
if (__osSiDeviceBusy()) {
return -1;
}
*data = *(u32*)(devAddr | 0xA0000000);
*data = IO_READ(devAddr);
return 0;
}
+2 -2
View File
@@ -1,11 +1,11 @@
#include "global.h"
#include "ultra64.h"
s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data) {
if (__osSiDeviceBusy() != 0) {
return -1;
}
*(u32*)(devAddr | 0xA0000000) = data;
IO_WRITE(devAddr, data);
return 0;
}
+2 -1
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "ultra64.h"
#include "libc/stdbool.h"
s32 __osSpDeviceBusy(void) {
register u32 status = IO_READ(SP_STATUS_REG);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
u32 __osSpGetStatus() {
return IO_READ(SP_STATUS_REG);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
s32 __osSpRawStartDma(s32 direction, u32 devAddr, void* dramAddr, size_t size) {
if (__osSpDeviceBusy()) {
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
s32 __osSpSetPc(u32 pc) {
register u32 spStatus = IO_READ(SP_STATUS_REG);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void __osSpSetStatus(u32 data) {
IO_WRITE(SP_STATUS_REG, data);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
#define _osVirtualToPhysical(ptr) \
if (ptr != NULL) { \
+2 -2
View File
@@ -1,5 +1,5 @@
#include "global.h"
#include "ultra64.h"
void osSpTaskYield(void) {
__osSpSetStatus(0x400);
__osSpSetStatus(SP_SET_YIELD);
}
+7 -7
View File
@@ -1,17 +1,17 @@
#include "global.h"
#include "ultra64.h"
OSYieldResult osSpTaskYielded(OSTask* task) {
s32 status;
s32 status = __osSpGetStatus();
OSYieldResult result;
status = __osSpGetStatus();
if (status & 0x100) {
result = 1;
if (status & SP_STATUS_YIELDED) {
result = OS_TASK_YIELDED;
} else {
result = 0;
}
if (status & 0x80) {
if (status & SP_STATUS_YIELD) {
task->t.flags |= result;
task->t.flags &= ~(2);
task->t.flags &= ~OS_TASK_DP_WAIT;
}
return result;
}
+3 -2
View File
@@ -1,6 +1,7 @@
#include "global.h"
#include "ultra64.h"
#include "alignment.h"
__OSViContext vi[2] = { 0 };
__OSViContext vi[2] ALIGNED(8) = { 0 };
__OSViContext* __osViCurr = &vi[0];
__OSViContext* __osViNext = &vi[1];
+3 -3
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViBlack(u8 active) {
register u32 saveMask;
@@ -6,9 +6,9 @@ void osViBlack(u8 active) {
saveMask = __osDisableInt();
if (active) {
__osViNext->state |= 0x20;
__osViNext->state |= VI_STATE_BLACK;
} else {
__osViNext->state &= ~0x20;
__osViNext->state &= ~VI_STATE_BLACK;
}
__osRestoreInt(saveMask);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViExtendVStart(u32 a0) {
__additional_scanline = a0;
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
__OSViContext* __osViGetCurrentContext(void) {
return __osViCurr;
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void* osViGetCurrentFramebuffer(void) {
register u32 prevInt = __osDisableInt();
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void* osViGetNextFramebuffer(void) {
register u32 saveMask;
+8 -6
View File
@@ -1,14 +1,16 @@
#include "global.h"
#include "ultra64.h"
#include "PR/osint.h"
#include "stack.h"
#include "PR/osint.h"
#include "libc/stdbool.h"
#include "macros.h"
OSThread viThread;
STACK(sViStack, 0x1000);
OSMesgQueue viEventQueue;
OSMesg viEventBuf[6];
OSIoMesg viRetraceMsg;
OSIoMesg viCounterMsg;
STACK(sViStack, OS_VIM_STACKSIZE) ALIGNED(16);
OSMesgQueue viEventQueue ALIGNED(8);
OSMesg viEventBuf[6] ALIGNED(8);
OSIoMesg viRetraceMsg ALIGNED(8);
OSIoMesg viCounterMsg ALIGNED(8);
OSDevMgr __osViDevMgr = { 0 };
u32 __additional_scanline = 0;
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount) {
register u32 saveMask = __osDisableInt();
+2 -2
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViSetMode(OSViMode* modep) {
register u32 saveMask;
@@ -6,7 +6,7 @@ void osViSetMode(OSViMode* modep) {
saveMask = __osDisableInt();
__osViNext->modep = modep;
__osViNext->state = 1;
__osViNext->state = VI_STATE_MODE_UPDATED;
__osViNext->features = __osViNext->modep->comRegs.ctrl;
__osRestoreInt(saveMask);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViSetSpecialFeatures(u32 func) {
register u32 saveMask = __osDisableInt();
+4 -4
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViSetXScale(f32 value) {
register u32 nomValue;
@@ -8,10 +8,10 @@ void osViSetXScale(f32 value) {
__osViNext->x.factor = value;
__osViNext->state |= 0x2;
__osViNext->state |= VI_STATE_XSCALE_UPDATED;
nomValue = __osViNext->modep->comRegs.xScale & 0xFFF;
__osViNext->x.scale = (u32)(__osViNext->x.factor * nomValue) & 0xFFF;
nomValue = __osViNext->modep->comRegs.xScale & VI_SCALE_MASK;
__osViNext->x.scale = (u32)(__osViNext->x.factor * nomValue) & VI_SCALE_MASK;
__osRestoreInt(saveMask);
}
+2 -2
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osViSetYScale(f32 value) {
register u32 saveMask;
@@ -7,7 +7,7 @@ void osViSetYScale(f32 value) {
__osViNext->y.factor = value;
__osViNext->state |= 0x4;
__osViNext->state |= VI_STATE_YSCALE_UPDATED;
__osRestoreInt(saveMask);
}
+2 -2
View File
@@ -1,11 +1,11 @@
#include "global.h"
#include "ultra64.h"
void osViSwapBuffer(void* frameBufPtr) {
u32 saveMask = __osDisableInt();
__osViNext->buffer = frameBufPtr;
__osViNext->state |= 0x10;
__osViNext->state |= VI_STATE_BUFFER_UPDATED;
__osRestoreInt(saveMask);
}
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void __osViSwapContext(void) {
register OSViMode* viMode;