Date: Wed, 11 Sep 1996 05:42:29 -0700 From: David Greenman <dg@root.com> To: KATO Takenori <kato@eclogite.eps.nagoya-u.ac.jp> Cc: current@freebsd.org Subject: Re: patch for Cyrix/Ti 486SLC/DLC CPU bug Message-ID: <199609111242.FAA07735@root.com> In-Reply-To: Your message of "Wed, 11 Sep 1996 20:39:15 %2B0900." <199609111139.UAA00456@marble.eps.nagoya-u.ac.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
>Hi, Cyrix/Ti 486 users, > >Some version of Cyrix 486SLC/DLC and TI 486DLC have paging related >bug, and they cause strange segmentation fault and/or page fault >trap. I got some information for that bug and fix, and I made the >patch for FreeBSD-current. > >The patch contains: > > 1) FPU exception is handled by interrupt gate (machdep.c). ... >+ #ifdef CYRIX_486_BUG > setidt(14, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); >+ #else >+ setidt(14, &IDTVEC(page), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); >+ #endif Your patch changes the page fault exception to an interrupt gate, not the FPU exception, but I understand what you meant. > 2) The function trap gets fault page address as soon as possible > (trap.c). I'd be interested to hear more about why this is required. The register should contain only the information about the last exception - and there shouldn't be any opportunity to trap again while in trap() before it is read. > 3) The functions pmap_update_{1,2}pg don't use LMSW instruction > but call pmap_update in cpufunc.h (pmap.c). Is this because the Cyrix chip doesn't support selective TLB updates? -DG David Greenman Core-team/Principal Architect, The FreeBSD Project
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609111242.FAA07735>