ref: bbe05479f90ed2d8404f1d4b379687082d099548
dir: /psx/cpu_debug.h/
#ifdef CPU_TRACE
static const char* g_psx_cpu_a_kcall_symtable[] = {
"open(filename=%08x,accessmode=%08x)",
"lseek(fd=%08x,offset=%08x,seektype=%08x)",
"read(fd=%08x,dst=%08x,length=%08x)",
"write(fd=%08x,src=%08x,length=%08x)",
"close(fd=%08x)",
"ioctl(fd=%08x,cmd=%08x,arg=%08x)",
"exit(exitcode=%08x)",
"isatty(fd=%08x)",
"getc(fd=%08x)",
"putc(char=%08x,fd=%08x)",
"todigit(char=%08x)",
"atof(src=%08x)",
"strtoul(src=%08x,src_end=%08x,base=%08x)",
"strtol(src=%08x,src_end=%08x,base=%08x)",
"abs(val=%08x)",
"labs(val=%08x)",
"atoi(src=%08x)",
"atol(src=%08x)",
"atob(src=%08x,num_dst=%08x)",
"setjmp(buf=%08x)",
"longjmp(buf=%08x,param=%08x)",
"strcat(dst=%08x,src=%08x)",
"strncat(dst=%08x,src=%08x,maxlen=%08x)",
"strcmp(str1=%08x,str2=%08x)",
"strncmp(str1=%08x,str2=%08x,maxlen=%08x)",
"strcpy(dst=%08x,src=%08x)",
"strncpy(dst=%08x,src=%08x,maxlen=%08x)",
"strlen(src=%08x)",
"index(src=%08x,char=%08x)",
"rindex(src=%08x,char=%08x)",
"strchr(src=%08x,char=%08x)",
"strrchr(src=%08x,char=%08x)",
"strpbrk(src=%08x,list=%08x)",
"strspn(src=%08x,list=%08x)",
"strcspn(src=%08x,list=%08x)",
"strtok(src=%08x,list=%08x)",
"strstr(str=%08x,substr=%08x)",
"toupper(char=%08x)",
"tolower(char=%08x)",
"bcopy(src=%08x,dst=%08x,len=%08x)",
"bzero(dst=%08x,len=%08x)",
"bcmp(ptr1=%08x,ptr2=%08x,len=%08x)",
"memcpy(dst=%08x,src=%08x,len=%08x)",
"memset(dst=%08x,fillbyte=%08x,len=%08x)",
"memmove(dst=%08x,src=%08x,len=%08x)",
"memcmp(src1=%08x,src2=%08x,len=%08x)",
"memchr(src=%08x,scanbyte=%08x,len=%08x)",
"rand()",
"srand(seed=%08x)",
"qsort(base=%08x,nel=%08x,width=%08x,callback=%08x)",
"strtod(src=%08x,src_end=%08x)",
"malloc(size=%08x)",
"free(buf=%08x)",
"lsearch(key=%08x,base=%08x,nel=%08x,width=%08x,callback=%08x)",
"bsearch(key=%08x,base=%08x,nel=%08x,width=%08x,callback=%08x)",
"calloc(sizx=%08x,sizy=%08x)",
"realloc(old_buf=%08x,new_siz=%08x)",
"InitHeap(addr=%08x,size=%08x)",
"_exit(exitcode=%08x)",
"getchar()",
"putchar(char=%08x)",
"gets(dst=%08x)",
"puts(src=%08x)",
"printf(txt=%08x,param1=%08x,param2=%08x,etc.=%08x)",
"SystemErrorUnresolvedException()",
"LoadTest(filename=%08x,headerbuf=%08x)",
"Load(filename=%08x,headerbuf=%08x)",
"Exec(headerbuf=%08x,param1=%08x,param2=%08x)",
"FlushCache()",
"init_a0_b0_c0_vectors()",
"GPU_dw(Xdst=%08x,Ydst=%08x,Xsiz=%08x,Ysiz=%08x,src=%08x)",
"gpu_send_dma(Xdst=%08x,Ydst=%08x,Xsiz=%08x,Ysiz=%08x,src=%08x)",
"SendGP1Command(gp1cmd=%08x)",
"GPU_cw(gp0cmd=%08x)",
"GPU_cwp(src=%08x,num=%08x)",
"send_gpu_linked_list(src=%08x)",
"gpu_abort_dma()",
"GetGPUStatus()",
"gpu_sync()",
"SystemError()",
"SystemError()",
"LoadExec(filename=%08x,stackbase=%08x,stackoffset=%08x)",
"GetSysSp()",
"SystemError()",
"_96_init()",
"_bu_init()",
"_96_remove()",
"return 0",
"return 0",
"return 0",
"return 0",
"dev_tty_init()",
"dev_tty_open(fcb=%08x, (unused)path=%08x,accessmode=%08x)",
"dev_tty_in_out(fcb=%08x,cmd=%08x)",
"dev_tty_ioctl(fcb=%08x,cmd=%08x,arg=%08x)",
"dev_cd_open(fcb=%08x,path=%08x,accessmode=%08x)",
"dev_cd_read(fcb=%08x,dst=%08x,len=%08x)",
"dev_cd_close(fcb=%08x)",
"dev_cd_firstfile(fcb=%08x,path=%08x,direntry=%08x)",
"dev_cd_nextfile(fcb=%08x,direntry=%08x)",
"dev_cd_chdir(fcb=%08x,path=%08x)",
"dev_card_open(fcb=%08x,path=%08x,accessmode=%08x)",
"dev_card_read(fcb=%08x,dst=%08x,len=%08x)",
"dev_card_write(fcb=%08x,src=%08x,len=%08x)",
"dev_card_close(fcb=%08x)",
"dev_card_firstfile(fcb=%08x,path=%08x,direntry=%08x)",
"dev_card_nextfile(fcb=%08x,direntry=%08x)",
"dev_card_erase(fcb=%08x,path=%08x)",
"dev_card_undelete(fcb=%08x,path=%08x)",
"dev_card_format(fcb=%08x)",
"dev_card_rename(fcb1=%08x,path=%08x)",
"card_clear_error(fcb=%08x) (?)",
"_bu_init()",
"_96_init()",
"_96_remove()",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"CdAsyncSeekL(src=%08x)",
"return 0",
"return 0",
"return 0",
"CdAsyncGetStatus(dst=%08x)",
"return 0",
"CdAsyncReadSector(count=%08x,dst=%08x,mode=%08x)",
"return 0",
"return 0",
"CdAsyncSetMode(mode=%08x)",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"return 0",
"CdromIoIrqFunc1()",
"CdromDmaIrqFunc1()",
"CdromIoIrqFunc2()",
"CdromDmaIrqFunc2()",
"CdromGetInt5errCode(dst1=%08x,dst2=%08x)",
"CdInitSubFunc()",
"AddCDROMDevice()",
"AddMemCardDevice()",
"AddDuartTtyDevice()",
"add_nullcon_driver()",
"SystemError()",
"SystemError()",
"SetConf(num_EvCB=%08x,num_TCB=%08x,stacktop=%08x)",
"GetConf(num_EvCB_dst=%08x,num_TCB_dst=%08x,stacktop_dst=%08x)",
"SetCdromIrqAutoAbort(type=%08x,flag=%08x)",
"SetMem(megabytes=%08x)",
"_boot()",
"SystemError(type=%08x,errorcode=%08x)",
"EnqueueCdIntr()",
"DequeueCdIntr()",
"CdGetLbn(filename=%08x)",
"CdReadSector(count=%08x,sector=%08x,buffer=%08x)",
"CdGetStatus()",
"bufs_cb_0()",
"bufs_cb_1()",
"bufs_cb_2()",
"bufs_cb_3()",
"_card_info(port=%08x)",
"_card_load(port=%08x)",
"_card_auto(flag=%08x)",
"bufs_cb_4()",
"card_write_test(port=%08x)",
"return 0",
"return 0",
"ioabort_raw(param=%08x)",
"return 0",
"GetSystemInfo(index=%08x)"
};
static const char* g_psx_cpu_b_kcall_symtable[] = {
"alloc_kernel_memory(size=%08x)",
"free_kernel_memory(buf=%08x)",
"init_timer(t=%08x,reload=%08x,flags=%08x)",
"get_timer(t=%08x)",
"enable_timer_irq(t=%08x)",
"disable_timer_irq(t=%08x)",
"restart_timer(t=%08x)",
"DeliverEvent(class=%08x, spec=%08x)",
"OpenEvent(class=%08x,spec=%08x,mode=%08x,func=%08x)",
"CloseEvent(event=%08x)",
"WaitEvent(event=%08x)",
"TestEvent(event=%08x)",
"EnableEvent(event=%08x)",
"DisableEvent(event=%08x)",
"OpenTh(reg_PC=%08x,reg_SP_FP=%08x,reg_GP=%08x)",
"CloseTh(handle=%08x)",
"ChangeTh(handle=%08x)",
"jump_to_00000000h()",
"InitPAD2(buf1=%08x,siz1=%08x,buf2=%08x,siz2=%08x)",
"StartPAD2()",
"StopPAD2()",
"PAD_init2(type=%08x,button_dest=%08x,unused=%08x,unused=%08x)",
"PAD_dr()",
"ReturnFromException()",
"ResetEntryInt()",
"HookEntryInt(addr=%08x)",
"SystemError()",
"SystemError()",
"SystemError()",
"SystemError()",
"SystemError()",
"SystemError()",
"UnDeliverEvent(class=%08x,spec=%08x)",
"SystemError()",
"SystemError()",
"SystemError()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"SystemError()",
"SystemError()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"jump_to_00000000h()",
"open(filename=%08x,accessmode=%08x)",
"lseek(fd=%08x,offset=%08x,seektype=%08x)",
"read(fd=%08x,dst=%08x,length=%08x)",
"write(fd=%08x,src=%08x,length=%08x)",
"close(fd=%08x)",
"ioctl(fd=%08x,cmd=%08x,arg=%08x)",
"exit(exitcode=%08x)",
"isatty(fd=%08x)",
"getc(fd=%08x)",
"putc(char=%08x,fd=%08x)",
"getchar()",
"putchar(char=%08x)",
"gets(dst=%08x)",
"puts(src=%08x)",
"cd(name=%08x)",
"format(devicename=%08x)",
"firstfile2(filename=%08x,direntry=%08x)",
"nextfile(direntry=%08x)",
"rename(old_filename=%08x,new_filename=%08x)",
"erase(filename=%08x)",
"undelete(filename=%08x)",
"AddDrv(device_info=%08x)",
"DelDrv(device_name_lowercase=%08x)",
"PrintInstalledDevices()",
"InitCARD2(pad_enable=%08x)",
"StartCARD2()",
"StopCARD2()",
"_card_info_subfunc(port=%08x)",
"_card_write(port=%08x,sector=%08x,src=%08x)",
"_card_read(port=%08x,sector=%08x,dst=%08x)",
"_new_card()",
"Krom2RawAdd(shiftjis_code=%08x)",
"SystemError()",
"Krom2Offset(shiftjis_code=%08x)",
"_get_errno()",
"_get_error(fd=%08x)",
"GetC0Table()",
"GetB0Table()",
"_card_chan()",
"testdevice(devicename=%08x)",
"SystemError()",
"ChangeClearPAD(int=%08x)",
"_card_status(slot=%08x)",
"_card_wait(slot=%08x)"
};
static const char* g_psx_cpu_c_kcall_symtable[] = {
"EnqueueTimerAndVblankIrqs(priority=%08x)",
"EnqueueSyscallHandler(priority=%08x)",
"SysEnqIntRP(priority=%08x,struc=%08x)",
"SysDeqIntRP(priority=%08x,struc=%08x)",
"get_free_EvCB_slot()",
"get_free_TCB_slot()",
"ExceptionHandler()",
"InstallExceptionHandlers()",
"SysInitMemory(addr=%08x,size=%08x)",
"SysInitKernelVariables()",
"ChangeClearRCnt(t=%08x,flag=%08x)",
"SystemError()",
"InitDefInt(priority=%08x)",
"SetIrqAutoAck(irq=%08x,flag=%08x)",
"return 0",
"return 0",
"return 0",
"return 0",
"InstallDevices(ttyflag=%08x)",
"FlushStdInOutPut()",
"return 0",
"_cdevinput(circ=%08x,char=%08x)",
"_cdevscan()",
"_circgetc(circ=%08x)",
"_circputc(char=%08x,circ=%08x)",
"_ioabort(txt1=%08x,txt2=%08x)",
"set_card_find_mode(mode=%08x)",
"KernelRedirect(ttyflag=%08x)",
"AdjustA0Table()",
"get_card_find_mode()"
};
#define TRACE_M(m) \
log_trace("%08x: %-7s $%s, %+i($%s)", cpu->pc-8, m, g_mips_cc_register_names[T], IMM16S, g_mips_cc_register_names[S])
#define TRACE_I16S(m) \
log_trace("%08x: %-7s $%s, 0x%04x", cpu->pc-8, m, g_mips_cc_register_names[T], IMM16)
#define TRACE_I16D(m) \
log_trace("%08x: %-7s $%s, $%s, 0x%04x", cpu->pc-8, m, g_mips_cc_register_names[T], g_mips_cc_register_names[S], IMM16)
#define TRACE_I5D(m) \
log_trace("%08x: %-7s $%s, $%s, %d", cpu->pc-8, m, g_mips_cc_register_names[D], g_mips_cc_register_names[T], IMM5)
#define TRACE_I26(m) \
log_trace("%08x: %-7s 0x%07x", cpu->pc-8, m, ((cpu->pc & 0xf0000000) | (IMM26 << 2)))
#define TRACE_RT(m) \
log_trace("%08x: %-7s $%s, $%s, $%s", cpu->pc-8, m, g_mips_cc_register_names[D], g_mips_cc_register_names[S], g_mips_cc_register_names[T])
#define TRACE_C0M(m) \
log_trace("%08x: %-7s $%s, $%s", cpu->pc-8, m, g_mips_cc_register_names[T], g_mips_cop0_register_names[D])
#define TRACE_C2M(m) \
log_trace("%08x: %-7s $%s, $cop2_r%d", cpu->pc-8, m, g_mips_cc_register_names[T], D)
#define TRACE_C2MC(m) \
log_trace("%08x: %-7s $%s, $cop2_r%d", cpu->pc-8, m, g_mips_cc_register_names[T], D + 32)
#define TRACE_B(m) \
log_trace("%08x: %-7s $%s, $%s, %-i", cpu->pc-8, m, g_mips_cc_register_names[S], g_mips_cc_register_names[T], IMM16S << 2)
#define TRACE_RS(m) \
log_trace("%08x: %-7s $%s", cpu->pc-8, m, g_mips_cc_register_names[S])
#define TRACE_MTF(m) \
log_trace("%08x: %-7s $%s", cpu->pc-8, m, g_mips_cc_register_names[D])
#define TRACE_RD(m) \
log_trace("%08x: %-7s $%s, $%s", cpu->pc-8, m, g_mips_cc_register_names[D], g_mips_cc_register_names[S])
#define TRACE_MD(m) \
log_trace("%08x: %-7s $%s, $%s", cpu->pc-8, m, g_mips_cc_register_names[S], g_mips_cc_register_names[T]);
#define TRACE_I20(m) \
log_trace("%08x: %-7s 0x%05x", cpu->pc-8, m, CMT);
#define TRACE_N(m) \
log_trace("%08x: %-7s", cpu->pc-8, m);
#define DEBUG_ALL \
log_fatal("r0=%08x at=%08x v0=%08x v1=%08x", cpu->r[0] , cpu->r[1] , cpu->r[2] , cpu->r[3] ); \
log_fatal("a0=%08x a1=%08x a2=%08x a3=%08x", cpu->r[4] , cpu->r[5] , cpu->r[6] , cpu->r[7] ); \
log_fatal("t0=%08x t1=%08x t2=%08x t3=%08x", cpu->r[8] , cpu->r[9] , cpu->r[10], cpu->r[11]); \
log_fatal("t4=%08x t5=%08x t6=%08x t7=%08x", cpu->r[12], cpu->r[13], cpu->r[14], cpu->r[15]); \
log_fatal("s0=%08x s1=%08x s2=%08x s3=%08x", cpu->r[16], cpu->r[17], cpu->r[18], cpu->r[19]); \
log_fatal("s4=%08x s5=%08x s6=%08x s7=%08x", cpu->r[20], cpu->r[21], cpu->r[22], cpu->r[23]); \
log_fatal("t8=%08x t9=%08x k0=%08x k1=%08x", cpu->r[24], cpu->r[25], cpu->r[26], cpu->r[27]); \
log_fatal("gp=%08x sp=%08x fp=%08x ra=%08x", cpu->r[28], cpu->r[29], cpu->r[30], cpu->r[31]); \
log_fatal("pc=%08x hi=%08x lo=%08x l:%s=%08x", cpu->pc, cpu->hi, cpu->lo, g_mips_cc_register_names[cpu->load_d], cpu->load_v); \
exit(1)
const char* g_mips_cop0_register_names[] = {
"cop0_r0",
"cop0_r1",
"cop0_r2",
"cop0_bpc",
"cop0_r4",
"cop0_bda",
"cop0_jumpdest",
"cop0_dcic",
"cop0_badvaddr",
"cop0_bdam",
"cop0_r10",
"cop0_bpcm",
"cop0_sr",
"cop0_cause",
"cop0_epc",
"cop0_prid"
};
static const char* g_mips_cc_register_names[] = {
"r0", "at", "v0", "v1", "a0", "a1", "a2", "a3",
"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
"t8", "t9", "k0", "k1", "gp", "sp", "fp", "ra"
};
static const char* g_psx_cpu_syscall_function_symbol_table[] = {
"NoFunction",
"EnterCriticalSection",
"ExitCriticalSection",
"ChangeThreadSubFunction"
// DeliverEvent (invalid)
};
#else
#define TRACE_M(m)
#define TRACE_I16S(m)
#define TRACE_I16D(m)
#define TRACE_I5D(m)
#define TRACE_I26(m)
#define TRACE_RT(m)
#define TRACE_C0M(m)
#define TRACE_C2M(m)
#define TRACE_C2MC(m)
#define TRACE_B(m)
#define TRACE_RS(m)
#define TRACE_MTF(m)
#define TRACE_RD(m)
#define TRACE_MD(m)
#define TRACE_I20(m)
#define TRACE_N(m)
#endif