|
|
| version 1.7, 2003/12/12 01:04:40 | version 1.8, 2004/01/08 16:29:56 |
|---|---|
| Line 973 UINT calc_a(UINT op, UINT32 *seg) { | Line 973 UINT calc_a(UINT op, UINT32 *seg) { |
| #endif | #endif |
| UINT32 i286c_selector(UINT sel) { | |
| I286DTR *dtr; | |
| UINT32 addr; | |
| UINT32 ret; | |
| dtr = (sel & 4)?&I286_LDTRC:&I286_GDTR; | |
| addr = (dtr->base24 << 16) + dtr->base + (sel & (~7)); | |
| ret = i286_memoryread_w(addr+2); | |
| ret += i286_memoryread(addr+4) << 16; | |
| TRACEOUT(("ProtectMode: selector idx=%x %s rpl=%d - real addr = %.6x", | |
| (sel >> 3), (sel & 4)?"LDT":"GDT", sel & 3, ret)); | |
| return(ret); | |
| } | |