delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1992/07/06/21:11:34

Date: Tue, 7 Jul 92 10:04:55 JST
From: na70103 AT mips DOT cc DOT mie-u DOT ac DOT jp (Makoto Kobayashi)
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: go32 on Cx486

Dear Mr. delorie and all djgpp users,
 
Japanese go32 users found that go32 doesn't run under Cyrix Cx486DLC/SLC.
Mr. Shibata has just found that the trouble is resolved if granulity bits 
in TSS segments are reset.   I report the diff file for Cx486 below.
And I want to hear whether this is a bug or this is a safe design for i486
and only the Cyrix CPU has any problem. 

--
    Makoto Kobayashi

 
*** control.c	Mon Jul  6 01:38:18 1992
--- e:control.c	Mon Jul  6 01:29:48 1992
**************
*** 543,557 ****
    fillgdt(g_core, 0xffffffffL, 0, 0x92, 3);
    fillgdt(g_acode, 0xefffffffL, 0x10000000L, 0x9a, 3);
    fillgdt(g_adata, 0xefffffffL, 0x10000000L, 0x92, 3);
!   fillgdt(g_ctss, sizeof(TSS), ptr2linear(&c_tss), 0x89, 3);
!   fillgdt(g_atss, sizeof(TSS), ptr2linear(&a_tss), 0x89, 3);
!   fillgdt(g_ptss, sizeof(TSS), ptr2linear(&p_tss), 0x89, 3);
!   fillgdt(g_itss, sizeof(TSS), ptr2linear(&i_tss), 0x89, 3);
    fillgdt(g_rc32, 0xffff, (word32)_CS*16L, 0x9a, 3);
    fillgdt(g_grdr, 0xffff, (word32)gr_paging_segment*16L, 0x9a, 0);
!   fillgdt(g_v74, sizeof(TSS), ptr2linear(&v74_tss), 0x89, 3);
!   fillgdt(g_v78, sizeof(TSS), ptr2linear(&v78_tss), 0x89, 3);
!   fillgdt(g_v79, sizeof(TSS), ptr2linear(&v79_tss), 0x89, 3);
  
    setup_tss(&c_tss, go_real_mode);
    setup_tss(&a_tss, go_real_mode);
--- 543,557 ----
    fillgdt(g_core, 0xffffffffL, 0, 0x92, 3);
    fillgdt(g_acode, 0xefffffffL, 0x10000000L, 0x9a, 3);
    fillgdt(g_adata, 0xefffffffL, 0x10000000L, 0x92, 3);
!   fillgdt(g_ctss, sizeof(TSS), ptr2linear(&c_tss), 0x89, 1);
!   fillgdt(g_atss, sizeof(TSS), ptr2linear(&a_tss), 0x89, 1);
!   fillgdt(g_ptss, sizeof(TSS), ptr2linear(&p_tss), 0x89, 1);
!   fillgdt(g_itss, sizeof(TSS), ptr2linear(&i_tss), 0x89, 1);
    fillgdt(g_rc32, 0xffff, (word32)_CS*16L, 0x9a, 3);
    fillgdt(g_grdr, 0xffff, (word32)gr_paging_segment*16L, 0x9a, 0);
!   fillgdt(g_v74, sizeof(TSS), ptr2linear(&v74_tss), 0x89, 1);
!   fillgdt(g_v78, sizeof(TSS), ptr2linear(&v78_tss), 0x89, 1);
!   fillgdt(g_v79, sizeof(TSS), ptr2linear(&v79_tss), 0x89, 1);
  
    setup_tss(&c_tss, go_real_mode);
    setup_tss(&a_tss, go_real_mode);
 
----------------------------------------------------------------

- Raw text -


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