xserver-multidpi/hw/xfree86
Bart Trojanowski 66f8001b61 X86EMU: handle CPUID instruction
After trying to switch from X to VT (or just quit) the video-amd driver
attempts to issue INT 10/0 to go to mode 3 (VGA).  The emulator, running
the BIOS code, would then spit out:

        c000:0282: A2 ILLEGAL EXTENDED X86 OPCODE!

The opcode was 0F A2, or CPUID; it was not implemented in the emulator.
This simple patch, against 1.3.0.0, handles the CPUID instruction in one of
two ways:
 1) if ran on __i386__ or __x86_64__ then it calls the CPUID instruction
     directly.
 2) if ran elsewhere it returns a canned 486dx4 set of values for
     function 1.

This fix allows the video-amd driver to switch back to console mode,
with the GSW BIOS.

Thanks to Symbio Technologies for funding my work, and ThinCan for
providing hardware :)

Signed-off-by: Bart Trojanowski <bart@jukie.net>
Acked-by: Eric Anholt <eric@anholt.net>
2008-02-08 10:48:40 -08:00
..
common xfree86: stick two more checks in for num_valuators < MAX_VALUATORS 2008-02-01 14:24:04 +10:30
ddc Don't carp on EDID 1.4 blocks anymore. 2007-12-28 16:53:17 -05:00
dixmods xselinux: Move the extension to extmod instead of being built-in. 2008-01-25 19:22:19 -05:00
doc xorg.conf.man: Fix monitor/output confusion in monitor positioning 2008-01-29 14:46:15 +11:00
dri Revert "registry: Register XF86DRI extension protocol names." 2007-11-20 17:48:46 -05:00
dummylib Kill xf86getpagesize even harder (dummylib & ioport) 2008-01-02 19:28:33 -08:00
exa Merge branch 'master' into XACE-SELINUX 2007-11-14 13:35:50 -05:00
fbdevhw Fix magic number in fbdevhw 2007-11-02 12:05:41 -04:00
i2c Fixing xf86I2CGetScreenBuses(), now dereferencing the correct pointer. 2007-09-04 16:42:57 +02:00
int10 Fixing a misleading comment which could suggest a GPL violation. 2007-08-30 14:28:06 +02:00
loader Loader: Fix verbosity confusion 2008-01-29 14:46:15 +11:00
modes validate mode clock for probed modes 2008-02-05 12:45:27 -08:00
os-support Bug 13101: xorg-server has a typo in hw/xfree86/os-support/bsd/i386_video.c 2008-01-29 09:48:00 -08:00
parser Use _X_EXPORT instead of __attribute__((visibility("default"))) 2007-12-03 11:31:21 -08:00
rac Merge branch 'master' into XACE-SELINUX 2007-11-05 19:08:36 -05:00
ramdac devPrivates rework: convert CursorRec and CursorBits over to new interface. 2007-08-30 11:40:39 -04:00
shadowfb Merge branch 'master' into XACE-SELINUX 2007-11-05 19:08:36 -05:00
utils Kill xf86getpagesize even harder (dummylib & ioport) 2008-01-02 19:28:33 -08:00
vbe Don't filter modes away during VBE mode list construction. 2007-11-02 12:05:58 -04:00
vgahw XFree86: Remove usage of alloca 2007-11-05 14:34:42 +00:00
x86emu X86EMU: handle CPUID instruction 2008-02-08 10:48:40 -08:00
xaa Merge branch 'master' into XACE-SELINUX 2007-11-05 19:08:36 -05:00
xf1bpp Remove the PaintWindow optimization. 2007-09-13 00:08:53 +00:00
xf4bpp Merge branch 'master' into XACE-SELINUX 2007-11-19 18:10:46 -05:00
xf8_16bpp Remove smashing of CFLAGS from server build. 2006-09-18 12:11:18 -07:00
xf8_32bpp Merge branch 'master' into XACE-SELINUX 2007-11-05 19:08:36 -05:00
Makefile.am Remove all traces of external RGB database (and Speedo) 2007-11-05 16:28:35 +00:00
Options Initial revision 2003-11-14 16:48:57 +00:00
xorgconf.cpp Remove all traces of external RGB database (and Speedo) 2007-11-05 16:28:35 +00:00