From 3a782faaf304e3b8bed95bdcfdbb3f41004612cc Mon Sep 17 00:00:00 2001 From: Thomas Harte <thomas.harte@gmail.com> Date: Fri, 10 Nov 2023 22:58:59 -0500 Subject: [PATCH] Ensure shoutouts upon LDS, LES and any far jump/call/int. --- .../x86/Implementation/PerformImplementation.hpp | 10 ++++++++-- OSBindings/Mac/Clock SignalTests/8088Tests.mm | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/InstructionSets/x86/Implementation/PerformImplementation.hpp b/InstructionSets/x86/Implementation/PerformImplementation.hpp index a12bd65ae..0016495bd 100644 --- a/InstructionSets/x86/Implementation/PerformImplementation.hpp +++ b/InstructionSets/x86/Implementation/PerformImplementation.hpp @@ -246,10 +246,16 @@ template < case Operation::LAHF: Primitive::lahf(context.registers.ah(), context); return; case Operation::LDS: - if constexpr (data_size == DataSize::Word) Primitive::ld<Source::DS>(instruction, destination_w(), context); + if constexpr (data_size == DataSize::Word) { + Primitive::ld<Source::DS>(instruction, destination_w(), context); + context.registers.did_update(Source::DS); + } return; case Operation::LES: - if constexpr (data_size == DataSize::Word) Primitive::ld<Source::ES>(instruction, destination_w(), context); + if constexpr (data_size == DataSize::Word) { + Primitive::ld<Source::ES>(instruction, destination_w(), context); + context.registers.did_update(Source::ES); + } return; case Operation::LEA: Primitive::lea<IntT>(instruction, destination_w(), context); return; diff --git a/OSBindings/Mac/Clock SignalTests/8088Tests.mm b/OSBindings/Mac/Clock SignalTests/8088Tests.mm index d5a84da74..1272f9648 100644 --- a/OSBindings/Mac/Clock SignalTests/8088Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/8088Tests.mm @@ -348,6 +348,7 @@ class FlowController { void jump(uint16_t segment, uint16_t address) { registers_.cs_ = segment; + registers_.did_update(Registers::Source::CS); registers_.ip_ = address; }