--- np2/i386c/ia32/instructions/seg_reg.c 2003/12/08 00:55:32 1.1 +++ np2/i386c/ia32/instructions/seg_reg.c 2011/01/15 17:17:23 1.7 @@ -1,5 +1,3 @@ -/* $Id: seg_reg.c,v 1.1 2003/12/08 00:55:32 yui Exp $ */ - /* * Copyright (c) 2003 NONAKA Kimihiro * All rights reserved. @@ -12,8 +10,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 +33,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; + LOAD_SEGREG(CPU_ES_INDEX, sreg); + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -57,17 +53,17 @@ 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); + LOAD_SEGREG(CPU_ES_INDEX, sreg); *out = dst; return; } @@ -77,18 +73,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; + LOAD_SEGREG(CPU_SS_INDEX, sreg); + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -97,17 +93,17 @@ 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); + LOAD_SEGREG(CPU_SS_INDEX, sreg); *out = dst; return; } @@ -117,18 +113,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; + LOAD_SEGREG(CPU_DS_INDEX, sreg); + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -137,17 +133,17 @@ 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); + LOAD_SEGREG(CPU_DS_INDEX, sreg); *out = dst; return; } @@ -157,18 +153,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; + LOAD_SEGREG(CPU_FS_INDEX, sreg); + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -177,17 +173,17 @@ 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); + LOAD_SEGREG(CPU_FS_INDEX, sreg); *out = dst; return; } @@ -197,18 +193,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; + LOAD_SEGREG(CPU_GS_INDEX, sreg); + *out = (UINT16)dst; return; } EXCEPTION(UD_EXCEPTION, 0); @@ -217,17 +213,17 @@ 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); + LOAD_SEGREG(CPU_GS_INDEX, sreg); *out = dst; return; }