void UIDebugSH2::setRegister(int index, u32 value) { sh2regs_struct sh2regs; SH2GetRegisters(debugSH2, &sh2regs); if (index < 16) sh2regs.R[index] = value; else { switch(index) { case 16: sh2regs.SR.all = value; break; case 17: sh2regs.GBR = value; break; case 18: sh2regs.VBR = value; break; case 19: sh2regs.MACH = value; break; case 20: sh2regs.MACL = value; break; case 21: sh2regs.PR = value; break; case 22: sh2regs.PC = value; updateCodeList(sh2regs.PC); break; } } SH2SetRegisters(debugSH2, &sh2regs); }
void MappedMemoryLoadExec(const char *filename, u32 pc) { char *p; size_t i; if ((p = strrchr(filename, '.'))) { p = strdup(p); for (i = 0; i < strlen(p); i++) p[i] = toupper(p[i]); if (strcmp(p, ".COF") == 0 || strcmp(p, ".COFF") == 0) { MappedMemoryLoadCoff(filename); free(p); return; } else if(strcmp(p, ".ELF") == 0) { MappedMemoryLoadElf(filename); free(p); return; } free(p); } YabauseResetNoLoad(); // Setup the vector table area, etc. YabauseSpeedySetup(); MappedMemoryLoad(filename, pc); SH2GetRegisters(MSH2, &MSH2->regs); MSH2->regs.PC = pc; SH2SetRegisters(MSH2, &MSH2->regs); }