From: "Ian Miller" Newsgroups: comp.os.msdos.djgpp Subject: grx23 under as-2.95 Lines: 69 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2014.211 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211 Message-ID: Date: Wed, 8 Sep 1999 22:29:24 +0100 NNTP-Posting-Host: 212.56.102.201 X-Complaints-To: abuse AT plus DOT net DOT uk X-Trace: stones 936826278 212.56.102.201 (Wed, 08 Sep 1999 22:31:18 BST) NNTP-Posting-Date: Wed, 08 Sep 1999 22:31:18 BST To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Ahem. I'm using pretty much up to date binutils 2.95 right now. I wouldn't recommend it unless it doesn't matter to you much if your software doesn't work. That said, they do seem to work fine. However,... as 2.95 interprets a couple of GRX inline assembler call instructions as PC-relative and chokes on them. as 2.81 interpreted them as absolute calls, and this is evidently what the code intends. The following simple patch, duplicated at http://www.shelob.force9.co.uk/djgpp/grxasm.dif, applies the * prefix to the call absolute operands as the as 2.95 manual requires. It works for me. IF IN DOUBT, DO NOT APPLY THIS PATCH Happy hacking, Ian -- Ian Miller, Dorset, UK *** src/vdrivers/vesa_pm.orig.c Mon May 11 20:20:28 1998 --- src/vdrivers/vesa_pm.c Wed Sep 8 21:41:52 1999 *************** *** 349,355 **** static INLINE void PM_banking(short BX, short DX) { __asm__ volatile ( " pushal \n" ! " call %3 \n" " popal " : /* no output */ : "a" (0x4F05), "b" (BX), "d" (DX), --- 349,355 ---- static INLINE void PM_banking(short BX, short DX) { __asm__ volatile ( " pushal \n" ! " call *%3 \n" " popal " : /* no output */ : "a" (0x4F05), "b" (BX), "d" (DX), *************** *** 362,368 **** " pushal \n" " movw %%ax, %%es \n" " movw $0x4f05, %%ax \n" ! " call %3 \n" " popal " : /* no output */ : "a" (es), "b" (BX), "d" (DX), --- 362,368 ---- " pushal \n" " movw %%ax, %%es \n" " movw $0x4f05, %%ax \n" ! " call *%3 \n" " popal " : /* no output */ : "a" (es), "b" (BX), "d" (DX),