31static __inline__
void pcsx_putc(
int c) { *((
volatile char*
const)0x1f802080) =
c; }
32static __inline__
void pcsx_debugbreak() { *((
volatile char*
const)0x1f802081) = 0; }
33static __inline__
void pcsx_execSlot(uint8_t slot) { *((
volatile uint8_t*
const)0x1f802081) = slot; }
34static __inline__
void pcsx_exit(
int code) { *((
volatile int16_t*
const)0x1f802082) = code; }
35static __inline__
void pcsx_message(
const char* msg) { *((
volatile const char**
const)0x1f802084) = msg; }
36static __inline__
void pcsx_checkKernel(
int enable) { *((
volatile char*)0x1f802088) = enable; }
37static __inline__
int pcsx_isCheckingKernel() {
return *((
volatile char*
const)0x1f802088) != 0; }
38static __inline__
void pcsx_initMsan() { *((
volatile char*
const)0x1f802089) = 0; }
39static __inline__
void pcsx_resetMsan() { *((
volatile char*
const)0x1f802089) = 1; }
43 __asm__
volatile(
"lw %0, 0x208c(%1)" :
"=r"(
ret) :
"r"(0x1f800000),
"r"(a0));
46static __inline__
void pcsx_msanFree(
void*
ptr) { *((
void*
volatile*
const)0x1f80208c) =
ptr; }
48 register void* a0
asm(
"a0") =
ptr;
51 __asm__
volatile(
"lw %0, 0x2090(%1)" :
"=r"(
ret) :
"r"(0x1f800000),
"r"(a0),
"r"(a1));
54static __inline__
void pcsx_msanSetChainPtr(
void* headerAddr,
void* ptrToNext,
uint32_t wordCount) {
55 register void* a0
asm(
"a0") = ptrToNext;
56 register uint32_t a1
asm(
"a1") = wordCount;
57 __asm__
volatile(
"sw %0, 0x2094(%1)" : :
"r"(a0),
"r"(0x1f800000),
"r"(a1));
59static __inline__
void* pcsx_msanGetChainPtr(
void* headerAddr) {
60 register void* a0
asm(
"a0") = headerAddr;
62 __asm__
volatile(
"lw %0, 0x2094(%1)" :
"=r"(
ret) :
"r"(0x1f800000),
"r"(a0));
66static __inline__
int pcsx_present() {
return *((
volatile uint32_t*
const)0x1f802080) == 0x58534350; }
volatile uint32_t * ptr
Definition cop0.c:80
static int size
Definition string.h:32
static int ret
Definition syscalls.h:72
static int c
Definition syscalls.h:121
void uint32_t(classId, spec)