TSS stack pointer size depends on the TSS segment type, not the code segment type

This commit is contained in:
Jeff Parsons 2016-01-16 14:40:05 -08:00
commit 36624947d7

View file

@ -22,7 +22,7 @@
* *
* You are required to include the above copyright notice in every source code file of every * You are required to include the above copyright notice in every source code file of every
* copy or modified version of this work, and to display that copyright notice on every screen * copy or modified version of this work, and to display that copyright notice on every screen
* that loads or runs any version of this software (see Computer.sCopyright). * that loads or runs any version of this software (see Computer.COPYRIGHT).
* *
* Some PCjs files also attempt to load external resource files, such as character-image files, * Some PCjs files also attempt to load external resource files, such as character-image files,
* ROM files, and disk image files. Those external resource files are not considered part of the * ROM files, and disk image files. Those external resource files are not considered part of the
@ -822,7 +822,7 @@ X86Seg.prototype.loadDesc8 = function(addrDesc, sel, fProbe)
return X86.ADDR_INVALID; return X86.ADDR_INVALID;
} }
addrTSS = cpu.segTSS.base; addrTSS = cpu.segTSS.base;
if (!I386 || !(type & X86.DESC.ACC.NONSEG_386)) { if (!I386 || !(cpu.segTSS.type & X86.DESC.ACC.NONSEG_386)) {
offSP = (cplNew << 2) + X86.TSS286.CPL0_SP; offSP = (cplNew << 2) + X86.TSS286.CPL0_SP;
lenSP = 2; lenSP = 2;
} else { } else {