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); ----------------------------------------------------------------