Path: utzoo!attcan!uunet!husc6!bloom-beacon!spider.co.UK!mark From: mark@spider.co.UK (Mark Valentine) Newsgroups: comp.windows.x Subject: Re: X11R3 server & Purdue2.0 & gcc & ultrix 3.0 Message-ID: <4710.8905042111@brahma.cs.hw.ac.uk> Date: 4 May 89 21:39:03 GMT Sender: daemon@bloom-beacon.MIT.EDU Organization: The Internet Lines: 63 output operand constraint lacks `=' I decided after all to go fix this myself. It looked fairly straightforward, and I discovered that all it needs is the addition of the `=' constraint to the output operands in two asm() statements in maskbits.h (see below). This is only of relevance with the Purdue speedups, since these use the special features of GNU CC asm(). (The `=' wasn't necessary in earlier versions of gcc. It would have been nice if this could have just been made a *warning* for at least one release of gcc...) Now, this gets a clean compile, and indeed the server runs a good bit faster than it did before, AND the modifier keys work for me now! The only thing I've seen wrong so far is that a few bitmaps have been corrupted (a black strip along the left side of twm's version window and icons, etc.). It's progress, though! Mark. Here's where I put those `=' signs... *** maskbits.h.old Thu May 4 17:23:31 1989 --- maskbits.h Thu May 4 17:24:00 1989 *************** *** 315,321 #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) --- 315,321 ----- #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "=g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) *************** *** 321,327 #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax --- 321,327 ----- #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "=m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax __ Mark Valentine, Spider Systems Limited, Edinburgh, UK. /\oo/\