Hi, first, sorry for the delay. I had a short vacation over easter. [del] > > (gdb) info all-registers > > eax 0xff 255 > > ecx 0x3d5 981 > > edx 0x3d5 981 > > ebx 0x3d5 981 > > [snip] > > > The loop starts at 0x401a9759 and goes to 0x401a975e. If I jump to > > 0x401a9760 in the debugger, the server terminates. So, it reads 0x3d5, > > whatever that is (probably I/O stuff) and the test never succeeds. > > Looks like it's looping in function gfx_vga_mode_switch() near the tail end of > xc/programs/Xserver/hw/xfree86/drivers/ncs/gfx/vga_gu1.c, part of which reads > > /* WAIT UNTIL SOFTVGA HAS VALIDATED MODE IF ENDING MODE SWITCH */ > /* This is for VSA1 only, where SoftVGA waits until the next */ > /* vertical blank to validate the hardware state. */ > > if ((!active) && (!(gu1_detect_vsa2()))) { > OUTB(crtcindex, 0x33); > while (INB(crtcdata) & 0x80) ; > } > > Change this to ... > > /* WAIT UNTIL SOFTVGA HAS VALIDATED MODE IF ENDING MODE SWITCH */ > /* This is for VSA1 only, where SoftVGA waits until the next */ > /* vertical blank to validate the hardware state. */ > > if ((!active) && (!(gu1_detect_vsa2()))) { > int cnt = 256; > > OUTB(crtcindex, 0x33); > while (--cnt && (INB(crtcdata) & 0x80)); > } > > ... and see what happens. Great! Now, it terminates correctly, Thanks a million, Uli -- Ulrich Teichert, IDF EUROPE, Obenhauptstrasse 11, 22335 Hamburg, Germany fon: +49 40 59 39 39 0, fax: +49 40 59 39 39 11 _______________________________________________ XFree86 mailing list XFree86@xxxxxxxxxxx http://XFree86.Org/mailman/listinfo/xfree86