From: Matt Roberds (mroberds@worldnet.att.net)
Date: Fri 16 Jul 1999 - 12:51:07 IDT
Hello all! I am getting closer to getting svgalib working on my old Mach64 card. I downloaded release 1.4.0 and compiled it. Some of the utilities/demos are seeing my Mach64, as evidenced by the wide range of video modes they offer on startup (640x480x64k, for example). But when it actually tries to go into the video mode, I get a floating point exception and core dump. I have tracked it down to the function 'comp_lmn' in rage.c . It has a local variable 'm' which is set from the global variable 'M'. Unfortunately, when entering the function, M=0, so m=0, and then an attempt to divide by m is made. Boom. M is set in the function 'rage_init' by a call to ATIGetMach64PLLReg. This is a macro that calls a function that reads the PLL registers. I spliced in a bit of code in 'comp_lmn' that was borrowed from the XFree86 source. It is an alternate way to look at the PLL registers. When I run it, I get 0x00 as the value of all 16 PLL registers. I assume, if ATIGetMach64PLLReg is doing an equivalent thing, this is why M gets set to zero and causes the other problems. Are my PLL registers someplace else that the code doesn't currently know about? I have a Mach 64 GX from early 1995; an earlier part of the 'rage.c' code detects it as a ATI 88800 GX-D. The base I/O address for CLOCK_CNTL that 'rage.c' works out is the same as the one called out in the old mach64 driver (which is broken, and may not be a reliable source of information. :) ) If anyone has any suggestions or comments they would be very much appreciated. I feel like I'm very close to making this work - I'm just not looking for the registers in the right place, or something. Thanks very much for your help!! Matt Roberds mroberds@worldnet.att.net
This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST