--- np2/i386c/ia32/segments.c 2012/02/05 02:22:49 1.25 +++ np2/i386c/ia32/segments.c 2012/02/05 06:31:44 1.27 @@ -27,6 +27,7 @@ #include "cpu.h" #include "ia32.mcr" +static void CPUCALL segdesc_set_default(int, UINT16, descriptor_t *); void CPUCALL load_segreg(int idx, UINT16 selector, UINT16 *sregp, descriptor_t *sdp, int exc) @@ -41,7 +42,6 @@ load_segreg(int idx, UINT16 selector, UI if (!CPU_STAT_PM || CPU_STAT_VM86) { /* real-mode or vm86 mode */ *sregp = selector; - segdesc_clear(&sel.desc); segdesc_set_default(idx, selector, &sel.desc); *sdp = sel.desc; return; @@ -61,8 +61,9 @@ load_segreg(int idx, UINT16 selector, UI if ((rv != -2) || (idx == CPU_SS_INDEX)) { EXCEPTION(exc, sel.idx); } + /* null selector */ *sregp = sel.selector; - segdesc_clear(sdp); + memset(sdp, 0, sizeof(*sdp)); return; } @@ -202,7 +203,7 @@ load_descriptor(descriptor_t *sdp, UINT3 h = cpu_kmemoryread_d(addr + 4); VERBOSE(("descriptor value = 0x%08x%08x", h, l)); - segdesc_clear(sdp); + memset(sdp, 0, sizeof(*sdp)); sdp->flag = 0; sdp->p = (h & CPU_DESC_H_P) ? 1 : 0; @@ -383,11 +384,10 @@ segdesc_init(int idx, UINT16 sreg, descr __ASSERT((sdp != NULL)); CPU_REGS_SREG(idx) = sreg; - segdesc_clear(sdp); segdesc_set_default(idx, sreg, sdp); } -void CPUCALL +static void CPUCALL segdesc_set_default(int idx, UINT16 selector, descriptor_t *sdp) {