rename part1

This commit is contained in:
SwareJonge
2023-02-20 09:10:53 +01:00
parent 0311f06aa3
commit 4f8cd441d4
28 changed files with 1302 additions and 1302 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef JKRHEAP_H
#define JKRHEAP_H
#include "dolphin/OS/OSMutex.h"
#include "dolphin/os/OSMutex.h"
#include "JSystem/JKernel/JKRDisposer.h"
#include "types.h"
@@ -1,31 +1,31 @@
#ifndef _DOLPHIN_OS
#define _DOLPHIN_OS
#include "types.h"
#include "dolphin/OS/OSContext.h"
#include "va_args.h"
#ifdef __cplusplus
extern "C" {
#endif
void OSPanic(const char *file, int line, const char *message, ...);
void OSReport(const char*, ...);
void OSVReport(const char* format, va_list list);
#define OSErrorLine(line, ...) \
OSPanic(__FILE__, line, __VA_ARGS__)
asm BOOL OSDisableInterrupts(void);
asm BOOL OSEnableInterrupts(void);
asm BOOL OSRestoreInterrupts(BOOL level);
void __RAS_OSDisableInterrupts_begin(void);
void __RAS_OSDisableInterrupts_end(void);
typedef void (*OSExceptionHandler)(u8, OSContext*);
OSExceptionHandler __OSSetExceptionHandler(u8, OSExceptionHandler);
#ifdef __cplusplus
};
#endif
#endif
#ifndef _DOLPHIN_OS
#define _DOLPHIN_OS
#include "types.h"
#include "dolphin/os/OSContext.h"
#include "va_args.h"
#ifdef __cplusplus
extern "C" {
#endif
void OSPanic(const char *file, int line, const char *message, ...);
void OSReport(const char*, ...);
void OSVReport(const char* format, va_list list);
#define OSErrorLine(line, ...) \
OSPanic(__FILE__, line, __VA_ARGS__)
asm BOOL OSDisableInterrupts(void);
asm BOOL OSEnableInterrupts(void);
asm BOOL OSRestoreInterrupts(BOOL level);
void __RAS_OSDisableInterrupts_begin(void);
void __RAS_OSDisableInterrupts_end(void);
typedef void (*OSExceptionHandler)(u8, OSContext*);
OSExceptionHandler __OSSetExceptionHandler(u8, OSExceptionHandler);
#ifdef __cplusplus
};
#endif
#endif
@@ -1,18 +1,18 @@
#ifndef OS_ARENA_H
#define OS_ARENA_H
#include "types.h"
#ifdef __cplusplus
extern "C"{
#endif
void* OSGetArenaHi(void);
void* OSGetArenaLo(void);
void OSSetArenaHi(void*);
void OSSetArenaLo(void*);
#ifdef __cplusplus
}
#endif
#ifndef OS_ARENA_H
#define OS_ARENA_H
#include "types.h"
#ifdef __cplusplus
extern "C"{
#endif
void* OSGetArenaHi(void);
void* OSGetArenaLo(void);
void OSSetArenaHi(void*);
void OSSetArenaLo(void*);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,30 +1,30 @@
#ifndef OS_CACHE_H
#define OS_CACHE_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
asm void DCEnable(void);
asm void DCInvalidateRange(void*, u32);
asm void DCFlushRange(void*, u32);
asm void DCStoreRange(void*, u32);
asm void DCFlushRangeNoSync(void*, u32);
asm void DCStoreRangeNoSync(void*, u32);
asm void DCZeroRange(void*, u32);
asm void DCTouchRange(void*, u32 len);
asm void ICInvalidateRange(void*, u32);
asm void ICFlashInvalidate(void);
asm void ICEnable(void);
asm void LCDisable(void);
//void L2GlobalInvalidate(void);
//void DMAErrorHandler(u8, struct OSContext*, u32, u32, ...);
//void __OSCacheInit(void);
#ifdef __cplusplus
}
#endif
#endif
#ifndef OS_CACHE_H
#define OS_CACHE_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
asm void DCEnable(void);
asm void DCInvalidateRange(void*, u32);
asm void DCFlushRange(void*, u32);
asm void DCStoreRange(void*, u32);
asm void DCFlushRangeNoSync(void*, u32);
asm void DCStoreRangeNoSync(void*, u32);
asm void DCZeroRange(void*, u32);
asm void DCTouchRange(void*, u32 len);
asm void ICInvalidateRange(void*, u32);
asm void ICFlashInvalidate(void);
asm void ICEnable(void);
asm void LCDisable(void);
//void L2GlobalInvalidate(void);
//void DMAErrorHandler(u8, struct OSContext*, u32, u32, ...);
//void __OSCacheInit(void);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,45 +1,45 @@
#ifndef OS_CONTEXT_H
#define OS_CONTEXT_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct OSContext{
u32 gprs[32];
u32 cr;
u32 lr;
u32 ctr;
u32 xer;
f64 fprs[32];
u32 fpscr_tmp;
u32 fpscr;
u32 srr0;
u32 srr1;
u16 mode;
u16 state;
u32 gqrs[8];
char UNK_0x1C4;
f64 psfs[32];
} OSContext;
OSContext* OS_CURRENT_CONTEXT_PHYS : 0x800000C0;
OSContext* OS_CURRENT_CONTEXT : 0x800000D4;
OSContext* OS_CURRENT_FPU_CONTEXT : 0x800000D8;
void OSSaveFPUContext(OSContext*);
void OSSetCurrentContext(OSContext*);
OSContext* OSGetCurrentContext(void);
BOOL OSSaveContext(OSContext*);
void OSLoadContext(OSContext*);
void* OSGetStackPointer(void);
void OSClearContext(OSContext*);
void OSInitContext(register OSContext*, register u32 srr, register u32 sp);
void OSDumpContext(const OSContext*);
void __OSContextInit(void);
#ifdef __cplusplus
};
#endif
#endif
#ifndef OS_CONTEXT_H
#define OS_CONTEXT_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct OSContext{
u32 gprs[32];
u32 cr;
u32 lr;
u32 ctr;
u32 xer;
f64 fprs[32];
u32 fpscr_tmp;
u32 fpscr;
u32 srr0;
u32 srr1;
u16 mode;
u16 state;
u32 gqrs[8];
char UNK_0x1C4;
f64 psfs[32];
} OSContext;
OSContext* OS_CURRENT_CONTEXT_PHYS : 0x800000C0;
OSContext* OS_CURRENT_CONTEXT : 0x800000D4;
OSContext* OS_CURRENT_FPU_CONTEXT : 0x800000D8;
void OSSaveFPUContext(OSContext*);
void OSSetCurrentContext(OSContext*);
OSContext* OSGetCurrentContext(void);
BOOL OSSaveContext(OSContext*);
void OSLoadContext(OSContext*);
void* OSGetStackPointer(void);
void OSClearContext(OSContext*);
void OSInitContext(register OSContext*, register u32 srr, register u32 sp);
void OSDumpContext(const OSContext*);
void __OSContextInit(void);
#ifdef __cplusplus
};
#endif
#endif
@@ -1,17 +1,17 @@
#ifndef OS_MEMORY_H
#define OS_MEMORY_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SIM_MEM *(u32 *)0x800000f0
static asm void Config24MB();
static asm void Config48MB();
u32 OSGetConsoleSimulatedMemSize(void);
#ifdef __cplusplus
}
#endif
#ifndef OS_MEMORY_H
#define OS_MEMORY_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SIM_MEM *(u32 *)0x800000f0
static asm void Config24MB();
static asm void Config48MB();
u32 OSGetConsoleSimulatedMemSize(void);
#ifdef __cplusplus
}
#endif
#endif
@@ -6,7 +6,7 @@ extern "C"
{
#endif
#include "dolphin/OS/OSThread.h"
#include "dolphin/os/OSThread.h"
struct OSMutex
{
@@ -1,14 +1,14 @@
#ifndef OS_TIME_H
#define OS_TIME_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef s64 OSTime;
OSTime OSGetTime(void);
#ifdef __cplusplus
}
#endif
#ifndef OS_TIME_H
#define OS_TIME_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef s64 OSTime;
OSTime OSGetTime(void);
#ifdef __cplusplus
}
#endif
#endif
+2 -2
View File
@@ -2,8 +2,8 @@
#define BATCONFIG_H
#include "types.h"
#include "dolphin/OS/OSMemory.h"
#include "dolphin/OS/os.h"
#include "dolphin/os/OSMemory.h"
#include "dolphin/os.h"
asm void Config24MB();
asm void Config48MB();
+2 -2
View File
@@ -2,8 +2,8 @@
#define LIBULTRA_H
#include "types.h"
#include "dolphin/OS/OSTime.h"
#include "dolphin/OS/OSCache.h"
#include "dolphin/os/OSTime.h"
#include "dolphin/os/OSCache.h"
int bcmp (void *v1, void *v2, u32 size);
void bcopy(void *dst, void *src, size_t n);
+1 -1
View File
@@ -3,7 +3,7 @@
#include "types.h"
#include "dolphin/OS/os.h"
#include "dolphin/os.h"
//#include "JSystem/JUT/JUTAssertion.h"
//#include "JSystem/JUT/JUTDbPrint.h"
+6 -6
View File
@@ -1,11 +1,11 @@
#include "JSystem/JUT/JUTAssertion.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "dolphin/OS/os.h"
#include "dolphin/OS/OSArena.h"
#include "dolphin/OS/OSAlloc.h"
#include "dolphin/OS/OSMemory.h"
#include "dolphin/OS/OSUtil.h"
#include "dolphin/OS/OSAddress.h"
#include "dolphin/os.h"
#include "dolphin/os/OSArena.h"
#include "dolphin/os/OSAlloc.h"
#include "dolphin/os/OSMemory.h"
#include "dolphin/os/OSUtil.h"
#include "dolphin/os/OSAddress.h"
JKRHeap *JKRHeap::sSystemHeap;
JKRHeap *JKRHeap::sCurrentHeap;
@@ -1,171 +1,171 @@
#include "dolphin/OS/OSAlarm.h"
#include "dolphin/OS/OSTime.h"
#include "dolphin/OS/OSContext.h"
static void DecrementerExceptionHandler(u8, OSContext*);
void OSInitAlarm(void){
if (__OSGetExceptionHandler(8) |= DecrementerExceptionHandler){
AlarmQueue.tail = 0;
AlarmQueue.head = 0;
__OSSetExceptionHandler(8, DecrementerExceptionHandler);
}
}
void OSCreateAlarm(OSAlarm* alarm){
alarm->handler = NULL;
}
static void InsertAlarm(OSAlarm* alarm, OSTime fire, OSAlarmHandler handler){
OSAlarm* next;
OSAlarm* prev;
if (0 < alarm->period) {
OSTime time = __OSGetSystemTime();
fire = alarm->start;
if (alarm->start < time) {
fire += alarm->period * ((time - alarm->start) / alarm->period + 1);
}
}
alarm->handler = handler;
alarm->fire = fire;
for (next = AlarmQueue.head; next; next = next->next){
if (next->fire <= fire) {
continue;
}
alarm->prev = next->prev;
next->prev = alarm;
alarm->next = next;
prev = alarm->prev;
if (prev) {
prev->next = alarm;
}
else{
AlarmQueue.head = alarm;
SetTimer(alarm);
}
return;
}
alarm->next = 0;
prev = AlarmQueue.tail;
AlarmQueue.tail = alarm;
alarm->prev = prev;
if (prev) {
prev->next = alarm;
}
else {
AlarmQueue.head = AlarmQueue.tail = alarm;
SetTimer(alarm);
}
}
void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler){
u32 res = OSDisableInterrupts();
alarm->period = 0;
InsertAlarm(alarm, __OSGetSystemTime() + tick, handler);
OSRestoreInterrupts(res);
}
void OSCancelAlarm(OSAlarm* alarm){
OSAlarm* next;
BOOL res;
res = OSDisableInterrupts();
if(alarm->handler == 0) {
OSRestoreInterrupts(res);
return;
}
next = alarm->next;
if (next == 0) {
AlarmQueue.tail = alarm->prev;
}
else {
AlarmQueue.head = next;
if (next) {
SetTimer(next)
}
}
alarm->handler = 0;
OSRestoreInterrupts(res);
}
static void DecrementerExceptionCallback(register OSException exc, register OSContext* ctx){
OSAlarmHandler handler;
OSTime time;
OSContext excctx;
OSAlarm* alarm;
OSAlarm* next;
time = __OSGetSystemTime();
alarm = AlarmQueue.head;
if (alarm == NULL){
OSLoadContext(ctx);
}
if (time < alarm->fire) {
SetTimer(alarm);
OSLoadContext(ctx);
}
next = alarm->next;
AlarmQueue.head = next;
if (next == NULL) {
AlarmQueue.tail = NULL;
}
else {
next->prev = NULL;
}
handler = alarm->handler;
alarm->handler = NULL;
if (0 < alarm->period) {
InsertAlarm(alarm, 0, handler);
}
if (AlarmQueue.head) {
SetTimer(AlarmQueue.head);
}
OSDisableScheduler();
OSClearContext(&excctx);
OSSetCurrentContext(&excctx);
handler(alarm, ctx);
OSClearContext(&excctx);
OSSetCurrentContext(ctx);
OSEnableScheduler();
__OSReschedule();
OSLoadContext(ctx);
}
static asm void DecrementerExceptionHandler(register u8 type, register OSContext* ctx){
nofralloc
stw r0, ctx->gprs[0]
stw r1, ctx->gprs[1]
stw r2, ctx->gprs[2]
stmw r6, ctx->gprs[6]
mfspr r0, 0x391
stw r0, ctx->gqrs[1]
mfspr r0, 0x392
stw r0, ctx->gqrs[2]
mfspr r0, 0x393
stw r0, ctx->gqrs[3]
mfspr r0, 0x394
stw r0, ctx->gqrs[4]
mfspr r0, 0x395
stw r0, ctx->gqrs[5]
mfspr r0, 0x396
stw r0, ctx->gqrs[6]
mfspr r0, 0x397
stw r0, ctx->gqrs[7]
stwu r1, -8(r1)
b DecrementerExceptionCallback
#include "dolphin/os/OSAlarm.h"
#include "dolphin/os/OSTime.h"
#include "dolphin/os/OSContext.h"
static void DecrementerExceptionHandler(u8, OSContext*);
void OSInitAlarm(void){
if (__OSGetExceptionHandler(8) |= DecrementerExceptionHandler){
AlarmQueue.tail = 0;
AlarmQueue.head = 0;
__OSSetExceptionHandler(8, DecrementerExceptionHandler);
}
}
void OSCreateAlarm(OSAlarm* alarm){
alarm->handler = NULL;
}
static void InsertAlarm(OSAlarm* alarm, OSTime fire, OSAlarmHandler handler){
OSAlarm* next;
OSAlarm* prev;
if (0 < alarm->period) {
OSTime time = __OSGetSystemTime();
fire = alarm->start;
if (alarm->start < time) {
fire += alarm->period * ((time - alarm->start) / alarm->period + 1);
}
}
alarm->handler = handler;
alarm->fire = fire;
for (next = AlarmQueue.head; next; next = next->next){
if (next->fire <= fire) {
continue;
}
alarm->prev = next->prev;
next->prev = alarm;
alarm->next = next;
prev = alarm->prev;
if (prev) {
prev->next = alarm;
}
else{
AlarmQueue.head = alarm;
SetTimer(alarm);
}
return;
}
alarm->next = 0;
prev = AlarmQueue.tail;
AlarmQueue.tail = alarm;
alarm->prev = prev;
if (prev) {
prev->next = alarm;
}
else {
AlarmQueue.head = AlarmQueue.tail = alarm;
SetTimer(alarm);
}
}
void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler){
u32 res = OSDisableInterrupts();
alarm->period = 0;
InsertAlarm(alarm, __OSGetSystemTime() + tick, handler);
OSRestoreInterrupts(res);
}
void OSCancelAlarm(OSAlarm* alarm){
OSAlarm* next;
BOOL res;
res = OSDisableInterrupts();
if(alarm->handler == 0) {
OSRestoreInterrupts(res);
return;
}
next = alarm->next;
if (next == 0) {
AlarmQueue.tail = alarm->prev;
}
else {
AlarmQueue.head = next;
if (next) {
SetTimer(next)
}
}
alarm->handler = 0;
OSRestoreInterrupts(res);
}
static void DecrementerExceptionCallback(register OSException exc, register OSContext* ctx){
OSAlarmHandler handler;
OSTime time;
OSContext excctx;
OSAlarm* alarm;
OSAlarm* next;
time = __OSGetSystemTime();
alarm = AlarmQueue.head;
if (alarm == NULL){
OSLoadContext(ctx);
}
if (time < alarm->fire) {
SetTimer(alarm);
OSLoadContext(ctx);
}
next = alarm->next;
AlarmQueue.head = next;
if (next == NULL) {
AlarmQueue.tail = NULL;
}
else {
next->prev = NULL;
}
handler = alarm->handler;
alarm->handler = NULL;
if (0 < alarm->period) {
InsertAlarm(alarm, 0, handler);
}
if (AlarmQueue.head) {
SetTimer(AlarmQueue.head);
}
OSDisableScheduler();
OSClearContext(&excctx);
OSSetCurrentContext(&excctx);
handler(alarm, ctx);
OSClearContext(&excctx);
OSSetCurrentContext(ctx);
OSEnableScheduler();
__OSReschedule();
OSLoadContext(ctx);
}
static asm void DecrementerExceptionHandler(register u8 type, register OSContext* ctx){
nofralloc
stw r0, ctx->gprs[0]
stw r1, ctx->gprs[1]
stw r2, ctx->gprs[2]
stmw r6, ctx->gprs[6]
mfspr r0, 0x391
stw r0, ctx->gqrs[1]
mfspr r0, 0x392
stw r0, ctx->gqrs[2]
mfspr r0, 0x393
stw r0, ctx->gqrs[3]
mfspr r0, 0x394
stw r0, ctx->gqrs[4]
mfspr r0, 0x395
stw r0, ctx->gqrs[5]
mfspr r0, 0x396
stw r0, ctx->gqrs[6]
mfspr r0, 0x397
stw r0, ctx->gqrs[7]
stwu r1, -8(r1)
b DecrementerExceptionCallback
}
@@ -1,20 +1,20 @@
#include "dolphin/OS/OSArena.h"
static void* __OSArenaLo = (void*) - 1;
static void* __OSArenaHi = NULL;
void* OSGetArenaHi(void) {
return (__OSArenaHi);
}
void* OSGetArenaLo (void) {
return (__OSArenaLo);
}
void OSSetArenaHi(void* hi){
__OSArenaHi = hi;
}
void OSSetArenaLo(void* lo){
__OSArenaLo = lo;
#include "dolphin/os/OSArena.h"
static void* __OSArenaLo = (void*) - 1;
static void* __OSArenaHi = NULL;
void* OSGetArenaHi(void) {
return (__OSArenaHi);
}
void* OSGetArenaLo (void) {
return (__OSArenaLo);
}
void OSSetArenaHi(void* hi){
__OSArenaHi = hi;
}
void OSSetArenaLo(void* lo){
__OSArenaLo = lo;
}
@@ -1,112 +1,112 @@
#include "dolphin/OS/OSAudioSystem.h"
#include "dolphin/dsp/dsp.h"
u8 DSPInitCode[] = { 0x02, 0x9F, 0x00, 0x10, 0x02, 0x9F, 0x00, 0x33, 0x02, 0x9F,
0x00, 0x34, 0x02, 0x9F, 0x00, 0x35, 0x02, 0x9F, 0x00, 0x36,
0x02, 0x9F, 0x00, 0x37, 0x02, 0x9F, 0x00, 0x38, 0x02, 0x9F,
0x00, 0x39, 0x12, 0x06, 0x12, 0x03, 0x12, 0x04, 0x12, 0x05,
0x00, 0x80, 0x80, 0x00, 0x00, 0x88, 0xFF, 0xFF, 0x00, 0x84,
0x10, 0x00, 0x00, 0x64, 0x00, 0x1D, 0x02, 0x18, 0x00, 0x00,
0x81, 0x00, 0x1C, 0x1E, 0x00, 0x44, 0x1B, 0x1E, 0x00, 0x84,
0x08, 0x00, 0x00, 0x64, 0x00, 0x27, 0x19, 0x1E, 0x00, 0x00,
0x00, 0xDE, 0xFF, 0xFC, 0x02, 0xA0, 0x80, 0x00, 0x02, 0x9C,
0x00, 0x28, 0x16, 0xFC, 0x00, 0x54, 0x16, 0xFD, 0x43, 0x48,
0x00, 0x21, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF,
0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
#define SOME_BUFFER (void*) 0x81000000
#define SOME_SIZE 0x80U
#define ARENA_HI_OFFSET (void*) ((uintptr_t) OSGetArenaHi() - SOME_SIZE)
void __OSInitAudio(void){
u8 dummy[8];
u32 r28;
u16 r3;
memcpy(ARENA_HI_OFFSET, SOME_BUFFER, SOME_SIZE);
memcpy(SOME_BUFFER, &DSPInitCode, SOME_SIZE);
DCFlushRange(SOME_BUFFER, SOME_SIZE);
__DSPRegs[9] = 0x43;
__DSPRegs[5] = 0x8AC;
__DSPRegs[5] |= 1;
while(__DSPRegs[5] & 1)
continue;
__DSPRegs[0] = 0;
while(((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000)
continue;
*(u32*) &__DSPRegs[16] = 0x1000000;
*(u32*) &__DSPRegs[18] = 0;
*(u32*) &__DSPRegs[20] = 0x20;
for (r3 = __DSPRegs[5]; !(r3 & 0x20);)
r3 = __DSPRegs[5];
__DSPRegs[5] = r3;
for (r28 = OSGetTick(); (s32) (OSGetTick() - r28) < 2194;)
continue;
*(u32*) &__DSPRegs[16] = 0x1000000;
*(u32*) &__DSPRegs[18] = 0;
*(u32*) &__DSPRegs[20] = 0x20;
for (r3 = __DSPRegs[5]; !(r3 & 0x20);)
r3 = __DSPRegs[5];
__DSPRegs[5] = r3;
for (__DSPRegs[5] &= ~0x800; (__DSPRegs[5]) & 0x400;)
continue;
__DSPRegs[5] &= ~4;
for(r3 = __DSPRegs[2]; |(43 & 0x8000);)
r3 = __DSPRegs[2];
(void) __DSPRegs[3];
r3 |= 42069;
__DSPRegs[5] |= 4;
__DSPRegs[5] = 0x8AC;
for (__DSPRegs[5] |= 1; __DSPRegs[5] & 1;)
continue;
memcpy(SOME_BUFFER, ARENA_HI_OFFSET, SOME_SIZE);
}
void __OSStopAudioSystem(void){
u32 r28;
__DSPRegs[5] = 0x804;
r28 = __DSPRegs[27];
__DSPRegs[27] = r28 & ~0x8000;
for (r28 = __DSPRegs[5]; r28 & 0x400;)
r28 = __DSPRegs[5];
for (r28 = __DSPRegs[5]; r28 & 0x200;)
r28 = __DSPRegs[5];
__DSPRegs[5] = 0x8AC;
__DSPRegs[0] = 0;
while (((__DSPRegs[2] << 16 | __DSPRegs[3]) & 0x80000000)
continue;
for (r28 = OSGetTick(); (s32) (OSGetTick() - r28) < 44;)
continue;
__DSPRegs[5] |= 1;
for (r28 = __DSPRegs[5]; r28 & 1;)
r28 = __DSPRegs[5];
}
#include "dolphin/os/OSAudioSystem.h"
#include "dolphin/dsp/dsp.h"
u8 DSPInitCode[] = { 0x02, 0x9F, 0x00, 0x10, 0x02, 0x9F, 0x00, 0x33, 0x02, 0x9F,
0x00, 0x34, 0x02, 0x9F, 0x00, 0x35, 0x02, 0x9F, 0x00, 0x36,
0x02, 0x9F, 0x00, 0x37, 0x02, 0x9F, 0x00, 0x38, 0x02, 0x9F,
0x00, 0x39, 0x12, 0x06, 0x12, 0x03, 0x12, 0x04, 0x12, 0x05,
0x00, 0x80, 0x80, 0x00, 0x00, 0x88, 0xFF, 0xFF, 0x00, 0x84,
0x10, 0x00, 0x00, 0x64, 0x00, 0x1D, 0x02, 0x18, 0x00, 0x00,
0x81, 0x00, 0x1C, 0x1E, 0x00, 0x44, 0x1B, 0x1E, 0x00, 0x84,
0x08, 0x00, 0x00, 0x64, 0x00, 0x27, 0x19, 0x1E, 0x00, 0x00,
0x00, 0xDE, 0xFF, 0xFC, 0x02, 0xA0, 0x80, 0x00, 0x02, 0x9C,
0x00, 0x28, 0x16, 0xFC, 0x00, 0x54, 0x16, 0xFD, 0x43, 0x48,
0x00, 0x21, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF,
0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
#define SOME_BUFFER (void*) 0x81000000
#define SOME_SIZE 0x80U
#define ARENA_HI_OFFSET (void*) ((uintptr_t) OSGetArenaHi() - SOME_SIZE)
void __OSInitAudio(void){
u8 dummy[8];
u32 r28;
u16 r3;
memcpy(ARENA_HI_OFFSET, SOME_BUFFER, SOME_SIZE);
memcpy(SOME_BUFFER, &DSPInitCode, SOME_SIZE);
DCFlushRange(SOME_BUFFER, SOME_SIZE);
__DSPRegs[9] = 0x43;
__DSPRegs[5] = 0x8AC;
__DSPRegs[5] |= 1;
while(__DSPRegs[5] & 1)
continue;
__DSPRegs[0] = 0;
while(((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000)
continue;
*(u32*) &__DSPRegs[16] = 0x1000000;
*(u32*) &__DSPRegs[18] = 0;
*(u32*) &__DSPRegs[20] = 0x20;
for (r3 = __DSPRegs[5]; !(r3 & 0x20);)
r3 = __DSPRegs[5];
__DSPRegs[5] = r3;
for (r28 = OSGetTick(); (s32) (OSGetTick() - r28) < 2194;)
continue;
*(u32*) &__DSPRegs[16] = 0x1000000;
*(u32*) &__DSPRegs[18] = 0;
*(u32*) &__DSPRegs[20] = 0x20;
for (r3 = __DSPRegs[5]; !(r3 & 0x20);)
r3 = __DSPRegs[5];
__DSPRegs[5] = r3;
for (__DSPRegs[5] &= ~0x800; (__DSPRegs[5]) & 0x400;)
continue;
__DSPRegs[5] &= ~4;
for(r3 = __DSPRegs[2]; |(43 & 0x8000);)
r3 = __DSPRegs[2];
(void) __DSPRegs[3];
r3 |= 42069;
__DSPRegs[5] |= 4;
__DSPRegs[5] = 0x8AC;
for (__DSPRegs[5] |= 1; __DSPRegs[5] & 1;)
continue;
memcpy(SOME_BUFFER, ARENA_HI_OFFSET, SOME_SIZE);
}
void __OSStopAudioSystem(void){
u32 r28;
__DSPRegs[5] = 0x804;
r28 = __DSPRegs[27];
__DSPRegs[27] = r28 & ~0x8000;
for (r28 = __DSPRegs[5]; r28 & 0x400;)
r28 = __DSPRegs[5];
for (r28 = __DSPRegs[5]; r28 & 0x200;)
r28 = __DSPRegs[5];
__DSPRegs[5] = 0x8AC;
__DSPRegs[0] = 0;
while (((__DSPRegs[2] << 16 | __DSPRegs[3]) & 0x80000000)
continue;
for (r28 = OSGetTick(); (s32) (OSGetTick() - r28) < 44;)
continue;
__DSPRegs[5] |= 1;
for (r28 = __DSPRegs[5]; r28 & 1;)
r28 = __DSPRegs[5];
}
@@ -1,215 +1,215 @@
#include "dolphin/OS/OSCache.h"
//Needs OSError stuff
asm void DCEnable(void){
nofralloc
sync
mfspr r3, 0x3f0
ori r3, r3, 0x4000
mtspr 0x3f0, r3
blr
}
asm void DCInvalidateRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pi_r
addi len, len, 0x20
pi_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
inv_ran:
dcbi 0, buf
addi buf, buf, 0x20
bdnz inv_ran
blr
}
asm void DCFlushRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pf_r
addi len, len, 0x20
pf_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
fls_ran:
dcbf 0, buf
addi buf, buf, 0x20
bdnz fls_ran
sc
blr
}
asm void DCStoreRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- ps_r
addi len, len, 0x20
ps_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
st_ran:
dcbst 0, buf
addi buf, buf, 0x20
bdnz st_ran
sc
blr
}
asm void DCFlushRangeNoSync(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pfns_r
addi len, len, 0x20
pfns_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
fls_ranns:
dcbf 0, buf
addi buf, buf, 0x20
bdnz fls_ranns
blr
}
asm void DCStoreRangeNoSync(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- psns_r
addi len, len, 0x20
psns_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
st_ranns:
dcbst 0, buf
addi buf, buf, 0x20
bdnz st_ranns
sc
blr
}
asm void DCZeroRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pzr_r
addi len, len, 0x20
pzr_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
z_ran:
dcbz 0, buf
addi buf, buf, 0x20
bdnz z_ran
blr
}
asm void DCTouchRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- ptor_r
addi len, len, 0x20
ptor_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
t_ran:
dcbt 0, buf
addi buf, buf, 0x20
bdnz t_ran
blr
}
asm void ICInvalidateRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pir_r
addi len, len, 0x20
pir_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
i_ran:
icbi 0, buf
addi buf, buf, 0x20
bdnz i_ran
sync
isync
blr
}
asm void ICFlashInvalidate(void){
nofralloc
mfspr r3, 0x3f0
ori r3, r3, 0x800
mtspr 0x3f0, r3
blr
}
asm void ICEnable(void){
nofralloc
isync
mfspr r3, 0x3f0
ori r3, r3, 0x8000
mtspr 0x3f0, r3
blr
}
asm void LCDisable(void){
nofralloc
lis r3, 0xE000
li r4, 0x200
mtctr r4
dis:
dcbi 0, r3
addi r3, r3, 0x20
bdnz dis
mfspr r4, 0x398
rlwinm r4, r4, 0, 4, 2
mtspr 0x398, r4
blr
}
#include "dolphin/os/OSCache.h"
//Needs OSError stuff
asm void DCEnable(void){
nofralloc
sync
mfspr r3, 0x3f0
ori r3, r3, 0x4000
mtspr 0x3f0, r3
blr
}
asm void DCInvalidateRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pi_r
addi len, len, 0x20
pi_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
inv_ran:
dcbi 0, buf
addi buf, buf, 0x20
bdnz inv_ran
blr
}
asm void DCFlushRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pf_r
addi len, len, 0x20
pf_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
fls_ran:
dcbf 0, buf
addi buf, buf, 0x20
bdnz fls_ran
sc
blr
}
asm void DCStoreRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- ps_r
addi len, len, 0x20
ps_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
st_ran:
dcbst 0, buf
addi buf, buf, 0x20
bdnz st_ran
sc
blr
}
asm void DCFlushRangeNoSync(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pfns_r
addi len, len, 0x20
pfns_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
fls_ranns:
dcbf 0, buf
addi buf, buf, 0x20
bdnz fls_ranns
blr
}
asm void DCStoreRangeNoSync(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- psns_r
addi len, len, 0x20
psns_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
st_ranns:
dcbst 0, buf
addi buf, buf, 0x20
bdnz st_ranns
sc
blr
}
asm void DCZeroRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pzr_r
addi len, len, 0x20
pzr_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
z_ran:
dcbz 0, buf
addi buf, buf, 0x20
bdnz z_ran
blr
}
asm void DCTouchRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- ptor_r
addi len, len, 0x20
ptor_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
t_ran:
dcbt 0, buf
addi buf, buf, 0x20
bdnz t_ran
blr
}
asm void ICInvalidateRange(register void* buf, register u32 len){
nofralloc
cmplwi len, 0
blelr-
clrlwi. r5, buf, 0x1b
beq- pir_r
addi len, len, 0x20
pir_r:
addi len, len, 0x1f
srwi len, len, 5
mtctr len
i_ran:
icbi 0, buf
addi buf, buf, 0x20
bdnz i_ran
sync
isync
blr
}
asm void ICFlashInvalidate(void){
nofralloc
mfspr r3, 0x3f0
ori r3, r3, 0x800
mtspr 0x3f0, r3
blr
}
asm void ICEnable(void){
nofralloc
isync
mfspr r3, 0x3f0
ori r3, r3, 0x8000
mtspr 0x3f0, r3
blr
}
asm void LCDisable(void){
nofralloc
lis r3, 0xE000
li r4, 0x200
mtctr r4
dis:
dcbi 0, r3
addi r3, r3, 0x20
bdnz dis
mfspr r4, 0x398
rlwinm r4, r4, 0, 4, 2
mtspr 0x398, r4
blr
}
File diff suppressed because it is too large Load Diff
@@ -1,13 +1,13 @@
#include "dolphin/OS/os.h"
asm BOOL OSDisableInterrupts(void){
nofralloc
entry __RAS_OSDisableInterrupts_begin
mfmsr r3
rlwinm r4, r3, 0, 17, 15
mtmsr r4
entry __RAS_OSDisableInterrupts_end
rlwinm r3, r3, 17, 31, 31
blr
#include "dolphin/os/os.h"
asm BOOL OSDisableInterrupts(void){
nofralloc
entry __RAS_OSDisableInterrupts_begin
mfmsr r3
rlwinm r4, r3, 0, 17, 15
mtmsr r4
entry __RAS_OSDisableInterrupts_end
rlwinm r3, r3, 17, 31, 31
blr
}
@@ -1,11 +1,11 @@
#include "dolphin/OS/os.h"
asm BOOL OSEnableInterrupts(void){
nofralloc
/* 8007AC38 7C6000A6 */ mfmsr r3
/* 8007AC3C 60648000 */ ori r4, r3, 0x8000
/* 8007AC40 7C800124 */ mtmsr r4
/* 8007AC44 54638FFE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
/* 8007AC48 4E800020 */ blr
#include "dolphin/os.h"
asm BOOL OSEnableInterrupts(void){
nofralloc
/* 8007AC38 7C6000A6 */ mfmsr r3
/* 8007AC3C 60648000 */ ori r4, r3, 0x8000
/* 8007AC40 7C800124 */ mtmsr r4
/* 8007AC44 54638FFE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
/* 8007AC48 4E800020 */ blr
}
@@ -1,8 +1,8 @@
#include "dolphin/OS/OSError.h"
#include "dolphin/OS/OSContext.h"
#include "dolphin/os/OSError.h"
#include "dolphin/os/OSContext.h"
#include "dolphin/BASE/ppcarch.h"
#include "dolphin/dsp/dsp.h"
#include "dolphin/OS/OSTime.h"
#include "dolphin/os/OSTime.h"
OSErrorHandler __OSErrorTable[16];
@@ -1,23 +1,23 @@
#include "dolphin/OS/OSMemory.h"
u32 OSGetConsoleSimulatedMemSize(void){
return(SIM_MEM);
}
static bool OnReset(bool final){
if (final) {
__MEMRegs[8] = 0xff;
__OSMaskInterrupts(0xF0000000);
}
return true;
}
static void MEMInterruptsHandler(__OSInterrupt interrupt, OSContext* ctx){
u32 cause = __MEMRegs[0xf];
u32 addr = (((u32) __MEMRegs[0x12] & 0x3ff) << 16) | __MEMRegs[0x11];
__MEMRegs[0x10] = 0;
if(__OSErrorTable[OS_ERROR_PROTECTION]) {
__OSErrorTable[OS_ERROR_PROTECTION](OS_ERROR_PROTECTION, ctx, cause, adr);
return;
}
__OSUnhandledException(OS_ERROR_PROTECTION, ctx, cause, addr);
#include "dolphin/os/OSMemory.h"
u32 OSGetConsoleSimulatedMemSize(void){
return(SIM_MEM);
}
static bool OnReset(bool final){
if (final) {
__MEMRegs[8] = 0xff;
__OSMaskInterrupts(0xF0000000);
}
return true;
}
static void MEMInterruptsHandler(__OSInterrupt interrupt, OSContext* ctx){
u32 cause = __MEMRegs[0xf];
u32 addr = (((u32) __MEMRegs[0x12] & 0x3ff) << 16) | __MEMRegs[0x11];
__MEMRegs[0x10] = 0;
if(__OSErrorTable[OS_ERROR_PROTECTION]) {
__OSErrorTable[OS_ERROR_PROTECTION](OS_ERROR_PROTECTION, ctx, cause, adr);
return;
}
__OSUnhandledException(OS_ERROR_PROTECTION, ctx, cause, addr);
}
@@ -1,17 +1,17 @@
#include "dolphin/OS/os.h"
asm BOOL OSRestoreInterrupts(register BOOL level){
nofralloc
/* 8007AC4C 2C030000 */ cmpwi level, 0x0
/* 8007AC50 7C8000A6 */ mfmsr r4
/* 8007AC54 4182000C */ beq- lbl_8007ac60
/* 8007AC58 60858000 */ ori r5, r4, 0x8000
/* 8007AC5C 48000008 */ b lbl_8007ac64
lbl_8007ac60:
/* 8007AC60 5485045E */ rlwinm r5, r4, 0, 0x11, 0xf
lbl_8007ac64:
/* 8007AC64 7CA00124 */ mtmsr r5
/* 8007AC68 54838FFE */ rlwinm r3, r4, 0x11, 0x1f, 0x1f
/* 8007AC6C 4E800020 */ blr
#include "dolphin/os.h"
asm BOOL OSRestoreInterrupts(register BOOL level){
nofralloc
/* 8007AC4C 2C030000 */ cmpwi level, 0x0
/* 8007AC50 7C8000A6 */ mfmsr r4
/* 8007AC54 4182000C */ beq- lbl_8007ac60
/* 8007AC58 60858000 */ ori r5, r4, 0x8000
/* 8007AC5C 48000008 */ b lbl_8007ac64
lbl_8007ac60:
/* 8007AC60 5485045E */ rlwinm r5, r4, 0, 0x11, 0xf
lbl_8007ac64:
/* 8007AC64 7CA00124 */ mtmsr r5
/* 8007AC68 54838FFE */ rlwinm r3, r4, 0x11, 0x1f, 0x1f
/* 8007AC6C 4E800020 */ blr
}
+2 -2
View File
@@ -1,7 +1,7 @@
#include "libultra/libultra.h"
#include "_mem.h"
#include "dolphin/OS/os.h"
#include "dolphin/OS/OSTime.h"
#include "dolphin/os.h"
#include "dolphin/os/OSTime.h"
extern OSTime __osTimeOffset;