--- np2/i386c/ia32/segments.c 2011/12/29 13:32:12 1.22 +++ np2/i386c/ia32/segments.c 2012/02/05 06:16:08 1.26 @@ -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) @@ -42,7 +43,6 @@ load_segreg(int idx, UINT16 selector, UI /* real-mode or vm86 mode */ *sregp = selector; segdesc_clear(&sel.desc); - sel.desc.u.seg.limit = CPU_STAT_SREGLIMIT(idx); segdesc_set_default(idx, selector, &sel.desc); *sdp = sel.desc; return; @@ -162,6 +162,7 @@ load_ldtr(UINT16 selector, int exc) if (rv < 0 || sel.ldt) { if (rv == -2) { /* null segment */ + VERBOSE(("load_ldtr: null segment")); CPU_LDTR = 0; memset(&CPU_LDTR_DESC, 0, sizeof(CPU_LDTR_DESC)); return; @@ -384,11 +385,10 @@ segdesc_init(int idx, UINT16 sreg, descr CPU_REGS_SREG(idx) = sreg; segdesc_clear(sdp); - sdp->u.seg.limit = 0xffff; segdesc_set_default(idx, sreg, sdp); } -void CPUCALL +static void CPUCALL segdesc_set_default(int idx, UINT16 selector, descriptor_t *sdp) { @@ -396,7 +396,7 @@ segdesc_set_default(int idx, UINT16 sele __ASSERT((sdp != NULL)); sdp->u.seg.segbase = (UINT32)selector << 4; - /* sdp->u.seg.limit */ + sdp->u.seg.limit = 0xffff; sdp->u.seg.c = (idx == CPU_CS_INDEX) ? 1 : 0; /* code or data */ sdp->u.seg.g = 0; /* non 4k factor scale */ sdp->u.seg.wr = 1; /* execute/read(CS) or read/write(others) */