From: buers AT gmx DOT de (Dieter Buerssner) Newsgroups: comp.os.msdos.djgpp Subject: Re: I'm Back... Date: 25 Mar 2000 10:32:14 GMT Lines: 39 Message-ID: <8bi4je$51gdn$2@fu-berlin.de> References: <38DBF7AF DOT A0786922 AT ou DOT edu> <38DC04C8 DOT 72C075C6 AT bigfoot DOT com> <38DC1398 DOT E1B15F0B AT ou DOT edu> NNTP-Posting-Host: pec-2-239.tnt2.s2.uunet.de (149.225.2.239) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 953980334 5292471 149.225.2.239 (16 [17104]) X-Posting-Agent: Hamster/1.3.13.0 User-Agent: Xnews/03.02.04 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com David Cleaver wrote: >> > farptrx.h:13: Invalid 'asm' statement: >> > farptrx.h:13: fixed or forbidden register 2 (cx) was spilled for >> > class CREG. [...] >extern __inline__ void _farpokex (unsigned short selector, unsigned long >offset, void *x, int len) >{ > __asm__ __volatile__ ("pushl %%es\n" > "movw %w0, %%es\n" > "rep\n" > "movsb\n" > "popl %%es" > : > : "rm" (selector), "S" (x), "D" (offset), "c" (len) > : "%ecx", "%edi", "%esi"); >} Try the following (untested). extern __inline__ void _farpokex (unsigned short selector, unsigned long offset, void *x, int len) { __asm__ __volatile__ ("pushl %%es\n" "movw %w3, %%es\n" "rep\n" "movsb\n" "popl %%es" : "=S" (x), "=D" (offset), "=c" (len) : "r" (selector), "0" (x), "1" (offset), "2" (len)); } But I wonder, whether it is allowed, to change es without wrapping it into cli/sti pairs. (An ISR may assume stanard es) -- Regards, Dieter