Diff for /np2/i386c/ia32/segments.c between versions 1.2 and 1.5

version 1.2, 2003/12/11 14:59:42 version 1.5, 2004/01/14 16:14:49
Line 142  void Line 142  void
 load_cs(WORD selector, descriptor_t* sdp, BYTE cpl)  load_cs(WORD selector, descriptor_t* sdp, BYTE cpl)
 {  {
   
         cpu_inst_default.op_32 = cpu_inst_default.as_32 = sdp->d;          CPU_STATSAVE.cpu_inst_default.op_32
               = CPU_STATSAVE.cpu_inst_default.as_32 = sdp->d;
         CPU_REGS_SREG(CPU_CS_INDEX) = (selector & ~3) | (cpl & 3);          CPU_REGS_SREG(CPU_CS_INDEX) = (selector & ~3) | (cpl & 3);
         CPU_STAT_SREG(CPU_CS_INDEX) = *sdp;          CPU_STAT_SREG(CPU_CS_INDEX) = *sdp;
         CPU_STAT_CPL = cpl & 3;          CPU_STAT_CPL = cpl & 3;
Line 175  load_ldtr(WORD selector, int exc) Line 176  load_ldtr(WORD selector, int exc)
   
         /* check limit */          /* check limit */
         if (sel.desc.u.seg.limit < 7) {          if (sel.desc.u.seg.limit < 7) {
                 ia32_panic("load_ldtr: LDTR descriptor limit < 7");                  ia32_panic("load_ldtr: LDTR descriptor limit < 7 (limit = %d)", sel.desc.u.seg.limit);
         }          }
   
         /* not present */          /* not present */
Line 184  load_ldtr(WORD selector, int exc) Line 185  load_ldtr(WORD selector, int exc)
                 EXCEPTION((exc == TS_EXCEPTION) ? TS_EXCEPTION : NP_EXCEPTION, sel.selector);                  EXCEPTION((exc == TS_EXCEPTION) ? TS_EXCEPTION : NP_EXCEPTION, sel.selector);
         }          }
   
   #if defined(DEBUG)
   {
           DWORD v[2];
           DWORD i;
   
           for (i = 0; i < sel.desc.u.seg.limit; i += 8) {
                   v[0] = cpu_lmemoryread_d(sel.desc.u.seg.segbase + i);
                   v[1] = cpu_lmemoryread_d(sel.desc.u.seg.segbase + i + 4);
                   VERBOSE(("load_ldtr: %08x: %08x%08x", sel.desc.u.seg.segbase + i, v[0], v[1]));
           }
   }
   #endif
   
         CPU_LDTR = sel.selector;          CPU_LDTR = sel.selector;
         CPU_LDTR_DESC = sel.desc;          CPU_LDTR_DESC = sel.desc;
 }  }
Line 231  load_descriptor(descriptor_t *descp, DWO Line 245  load_descriptor(descriptor_t *descp, DWO
                 switch (descp->type) {                  switch (descp->type) {
                 case CPU_SYSDESC_TYPE_LDT:              /* LDT */                  case CPU_SYSDESC_TYPE_LDT:              /* LDT */
                         descp->valid = 1;                          descp->valid = 1;
                           descp->u.seg.segbase  = descp->h & 0xff000000;
                           descp->u.seg.segbase |= (descp->h & 0xff) << 16;
                           descp->u.seg.segbase |= descp->l >> 16;
                           descp->u.seg.limit  = descp->h & 0xf0000;
                           descp->u.seg.limit |= descp->l & 0xffff;
                         VERBOSE(("load_descriptor: LDT descriptor"));                          VERBOSE(("load_descriptor: LDT descriptor"));
                         break;                          break;
   

Removed from v.1.2  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>