From 909dac91cf2b72f4f9770c9de10b35c4f85d7d84 Mon Sep 17 00:00:00 2001 From: cracyc Date: Mon, 27 Oct 2014 14:54:41 -0500 Subject: i386: mark tss busy [Carl] --- src/emu/cpu/i386/i386op16.inc | 7 ++++++- src/emu/cpu/i386/i386op32.inc | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/emu/cpu/i386/i386op16.inc b/src/emu/cpu/i386/i386op16.inc index 81aaf8f025b..07e704128bd 100644 --- a/src/emu/cpu/i386/i386op16.inc +++ b/src/emu/cpu/i386/i386op16.inc @@ -3133,9 +3133,14 @@ void i386_device::i386_group0F00_16() // Opcode 0x0f 00 memset(&seg, 0, sizeof(seg)); seg.selector = m_task.segment; i386_load_protected_mode_segment(&seg,NULL); + + UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5; + i386_translate_address(TRANSLATE_READ, &addr, NULL); + m_program->write_byte(addr, (seg.flags & 0xff) | 2); + m_task.limit = seg.limit; m_task.base = seg.base; - m_task.flags = seg.flags; + m_task.flags = seg.flags | 2; } else { diff --git a/src/emu/cpu/i386/i386op32.inc b/src/emu/cpu/i386/i386op32.inc index ea6a6ea5672..bca0ffa301a 100644 --- a/src/emu/cpu/i386/i386op32.inc +++ b/src/emu/cpu/i386/i386op32.inc @@ -2939,9 +2939,14 @@ void i386_device::i386_group0F00_32() // Opcode 0x0f 00 memset(&seg, 0, sizeof(seg)); seg.selector = m_task.segment; i386_load_protected_mode_segment(&seg,NULL); + + UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5; + i386_translate_address(TRANSLATE_READ, &addr, NULL); + m_program->write_byte(addr, (seg.flags & 0xff) | 2); + m_task.limit = seg.limit; m_task.base = seg.base; - m_task.flags = seg.flags; + m_task.flags = seg.flags | 2; } else { -- cgit v1.2.3