--- np2/i386c/ia32/instructions/seg_reg.c 2003/12/08 00:55:32 1.1 +++ np2/i386c/ia32/instructions/seg_reg.c 2005/03/12 12:33:47 1.5 @@ -1,4 +1,4 @@ -/* $Id: seg_reg.c,v 1.1 2003/12/08 00:55:32 yui Exp $ */ +/* $Id: seg_reg.c,v 1.5 2005/03/12 12:33:47 monaka Exp $ */ /* * Copyright (c) 2003 NONAKA Kimihiro @@ -12,8 +12,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -37,18 +35,18 @@ void LES_GwMp(void) { - WORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT16 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg16_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 2); CPU_SET_SEGREG(CPU_ES_INDEX, sreg); - *out = dst; + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -57,14 +55,14 @@ LES_GwMp(void) void LES_GdMp(void) { - DWORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT32 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg32_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4); CPU_SET_SEGREG(CPU_ES_INDEX, sreg); @@ -77,18 +75,18 @@ LES_GdMp(void) void LSS_GwMp(void) { - WORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT16 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg16_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 2); CPU_SET_SEGREG(CPU_SS_INDEX, sreg); - *out = dst; + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -97,14 +95,14 @@ LSS_GwMp(void) void LSS_GdMp(void) { - DWORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT32 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg32_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4); CPU_SET_SEGREG(CPU_SS_INDEX, sreg); @@ -117,18 +115,18 @@ LSS_GdMp(void) void LDS_GwMp(void) { - WORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT16 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg16_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 2); CPU_SET_SEGREG(CPU_DS_INDEX, sreg); - *out = dst; + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -137,14 +135,14 @@ LDS_GwMp(void) void LDS_GdMp(void) { - DWORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT32 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg32_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4); CPU_SET_SEGREG(CPU_DS_INDEX, sreg); @@ -157,18 +155,18 @@ LDS_GdMp(void) void LFS_GwMp(void) { - WORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT16 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg16_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 2); CPU_SET_SEGREG(CPU_FS_INDEX, sreg); - *out = dst; + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -177,14 +175,14 @@ LFS_GwMp(void) void LFS_GdMp(void) { - DWORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT32 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg32_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4); CPU_SET_SEGREG(CPU_FS_INDEX, sreg); @@ -197,18 +195,18 @@ LFS_GdMp(void) void LGS_GwMp(void) { - WORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT16 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg16_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 2); CPU_SET_SEGREG(CPU_GS_INDEX, sreg); - *out = dst; + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -217,14 +215,14 @@ LGS_GwMp(void) void LGS_GdMp(void) { - DWORD *out; - DWORD op, dst, madr; - WORD sreg; + UINT32 *out; + UINT32 op, dst, madr; + UINT16 sreg; GET_PCBYTE(op); if (op < 0xc0) { out = reg32_b53[op]; - madr = get_ea(op); + madr = calc_ea_dst(op); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); sreg = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4); CPU_SET_SEGREG(CPU_GS_INDEX, sreg);