www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1992/07/08/11:11:02

From: Nigel Stephens <algor!nigel>
Date: Wed, 8 Jul 92 13:33:48 BST
To: na70103 AT mips DOT cc DOT mie-u DOT ac DOT jp (Makoto Kobayashi)
Cc: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: go32 on Cx486

Strictly speaking the granularity bit should not be set for the TSS
segments, since they are not a multiple of 4 Kb long.  Also all of the
calls to fillgdt which use sizeof(...), should probably use
sizeof(...)-1, since the field in the segment descriptor is a limit,
not a size.

Having said that, setting the granularity bit will cause the limit
field to be set to zero, which the CPU then harmlessly treats as a
limit of 0xfff; the Intel i486 Programmer's Reference Manual does not
forbid this.  I would guess that this is a bug in the Cyrix microcode,
which is failing to handle this condition correctly when checking that
the TSS limit is >= 0x67 bytes on a task switch.  

--------------------
Nigel Stephens
Algorithmics Ltd		UUCP:	nigel AT algor DOT co DOT uk
3 Drayton Park			OLDUUCP:..!mcsun!uknet!algor!nigel
London				PHONE:	(+44) 71 700 3301
N5 1NU				FAX:	(+44) 71 700 3400
England

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019