X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: Rugxulo Newsgroups: comp.os.msdos.djgpp Subject: Re: Please help resurrecting GDB for version 7.0 release Date: Mon, 4 May 2009 22:08:44 -0700 (PDT) Organization: http://groups.google.com Lines: 70 Message-ID: <000b187c-f14b-4f37-81ca-0d93f4e1b2e1@g20g2000vba.googlegroups.com> References: <83zldveryw DOT fsf AT gnu DOT org> <684bdd55-b464-4e61-b28e-28774dc6ced8 AT o27g2000vbd DOT googlegroups DOT com> <83y6tfem02 DOT fsf AT gnu DOT org> <_ZKdnV74euw2-2HUnZ2dnUVZ_uednZ2d AT earthlink DOT com> <83ws8zeb05 DOT fsf AT gnu DOT org> <83skjldt35 DOT fsf AT gnu DOT org> <58b10f6a-eba5-4cc2-bef8-cc5fc4251e06 AT q2g2000vbr DOT googlegroups DOT com> <83fxfkdz2n DOT fsf AT gnu DOT org> NNTP-Posting-Host: 65.13.115.246 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1241500124 14907 127.0.0.1 (5 May 2009 05:08:44 GMT) X-Complaints-To: groups-abuse AT google DOT com NNTP-Posting-Date: Tue, 5 May 2009 05:08:44 +0000 (UTC) Complaints-To: groups-abuse AT google DOT com Injection-Info: g20g2000vba.googlegroups.com; posting-host=65.13.115.246; posting-account=p5rsXQoAAAB8KPnVlgg9E_vlm2dvVhfO User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi, On May 4, 10:10=A0pm, Eli Zaretskii wrote: > > From: Rugxulo > > Date: Mon, 4 May 2009 15:07:21 -0700 (PDT) > > > > As Charles points out, adding > > > SSE support will need code added to determine whether FXSAVE/FXRSTOR > > > are supported before we use them, and a lot of testing to make sure w= e > > > don't break old machines. > > > 1). See if CPUID supported (bit 21 of eflags) > > 2). See if FXSAVE / FXRSTOR supported (bit 24 of edx result from cpuid > > eax=3D1) > > 3). See if SSE supported (SSE1 is bit 25 of edx result from cpuid > > eax=3D1, SSE2 is bit 26, SSE3 is bit 0 of ecx) > > 4). If not already using CWSDPMI r5 2008, set bit 9 (OSFXSR) of CR4 > > and turn off bit 2 of CR0 (EM - emulation) -- typically done in ring > > 0, but some ring 3 environments emulate it for you (JEMM386) > > Yes, and then test a lot on old machines which I don't even know where > to find. =A0 What old machines in particular? Just cpu revisions or OSes or both?? I know that not all 486s support CPUID (e.g. my old 486 Sx/25 doesn't; also DOSBox supports it in its 486/DX2 but doesn't report it correctly via eflags). As mentioned, also not all PIIs lack FXSAVE / FXRSTOR (surprisingly). SSE2 first came about in Intel P4s (and later Pentium- M, aka PIII + SSE2) and AMD64 (I have a working P4 XP desktop and an AMD64 Vista laptop.) WinXP won't let you read or write to CRx registers, apparently, but WinME didn't seem to mind in my brief testing (although I don't have access to that anymore). But that cpu didn't support SSE2 anyways, so I couldn't 100% test, but my attempts writing to CR0 and/or CR4 didn't seem to cause any noticeable difference (via a silly WDOSX test .EXE). DOSEMU 1.4.0 (ring 3) doesn't let you read / write to CRx, but WINE 1.01 (ring 0??) doesn't mind. In other words, it's probably not a good idea to enable SSE unless in ring 0 unless you're absolutely certain it's allowed. In other words, I would've thought you could do the following in ring 3, but apparently not: mov eax,cr4 ; (CR4 first introduced in Pentium) bt eax,OSFXSR ; if already set, no need to enable jc .bye > All this just to have a change in a version that isn't going > to be released any time soon? =A0Doesn't sound like a good investment of > my scarce resources. > > > > OTOH, if someone needs it badly on a machine that is known to support > > > these instructions, they can simply replace FNSAVE/FRSTOR with the > > > extended instructions, modify the definition of the NPX object in > > > debug/dbgcom.h to accommodate for the extra registers, and be done. > > > You make it sound trivial, not sure it is. > > It's trivial. =A0You can try it. FXSAVE / FXRSTOR use a 512-byte buffer, but not all of that is used (I think), esp. if SSE is not already enabled (which is how Agner Fog claims Intel told him to know whether it is enabled ... see if it saves / restores the SSE "xmm0" etc. registers.). Did any of that help? I hope I explained / understood it correctly!