Changed the way device timers are run, fixes DesqView/X.
This commit is contained in:
@@ -73,8 +73,12 @@ extern int dontprint;
|
||||
|
||||
#define OP_TABLE(name) ops_ ## name
|
||||
|
||||
#define CLOCK_CYCLES(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
|
||||
#include "x86_ops.h"
|
||||
|
||||
|
@@ -710,8 +710,12 @@ void leave_smm()
|
||||
}
|
||||
|
||||
#define OP_TABLE(name) ops_ ## name
|
||||
#define CLOCK_CYCLES(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
|
||||
#include "386_ops.h"
|
||||
|
||||
|
@@ -9,6 +9,7 @@
|
||||
#endif
|
||||
#include "../86box.h"
|
||||
#include "cpu.h"
|
||||
#include "../timer.h"
|
||||
#include "x86.h"
|
||||
#include "x86_ops.h"
|
||||
#include "x87.h"
|
||||
@@ -63,7 +64,8 @@ static __inline void fetch_ea_16_long(uint32_t rmdat)
|
||||
#define PREFETCH_FLUSH()
|
||||
|
||||
#define OP_TABLE(name) dynarec_ops_ ## name
|
||||
#define CLOCK_CYCLES(c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
|
||||
#define CLOCK_CYCLES(c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
#include "386_ops.h"
|
||||
|
@@ -175,8 +175,12 @@ fetch_ea_16_long(uint32_t rmdat)
|
||||
|
||||
#define OP_TABLE(name) ops_ ## name
|
||||
|
||||
#define CLOCK_CYCLES(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
|
||||
#include "x86_ops.h"
|
||||
|
||||
|
@@ -471,8 +471,12 @@ void leave_smm()
|
||||
}
|
||||
|
||||
#define OP_TABLE(name) ops_ ## name
|
||||
#define CLOCK_CYCLES(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
|
||||
#include "386_ops.h"
|
||||
|
||||
|
@@ -9,6 +9,7 @@
|
||||
#endif
|
||||
#include "../86box.h"
|
||||
#include "cpu.h"
|
||||
#include "../timer.h"
|
||||
#include "x86.h"
|
||||
#include "x86_ops.h"
|
||||
#include "x87.h"
|
||||
@@ -63,6 +64,8 @@ static inline void fetch_ea_16_long(uint32_t rmdat)
|
||||
#define OP_TABLE(name) dynarec_ops_ ## name
|
||||
/*Temporary*/
|
||||
#define CLOCK_CYCLES(c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) cycles -= (c)
|
||||
#define CLOCK_CYCLES_ALWAYS(c) do { cycles -= (c); \
|
||||
if (TIMER_VAL_LESS_THAN_VAL(timer_target, (uint32_t)tsc)) \
|
||||
timer_process(); } while(0)
|
||||
|
||||
#include "386_ops.h"
|
||||
|
Reference in New Issue
Block a user