Sender: nate AT cartsys DOT com Message-ID: <36FFDB15.18C69B43@cartsys.com> Date: Mon, 29 Mar 1999 11:57:09 -0800 From: Nate Eldredge X-Mailer: Mozilla 4.08 [en] (X11; I; Linux 2.2.3 i586) MIME-Version: 1.0 To: djgpp AT delorie DOT com Subject: Re: Fixed or forbidden register spilled error (bloody inline asm cocking up again) References: <7dnkt6$fis$1 AT news4 DOT svr DOT pol DOT co DOT uk> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com Andrew Davidson wrote: > > I'm having a neat little problem with a teeny little bit of inline > assembler. The line goes like this: > > asm ( > "call %%esi\n" > : "=a" (regpcaf), "=b" (regiyhl), "=c" (regixbc), "=d" (regspde) > : "a" (regpcaf),"b" (regiyhl), "c" (regixbc), "d" (regspde), "S" > (cpuid->scratchmem), "D" (cpuid->cpumem) > : "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi" > ); > > (all the reg...s are #defines but fear not, they all work perfectly). I think Shawn pegged your problem, but also note that it is technically illegal to declare an input or output register as clobbered. You can delete eax thru edx from the clobber list (they aren't clobbered, they're filled with an output), and esi and edi should be added as outputs assigned to dummy variables. EGCS enforces this. -- Nate Eldredge nate AT cartsys DOT com