From: Jianhua Cui Newsgroups: comp.os.msdos.djgpp Subject: Change stack segment in ms-dos Date: Tue, 29 Apr 1997 22:40:32 -0600 Organization: nmt Lines: 15 Message-ID: <3366CD40.41C67EA6@nmt.edu> NNTP-Posting-Host: charon.cs.nmt.edu Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk we have two coroutines running in our program, we want to give each of them separate segments, e.g. cs, ds,ss,fs,gs,es. but when we first change the ss segment, it does not work, we assign an array big enough to hold the ss segment, and put the ss selector in the ldt table of the main program, assign the esp and ebp pointer in somewhere in the array for ss. when we write the new ss segment descriptor in ldt the same as the current ss, no problem, and if we change the limit part of ss segment descriptor, it's okay, but when we use the our new ss base address, we get the general protection fault, we use the same control bits as the original ss descriptor, just change the base address, why we cann't change it ? thanks very much for telling us.