From 0cca0c96cf27b0062986611ee04d4bb88a609405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Strohh=C3=A4cker?= Date: Mon, 8 Jan 2007 21:29:27 +0000 Subject: [PATCH] enable instant irq checking after STI for the dynamic core Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2735 --- src/cpu/core_dyn_x86/decoder.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/cpu/core_dyn_x86/decoder.h b/src/cpu/core_dyn_x86/decoder.h index 35328bd9..10973317 100644 --- a/src/cpu/core_dyn_x86/decoder.h +++ b/src/cpu/core_dyn_x86/decoder.h @@ -188,6 +188,22 @@ static void dyn_check_bool_exception_al(void) { used_save_info++; } +#include "pic.h" + +static void dyn_check_irqrequest(void) { + gen_load_host(&PIC_IRQCheck,DREG(TMPB),4); + gen_dop_word(DOP_OR,true,DREG(TMPB),DREG(TMPB)); + save_info[used_save_info].branch_pos=gen_create_branch_long(BR_NZ); + gen_releasereg(DREG(TMPB)); + dyn_savestate(&save_info[used_save_info].state); + if (!decode.cycles) decode.cycles++; + save_info[used_save_info].cycles=decode.cycles; + save_info[used_save_info].eip_change=decode.code-decode.code_start; + if (!cpu.code.big) save_info[used_save_info].eip_change&=0xffff; + save_info[used_save_info].type=normal; + used_save_info++; +} + static void dyn_fill_blocks(void) { for (Bitu sct=0; sct