1
0
Fork 0

display exit reason for IllegalOption()

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2369
This commit is contained in:
Sebastian Strohhäcker 2005-11-06 19:42:58 +00:00
parent 3063cdda99
commit 561579365e
4 changed files with 22 additions and 22 deletions

View file

@ -147,8 +147,8 @@ static struct {
Bitu ea,tmpb,tmpd,stack,shift;
} extra_regs;
static void IllegalOption(void) {
E_Exit("Illegal option");
static void IllegalOption(const char* msg) {
E_Exit("DynCore: illegal option in %s",msg);
}
#include "core_dyn_x86/cache.h"

View file

@ -832,14 +832,14 @@ static void dyn_load_seg_off_ea(SegNames seg) {
dyn_load_seg(seg,DREG(TMPW));gen_releasereg(DREG(TMPW));
dyn_read_word_release(DREG(EA),&DynRegs[decode.modrm.reg],decode.big_op);
} else {
IllegalOption();
IllegalOption("dyn_load_seg_off_ea");
}
}
static void dyn_mov_seg_ev(void) {
dyn_get_modrm();
SegNames seg=(SegNames)decode.modrm.reg;
if (GCC_UNLIKELY(seg==cs)) IllegalOption();
if (GCC_UNLIKELY(seg==cs)) IllegalOption("dyn_mov_seg_ev");
if (decode.modrm.mod<3) {
dyn_fill_ea();
dyn_read_word(DREG(EA),DREG(EA),false);
@ -905,7 +905,7 @@ static void dyn_leave(void) {
}
static void dyn_segprefix(SegNames seg) {
if (GCC_UNLIKELY((Bitu)(decode.segprefix))) IllegalOption();
if (GCC_UNLIKELY((Bitu)(decode.segprefix))) IllegalOption("dyn_segprefix");
decode.segprefix=&DynRegs[G_ES+seg];
}
@ -1645,7 +1645,7 @@ restart_prefix:
dyn_push(src);
break;
default:
IllegalOption();
IllegalOption("opcode 0xff");
}}
break;
default:

View file

@ -61,7 +61,7 @@ public:
dynreg->flags|=DYNFLG_ACTIVE;
}
void Save(void) {
if (GCC_UNLIKELY(!((Bitu)dynreg))) IllegalOption();
if (GCC_UNLIKELY(!((Bitu)dynreg))) IllegalOption("GenReg->Save");
dynreg->flags&=~DYNFLG_CHANGED;
cache_addw(0x0589+(index << (8+3))); //Mov [data],reg
cache_addd((Bit32u)dynreg->data);
@ -283,7 +283,7 @@ static void gen_dop_byte(DualOps op,DynReg * dr1,Bit8u di1,DynReg * dr2,Bit8u di
case DOP_MOV: if ((dr1==dr2) && (di1==di2)) return; tmp=0x8a; break;
case DOP_XCHG: tmp=0x86; dr2->flags|=DYNFLG_CHANGED; break;
default:
IllegalOption();
IllegalOption("gen_dop_byte");
}
dr1->flags|=DYNFLG_CHANGED;
nochange:
@ -307,7 +307,7 @@ static void gen_dop_byte_imm(DualOps op,DynReg * dr1,Bit8u di1,Bitu imm) {
dr1->flags|=DYNFLG_CHANGED;
goto finish;
default:
IllegalOption();
IllegalOption("gen_dop_byte_imm");
}
dr1->flags|=DYNFLG_CHANGED;
nochange:
@ -325,7 +325,7 @@ static void gen_sop_byte(SingleOps op,DynReg * dr1,Bit8u di1) {
case SOP_NOT: tmp=0xd0f6; break;
case SOP_NEG: tmp=0xd8f6; break;
default:
IllegalOption();
IllegalOption("gen_sop_byte");
}
cache_addw(tmp + ((gr1->index+di1)<<8));
dr1->flags|=DYNFLG_CHANGED;
@ -423,7 +423,7 @@ static void gen_dop_word(DualOps op,bool dword,DynReg * dr1,DynReg * dr2) {
tmp=0x87;
break;
default:
IllegalOption();
IllegalOption("gen_dop_word");
}
dr1->flags|=DYNFLG_CHANGED;
nochange:
@ -447,7 +447,7 @@ static void gen_dop_word_imm(DualOps op,bool dword,DynReg * dr1,Bits imm) {
case DOP_TEST: tmp=0xc0f7; goto nochange; //Doesn't change
case DOP_MOV: cache_addb(0xb8+(gr1->index)); dr1->flags|=DYNFLG_CHANGED; goto finish;
default:
IllegalOption();
IllegalOption("gen_dop_word_imm");
}
dr1->flags|=DYNFLG_CHANGED;
nochange:
@ -494,7 +494,7 @@ static void gen_sop_word(SingleOps op,bool dword,DynReg * dr1) {
case SOP_NOT:cache_addw(0xd0f7+(gr1->index<<8));break;
case SOP_NEG:cache_addw(0xd8f7+(gr1->index<<8));break;
default:
IllegalOption();
IllegalOption("gen_sop_word");
}
dr1->flags|=DYNFLG_CHANGED;
}
@ -654,7 +654,7 @@ static void gen_call_function(void * func,char * ops,...) {
release=true;
goto scanagain;
default:
IllegalOption();
IllegalOption("gen_call_function param:DREG");
}
if (release) gen_releasereg(dynreg);
}
@ -664,7 +664,7 @@ static void gen_call_function(void * func,char * ops,...) {
pinfo[pindex].line=scan;
break;
default:
IllegalOption();
IllegalOption("gen_call_function unknown param");
}
}
}
@ -725,7 +725,7 @@ static void gen_call_write(DynReg * dr,Bit32u val,Bitu write_size) {
case 1: cache_addd((Bit32u)mem_writeb - (Bit32u)cache.pos-4); break;
case 2: cache_addd((Bit32u)mem_writew_dyncorex86 - (Bit32u)cache.pos-4); break;
case 4: cache_addd((Bit32u)mem_writed_dyncorex86 - (Bit32u)cache.pos-4); break;
default: IllegalOption();
default: IllegalOption("gen_call_write");
}
cache_addw(0xc483); //ADD ESP,8
@ -777,7 +777,7 @@ static void gen_jmp_ptr(void * ptr,Bits imm=0) {
}
static void gen_save_flags(DynReg * dynreg) {
if (GCC_UNLIKELY(x86gen.flagsactive)) IllegalOption();
if (GCC_UNLIKELY(x86gen.flagsactive)) IllegalOption("gen_save_flags");
GenReg * genreg=FindDynReg(dynreg);
cache_addb(0x8b); //MOV REG,[esp]
cache_addw(0x2404+(genreg->index << 3));
@ -785,7 +785,7 @@ static void gen_save_flags(DynReg * dynreg) {
}
static void gen_load_flags(DynReg * dynreg) {
if (GCC_UNLIKELY(x86gen.flagsactive)) IllegalOption();
if (GCC_UNLIKELY(x86gen.flagsactive)) IllegalOption("gen_load_flags");
cache_addw(0xc483); //ADD ESP,4
cache_addb(0x4);
GenReg * genreg=FindDynReg(dynreg);
@ -805,7 +805,7 @@ static void gen_load_host(void * data,DynReg * dr1,Bitu size) {
case 2:cache_addw(0xb70f);break; //movzx word
case 4:cache_addb(0x8b);break; //mov
default:
IllegalOption();
IllegalOption("gen_load_host");
}
cache_addb(0x5+(gr1->index<<3));
cache_addd((Bit32u)data);

View file

@ -51,7 +51,7 @@ static void dyn_string(STRING_OP op) {
case STR_INSB: case STR_INSW: case STR_INSD:
tmp_reg=DREG(TMPB);usesi=false;usedi=true;break;
default:
IllegalOption();
IllegalOption("dyn_string op");
}
gen_load_host(&cpu.direction,DREG(TMPW),4);
switch (op & 3) {
@ -59,7 +59,7 @@ static void dyn_string(STRING_OP op) {
case 1:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),1);break;
case 2:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),2);break;
default:
IllegalOption();
IllegalOption("dyn_string shift");
}
if (usesi) {
@ -139,7 +139,7 @@ static void dyn_string(STRING_OP op) {
dyn_write_word(DREG(EA),tmp_reg,true);
break;
default:
IllegalOption();
IllegalOption("dyn_string op");
}
}
gen_releasereg(DREG(EA));gen_releasereg(DREG(TMPB));