--- np2/i386c/ia32/instructions/seg_reg.c 2004/02/05 16:43:45 1.2 +++ 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.2 2004/02/05 16:43:45 monaka 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,9 +33,9 @@ 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) { @@ -47,8 +43,8 @@ LES_GwMp(void) 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,9 +53,9 @@ 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) { @@ -67,7 +63,7 @@ LES_GdMp(void) 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,9 +73,9 @@ 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) { @@ -87,8 +83,8 @@ LSS_GwMp(void) 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,9 +93,9 @@ 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) { @@ -107,7 +103,7 @@ LSS_GdMp(void) 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,9 +113,9 @@ 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) { @@ -127,8 +123,8 @@ LDS_GwMp(void) 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,9 +133,9 @@ 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) { @@ -147,7 +143,7 @@ LDS_GdMp(void) 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,9 +153,9 @@ 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) { @@ -167,8 +163,8 @@ LFS_GwMp(void) 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,9 +173,9 @@ 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) { @@ -187,7 +183,7 @@ LFS_GdMp(void) 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,9 +193,9 @@ 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) { @@ -207,8 +203,8 @@ LGS_GwMp(void) 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,9 +213,9 @@ 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) { @@ -227,7 +223,7 @@ LGS_GdMp(void) 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; }