X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=m68kcpu.c;h=1b1f44fbf724c2c9e5b4ae0c7da811c039460339;hb=514f1d4e24f7e938c0a0d79330f8a6ef5a2eb5fa;hp=49c65a0c5ed0dd0e48f05c0755741cff700bf204;hpb=d06400230faba867eed3e18c8f16742a4403964f;p=pistorm diff --git a/m68kcpu.c b/m68kcpu.c index 49c65a0..1b1f44f 100644 --- a/m68kcpu.c +++ b/m68kcpu.c @@ -676,8 +676,9 @@ unsigned int m68k_get_reg(void* context, m68k_register_t regnum) return 0; } -void m68k_set_reg(m68k_register_t regnum, unsigned int value) +void m68k_set_reg(void *context, m68k_register_t regnum, unsigned int value) { + m68ki_cpu_core* state = context != NULL ?(m68ki_cpu_core*)context : &m68ki_cpu; switch(regnum) { case M68K_REG_D0: REG_D[0] = MASK_OUT_ABOVE_32(value); return; @@ -696,8 +697,10 @@ void m68k_set_reg(m68k_register_t regnum, unsigned int value) case M68K_REG_A5: REG_A[5] = MASK_OUT_ABOVE_32(value); return; case M68K_REG_A6: REG_A[6] = MASK_OUT_ABOVE_32(value); return; case M68K_REG_A7: REG_A[7] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_PC: m68ki_jump(MASK_OUT_ABOVE_32(value)); return; - case M68K_REG_SR: m68ki_set_sr_noint_nosp(value); return; + case M68K_REG_PC: + m68ki_jump(state, MASK_OUT_ABOVE_32(value)); return; + case M68K_REG_SR: + m68ki_set_sr_noint_nosp(state, value); return; case M68K_REG_SP: REG_SP = MASK_OUT_ABOVE_32(value); return; case M68K_REG_USP: if(FLAG_S) REG_USP = MASK_OUT_ABOVE_32(value); @@ -1148,7 +1151,7 @@ void m68k_pulse_reset(m68ki_cpu_core *state) /* Reset VBR */ REG_VBR = 0; /* Go to supervisor mode */ - m68ki_set_sm_flag(SFLAG_SET | MFLAG_CLEAR); + m68ki_set_sm_flag(state, SFLAG_SET | MFLAG_CLEAR); /* Invalidate the prefetch queue */ #if M68K_EMULATE_PREFETCH @@ -1157,10 +1160,10 @@ void m68k_pulse_reset(m68ki_cpu_core *state) #endif /* M68K_EMULATE_PREFETCH */ /* Read the initial stack pointer and program counter */ - m68ki_jump(0); + m68ki_jump(state, 0); REG_SP = m68ki_read_imm_32(state); REG_PC = m68ki_read_imm_32(state); - m68ki_jump(REG_PC); + m68ki_jump(state, REG_PC); CPU_RUN_MODE = RUN_MODE_NORMAL;