(VirtualJaguar) swap user and interrupt stack pointers when going to supervisor mode for external interrupts, fixes Black ICE
also slight improvements to cd bios hle (don't really do much, but better safe than sorry)
This commit is contained in:
parent
e3c27813b6
commit
1adb2b45a2
Binary file not shown.
|
@ -239,7 +239,8 @@ void CDHLEReset(void)
|
|||
}
|
||||
}
|
||||
|
||||
cd_read_addr_start = dstStart;
|
||||
//eh not sure why I did this?
|
||||
//cd_read_addr_start = dstStart;
|
||||
|
||||
SET32(jaguarMainRAM, 4, cd_boot_addr);
|
||||
SET16(jaguarMainRAM, 0x3004, 0x0403); // BIOS VER
|
||||
|
@ -642,6 +643,24 @@ static void CD_uread(void)
|
|||
static void CD_setup(void)
|
||||
{
|
||||
// probaby don't really care about this
|
||||
// but to be safe, let's just reset everything
|
||||
cd_initm = false;
|
||||
cd_muted = false;
|
||||
cd_paused = false;
|
||||
cd_jerry = false;
|
||||
cd_mode = 0;
|
||||
cd_osamp = 0;
|
||||
|
||||
cd_is_reading = false;
|
||||
cd_read_orig_addr_start = 0;
|
||||
cd_read_addr_start = 0;
|
||||
cd_read_addr_end = 0;
|
||||
cd_read_lba = 0;
|
||||
memset(cd_buf2352, 0, sizeof(cd_buf2352));
|
||||
cd_buf_pos = 0;
|
||||
cd_buf_rm = 0;
|
||||
cd_buf_circular_size = 0;
|
||||
|
||||
cd_setup = true;
|
||||
}
|
||||
|
||||
|
@ -660,6 +679,12 @@ static void CD_osamp(void)
|
|||
static void CD_getoc(void)
|
||||
{
|
||||
// this is for debugging only, retail games will not call this
|
||||
// although some homebrew games seem to call it?
|
||||
uint32_t addr = m68k_get_reg(M68K_REG_A0);
|
||||
for (uint32_t i = 0; i < sizeof(TOC); i++)
|
||||
{
|
||||
JaguarWriteByte(addr + i, ((uint8_t*)&toc)[i], M68K);
|
||||
}
|
||||
}
|
||||
|
||||
static void CD_initm(void)
|
||||
|
|
|
@ -187,7 +187,13 @@ STATIC_INLINE uint32_t m68ki_init_exception(void)
|
|||
{
|
||||
MakeSR();
|
||||
uint32_t sr = regs.sr;
|
||||
|
||||
if (!regs.s)
|
||||
{
|
||||
regs.usp = m68k_areg(regs, 7);
|
||||
m68k_areg(regs, 7) = regs.isp;
|
||||
regs.s = 1;
|
||||
}
|
||||
|
||||
return sr;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue