Date: Tue, 30 Apr 2002 15:10:48 -0500 (CDT) From: Larry Rosenman <ler@lerctr.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/37610: XFree86-4 x86emu needs update for new BIOS's Message-ID: <200204302010.g3UKAm9F000814@lerlaptop.iadfw.net>
next in thread | raw e-mail | index | archive | help
>Number: 37610 >Category: ports >Synopsis: XFree86-4 x86emu needs update for new BIOS's >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-ports >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Apr 30 13:20:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Larry Rosenman >Release: FreeBSD 4.5-STABLE i386 >Organization: LERCTR Consulting >Environment: System: FreeBSD lerlaptop 4.5-STABLE FreeBSD 4.5-STABLE #24: Tue Apr 30 07:09:14 CDT 2002 ler@lerlaptop:/usr/obj/usr/src/sys/LERLAPTOP i386 >Description: With some of the newer chip sets BIOS's using extended X86 opcodes and addressing modes, the XFree86 4.2.0 x86emu needs enhancement. Steve Woodford <scw@netbsd.org> made the following patch, which fixes this issue. can this be added to the XFree86-4-Server port as a patch to xc/extras/x86emu/src/x86emu/decode.c ? >How-To-Repeat: run on a I830MG graphics system, see the X86 ILLEGAL OPCODE (see the -STABLE and -MOBILE lists from yesterday (April 29, 2002) for example logs. This patch fixes THAT problem. >Fix: Apply this patch to xc/extras/x86emu/src/x86emu/decode.c --- decode.c.old Sat Apr 27 12:04:29 2002 +++ decode.c Sat Apr 27 13:56:06 2002 @@ -734,6 +734,10 @@ { unsigned offset; + if (M.x86.mode & SYSMODE_PREFIX_ADDR) { + u32* rp = decode_rm_long_register(rm); + return (*rp); + } switch (rm) { case 0: DECODE_PRINTF("[BX+SI]"); @@ -782,6 +786,10 @@ int rm) { int displacement = (s8)fetch_byte_imm(); + if (M.x86.mode & SYSMODE_PREFIX_ADDR) { + u32* rp = decode_rm_long_register(rm); + return (*rp + displacement); + } switch (rm) { case 0: DECODE_PRINTF2("%d[BX+SI]", displacement); @@ -830,6 +838,10 @@ int rm) { unsigned displacement = (u16)fetch_word_imm(); + if (M.x86.mode & SYSMODE_PREFIX_ADDR) { + u32* rp = decode_rm_long_register(rm); + return (*rp + displacement); + } switch (rm) { case 0: DECODE_PRINTF2("%04x[BX+SI]", displacement); >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204302010.g3UKAm9F000814>