__osSyncPutChars.c (642B)
1 #include "libultra_internal.h" 2 #include "PR/rdb.h" 3 #include "PR/R4300.h" 4 5 u32 __osRdbSendMessage = 0; 6 u32 __osRdbWriteOK = 1; 7 8 void __osSyncPutChars(s32 type, s32 length, u8 *buf) { 9 rdbPacket packet; 10 s32 i; 11 u32 mask; 12 packet.type = type; 13 packet.length = length; 14 15 for (i = 0; i < length; i++) { 16 packet.buf[i] = buf[i]; 17 } 18 19 while (!__osAtomicDec(&__osRdbWriteOK)) { 20 ; 21 } 22 23 mask = __osDisableInt(); 24 25 *(u32 *) RDB_BASE_REG = *(u32 *) &packet; 26 while (!(__osGetCause() & CAUSE_IP6)) { 27 ; 28 } 29 *(u32 *) RDB_READ_INTR_REG = 0; 30 __osRdbWriteOK++; 31 32 __osRestoreInt(mask); 33 }