Date: Sat, 6 May 2000 17:40:25 -0400 (EDT) Message-Id: <200005062140.RAA07169@indy.delorie.com> From: Eli Zaretskii To: "Paul Crone" CC: djgpp AT delorie DOT com In-reply-to: <007f01bfb76e$0020d320$2f5293c3@pkcrone> (paul AT pkcrone DOT globalnet DOT co DOT uk) Subject: Re: inline asm problem References: <007f01bfb76e$0020d320$2f5293c3 AT pkcrone> Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > From: "Paul Crone" > Date: Sat, 6 May 2000 16:14:57 +0100 > > inline void set_vesa_bank_pm(int bank_number) > { > asm ( > " call *%0 " > : /* no outputs */ > : "r" (pm_bank_switcher), /* function pointer in any register */ > "b" (0), /* set %ebx to zero */ > "d" (bank_number) /* bank number in %edx */ > > : "%eax", /* clobber list (we have no way of */ > "%ebx", /* knowing which registers the VESA */ > "%ecx", /* code is going to change, so we */ > "%edx", /* have to assume the worst and list */ > "%esi", /* them all here) */ > "%edi" > ); > } > > > Errors reported against 3rd line of code segment: > "Invalid 'asm' statement" > "fixed or forbidden register 1 (dx) was spilled for class DREG" You need to change this inline assembly. Section 8.17 of the DJGPP FAQ should help you do this: it points to a page on the GCC site that explains how to do that.