diff options
author | 2010-10-31 15:29:10 +0000 | |
---|---|---|
committer | 2010-10-31 15:29:10 +0000 | |
commit | 597665541172a6dc16f0a2f7ee22bc8e84c78053 (patch) | |
tree | f19f88078467e4fbb751e31ee9980ed4d26cb7ed /src/emu/cpu/i86/i286.c | |
parent | dd12c245a86bc39f983868b3187e747a10a0e79c (diff) |
i286.c: Partially implemented protected mode. Fixed verw, verr, lar, lsl, and arpl instructions. [Wilbert Pol]
Diffstat (limited to 'src/emu/cpu/i86/i286.c')
-rw-r--r-- | src/emu/cpu/i86/i286.c | 14 |
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 */ |