diff options
author | mooglyguy <therealmogminer@gmail.com> | 2018-09-08 23:28:52 +0200 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2018-09-08 23:29:08 +0200 |
commit | 8d4d261ee3d81a6c1b2911abdb5d2da47921d537 (patch) | |
tree | 9b6eafe0637fb46a952bfe7568acbd34ba573e56 | |
parent | f99119e02939db544b52d8903a7b6dbe02afd3e8 (diff) |
-sparc: Fixed TBR masking when taking traps and interrupts. [Ryan Holtz]
-rw-r--r-- | src/devices/cpu/sparc/mb86901.cpp | 5 | ||||
-rw-r--r-- | src/mame/drivers/sun4.cpp | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/devices/cpu/sparc/mb86901.cpp b/src/devices/cpu/sparc/mb86901.cpp index 977455e72f0..f01e21909f1 100644 --- a/src/devices/cpu/sparc/mb86901.cpp +++ b/src/devices/cpu/sparc/mb86901.cpp @@ -11,7 +11,6 @@ // To-Do: // - Ops: FBFcc, LDF, STF // - Test: SPARCv8 ops are untested -// - Test: Traps are untested // - FPU support // - Coprocessor support // @@ -1337,6 +1336,7 @@ void mb86901_device::execute_saverestore(uint32_t op) result = rs1 + operand2; PSR &= ~PSR_CWP_MASK; PSR |= new_cwp; + BREAK_PSR; } } else if (RESTORE) @@ -1352,6 +1352,7 @@ void mb86901_device::execute_saverestore(uint32_t op) result = rs1 + operand2; PSR &= ~PSR_CWP_MASK; PSR |= new_cwp; + BREAK_PSR; } } @@ -2588,7 +2589,7 @@ void mb86901_device::select_trap() else if (m_interrupt_level > 0) m_tt = 0x10 | m_interrupt_level; - TBR |= m_tt << 4; + TBR = (TBR & 0xfffff000) | (m_tt << 4); m_trap = 0; m_instruction_access_exception = 0; m_illegal_instruction = 0; diff --git a/src/mame/drivers/sun4.cpp b/src/mame/drivers/sun4.cpp index 6658c2629ca..645d056c988 100644 --- a/src/mame/drivers/sun4.cpp +++ b/src/mame/drivers/sun4.cpp @@ -2000,12 +2000,12 @@ MACHINE_CONFIG_START(sun4_state::sun4) MCFG_NSCSI_BUS_ADD("scsibus") MCFG_NSCSI_ADD("scsibus:0", sun_scsi_devices, "harddisk", false) - MCFG_NSCSI_ADD("scsibus:1", sun_scsi_devices, "cdrom", false) + MCFG_NSCSI_ADD("scsibus:1", sun_scsi_devices, nullptr, false) MCFG_NSCSI_ADD("scsibus:2", sun_scsi_devices, nullptr, false) MCFG_NSCSI_ADD("scsibus:3", sun_scsi_devices, nullptr, false) MCFG_NSCSI_ADD("scsibus:4", sun_scsi_devices, nullptr, false) MCFG_NSCSI_ADD("scsibus:5", sun_scsi_devices, nullptr, false) - MCFG_NSCSI_ADD("scsibus:6", sun_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD("scsibus:6", sun_scsi_devices, "cdrom", false) MCFG_NSCSI_ADD("scsibus:7", sun_scsi_devices, "ncr53c90a", true) MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr53c90a", [this] (device_t *device) { ncr53c90a(device); }) MACHINE_CONFIG_END |