summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/i86/i286.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/i86/i286.c')
-rw-r--r--src/emu/cpu/i86/i286.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/emu/cpu/i86/i286.c b/src/emu/cpu/i86/i286.c
index 56071e4ea70..04dc06235c4 100644
--- a/src/emu/cpu/i86/i286.c
+++ b/src/emu/cpu/i86/i286.c
@@ -75,10 +75,11 @@ struct _i80286_state
int halted; /* Is the CPU halted ? */
int icount;
- unsigned prefix_base;
char seg_prefix;
+ UINT8 prefix_seg;
unsigned ea;
UINT16 eo; /* HJB 12/13/98 effective offset of the address (before segment is added) */
+ UINT8 ea_seg; /* effective segment of the address */
};
INLINE i80286_state *get_safe_token(running_device *device)
@@ -105,7 +106,7 @@ static struct i80x86_timing timing;
#define i8086_state i80286_state
#include "ea.h"
-#include "modrm.h"
+#include "modrm286.h"
#include "instr86.h"
#include "instr186.h"
#include "instr286.h"
@@ -226,7 +227,14 @@ static CPU_EXECUTE( i80286 )
cpustate->seg_prefix=FALSE;
cpustate->prevpc = cpustate->pc;
- TABLE286 // call instruction
+ try
+ {
+ TABLE286 // call instruction
+ }
+ catch (int e)
+ {
+ i80286_trap2(cpustate,e);
+ }
}
/* adjust for any interrupts that came in */