2022-04-10 00:17:06 +00:00
|
|
|
#ifndef _DOLPHIN_OS_H
|
|
|
|
#define _DOLPHIN_OS_H
|
|
|
|
|
2022-09-01 00:22:20 +00:00
|
|
|
#include <dolphin/types.h>
|
2022-04-10 00:17:06 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2022-09-01 00:22:20 +00:00
|
|
|
// TODO OSInerrupt.h
|
2022-09-10 20:32:26 +00:00
|
|
|
typedef s16 __OSInterrupt;
|
2022-09-01 00:22:20 +00:00
|
|
|
|
2022-08-05 10:23:49 +00:00
|
|
|
// Upper words of the masks, since UIMM is only 16 bits
|
2022-09-10 20:32:26 +00:00
|
|
|
#define OS_CACHED_REGION_PREFIX 0x8000
|
|
|
|
#define OS_UNCACHED_REGION_PREFIX 0xC000
|
|
|
|
#define OS_PHYSICAL_MASK 0x3FFF
|
2022-08-05 10:23:49 +00:00
|
|
|
|
2022-09-10 20:32:26 +00:00
|
|
|
#define OS_BASE_CACHED (OS_CACHED_REGION_PREFIX << 16)
|
|
|
|
#define OS_BASE_UNCACHED (OS_UNCACHED_REGION_PREFIX << 16)
|
2022-08-05 10:23:49 +00:00
|
|
|
|
2022-08-26 03:46:24 +00:00
|
|
|
#ifdef __MWERKS__
|
2022-08-05 10:23:49 +00:00
|
|
|
#define AT_ADDRESS(xyz) : (xyz)
|
2022-08-26 03:46:24 +00:00
|
|
|
#else
|
|
|
|
#define AT_ADDRESS
|
|
|
|
#endif
|
2022-09-01 00:22:20 +00:00
|
|
|
typedef s64 OSTime;
|
|
|
|
typedef u32 OSTick;
|
2022-09-10 20:32:26 +00:00
|
|
|
u32 __OSBusClock AT_ADDRESS(OS_BASE_CACHED | 0x00F8); // sync with OSLoMem.h
|
|
|
|
u32 __OSCoreClock AT_ADDRESS(OS_BASE_CACHED | 0x00FC); // sync with OSLoMem.h
|
|
|
|
#define OS_BUS_CLOCK __OSBusClock
|
|
|
|
#define OS_CORE_CLOCK __OSCoreClock
|
|
|
|
#define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4)
|
|
|
|
|
2022-09-14 05:24:41 +00:00
|
|
|
#define OSPhysicalToCached(paddr) ((void*)((u32)(paddr) + OS_BASE_CACHED))
|
|
|
|
#define OSPhysicalToUncached(paddr) ((void*)((u32)(paddr) + OS_BASE_UNCACHED))
|
|
|
|
#define OSCachedToPhysical(caddr) ((u32)((u8*)(caddr)-OS_BASE_CACHED))
|
|
|
|
#define OSUncachedToPhysical(ucaddr) ((u32)((u8*)(ucaddr)-OS_BASE_UNCACHED))
|
|
|
|
#define OSCachedToUncached(caddr) ((void*)((u8*)(caddr) + (OS_BASE_UNCACHED - OS_BASE_CACHED)))
|
|
|
|
#define OSUncachedToCached(ucaddr) ((void*)((u8*)(ucaddr) - (OS_BASE_UNCACHED - OS_BASE_CACHED)))
|
2022-09-10 20:32:26 +00:00
|
|
|
|
|
|
|
#define OSTicksToCycles(ticks) (((ticks) * ((OS_CORE_CLOCK * 2) / OS_TIMER_CLOCK)) / 2)
|
|
|
|
#define OSTicksToSeconds(ticks) ((ticks) / OS_TIMER_CLOCK)
|
|
|
|
#define OSTicksToMilliseconds(ticks) ((ticks) / (OS_TIMER_CLOCK / 1000))
|
|
|
|
#define OSTicksToMicroseconds(ticks) (((ticks)*8) / (OS_TIMER_CLOCK / 125000))
|
|
|
|
#define OSTicksToNanoseconds(ticks) (((ticks)*8000) / (OS_TIMER_CLOCK / 125000))
|
|
|
|
#define OSSecondsToTicks(sec) ((sec)*OS_TIMER_CLOCK)
|
|
|
|
#define OSMillisecondsToTicks(msec) ((msec) * (OS_TIMER_CLOCK / 1000))
|
|
|
|
#define OSMicrosecondsToTicks(usec) (((usec) * (OS_TIMER_CLOCK / 125000)) / 8)
|
|
|
|
#define OSNanosecondsToTicks(nsec) (((nsec) * (OS_TIMER_CLOCK / 125000)) / 8000)
|
|
|
|
|
|
|
|
#define OSDiffTick(tick1, tick0) ((s32)(tick1) - (s32)(tick0))
|
|
|
|
|
|
|
|
#define OSRoundUp32B(v) (((u32)(v + 31) & ~31))
|
2022-04-30 08:32:00 +00:00
|
|
|
|
2022-04-10 00:17:06 +00:00
|
|
|
OSTime OSGetTime();
|
2022-09-13 04:26:54 +00:00
|
|
|
void OSReport(const char* msg, ...);
|
2022-09-16 01:17:42 +00:00
|
|
|
void OSPanic(const char* file, int line, const char* msg, ...);
|
2022-04-10 00:17:06 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2022-09-10 20:32:26 +00:00
|
|
|
#include <dolphin/os/OSAlarm.h>
|
|
|
|
#include <dolphin/os/OSCache.h>
|
|
|
|
#include <dolphin/os/OSContext.h>
|
|
|
|
#include <dolphin/os/OSFont.h>
|
|
|
|
#include <dolphin/os/OSReset.h>
|
2022-09-14 05:24:41 +00:00
|
|
|
#include <dolphin/os/OSSerial.h>
|
2022-09-10 20:32:26 +00:00
|
|
|
#include <dolphin/os/OSThread.h>
|
2022-04-10 00:17:06 +00:00
|
|
|
#endif
|