Comment corrections

This commit is contained in:
Jeff Parsons 2015-08-25 12:33:54 -07:00
commit 0e9ce2d653

View file

@ -54,6 +54,8 @@ if (typeof module !== 'undefined') {
*/ */
/** /**
* X86Seg "public" properties
*
* @class X86Seg * @class X86Seg
* @property {number} sel * @property {number} sel
* @property {number} limit (in protected-mode, this comes from descriptor word 0x0) * @property {number} limit (in protected-mode, this comes from descriptor word 0x0)
@ -563,10 +565,17 @@ X86Seg.prototype.loadDesc6 = function(addrDesc, sel)
* *
* See X86.DESC for offset and bit definitions. * See X86.DESC for offset and bit definitions.
* *
* When fProbe is set, this function will not modify the X86Seg object; it will still generate a fault if any of * When fProbe is set, we do NOT modify the public properties of the X86Seg object (see class X86Seg above).
* the usual error conditions are detected (and return X86.ADDR_INVALID), but in the success case, it merely stashes * We will generate a fault if any of the usual error conditions are detected (and return X86.ADDR_INVALID), but
* all descriptor values it reads in the X86Seg's "probe" object. If the caller ultimately decides to propagate * otherwise, we merely stash all the descriptor values it reads in the X86Seg's private "probe" object.
* those "probed" values to the X86Seg object, it must then call loadProbe(). *
* Probed loads allow us to deal with complex segment load operations (ie, those involving an implied stack-switch
* or task-switch), by allowing us to probe all the new selectors and generate the necessary faults before modifying
* any segment registers; if all the probes succeed, then all the loads can proceed.
*
* The next non-probed load of a probed selector will move those probed descriptor values into the X86Seg object,
* saving us from having to reload and reparse the descriptor. However, if a different selector is loaded between
* the probed and non-probed loads, the probed data is tossed.
* *
* @this {X86Seg} * @this {X86Seg}
* @param {number} addrDesc is the descriptor address * @param {number} addrDesc is the descriptor address
@ -580,7 +589,7 @@ X86Seg.prototype.loadDesc8 = function(addrDesc, sel, fProbe)
/* /*
* If the previous load was a successful "probed" load of the same segment, then we simply load * If the previous load was a successful "probed" load of the same segment, then we simply load
* up all the cached descriptor values from that probe and return. * up all the cached descriptor values from the probe and return.
*/ */
if (!fProbe && sel === this.probe.sel) { if (!fProbe && sel === this.probe.sel) {
this.sel = sel; this.sel = sel;
@ -859,9 +868,9 @@ X86Seg.prototype.loadDesc8 = function(addrDesc, sel, fProbe)
* base=0006C726 limit=0000 type=0x02 (ldt,not present) ext=0x0000 dpl=0x00 * base=0006C726 limit=0000 type=0x02 (ldt,not present) ext=0x0000 dpl=0x00
* *
* In both cases, the segment type is not valid for the target segment register *and* the PRESENT bit * In both cases, the segment type is not valid for the target segment register *and* the PRESENT bit
* is clear. OS/2 didn't seem to care whether I reported NP_FAULT or GP_FAULT, but Windows 95 definitely * is clear. OS/2 doesn't seem to care whether I report an NP_FAULT or GP_FAULT, but Windows 95 definitely
* cares: it will resolve the fault only if a GP_FAULT is reported. And Intel's 80386 Programmers Reference * cares: it will resolve the fault only if a GP_FAULT is reported. And Intel's 80386 Programmers Reference
* suggests that, yes, NP_FAULT checks are supposed to come *after* GP_FAULT checks. * implies that, yes, NP_FAULT checks are supposed to be performed *after* GP_FAULT checks.
*/ */
if (type < X86.DESC.ACC.TYPE.SEG || (type & (X86.DESC.ACC.TYPE.CODE | X86.DESC.ACC.TYPE.READABLE)) == X86.DESC.ACC.TYPE.CODE) { if (type < X86.DESC.ACC.TYPE.SEG || (type & (X86.DESC.ACC.TYPE.CODE | X86.DESC.ACC.TYPE.READABLE)) == X86.DESC.ACC.TYPE.CODE) {
if (this.id < X86Seg.ID.VER) X86.fnFault.call(cpu, X86.EXCEPTION.GP_FAULT, sel & X86.ERRCODE.SELMASK); if (this.id < X86Seg.ID.VER) X86.fnFault.call(cpu, X86.EXCEPTION.GP_FAULT, sel & X86.ERRCODE.SELMASK);
@ -1266,8 +1275,8 @@ X86Seg.prototype.updateMode = function(fLoad, fProt, fV86)
} }
/* /*
* The following properties are used for STACK segments only (ie, segSS); we want to make it easier * The fExpDown property is used for STACK segments only (ie, segSS); we want to make it easier for
* for setSS() to set stack lower and upper limits, which requires knowing whether or not the segment is * setSS() to set stack lower and upper limits, which requires knowing whether or not the segment is
* marked as EXPDOWN. * marked as EXPDOWN.
*/ */
this.fExpDown = false; this.fExpDown = false;