AMD K6, K6-2, K6-2/CXT K6-III-Utility SetK6, V3
c't, Andreas Stiller March 99
**********************************************************************
SetK6.exe  32 Bit version for Win95/98 and Win NT
SetK6D.exe DOS version
Direct95.VXD Driver for Win95/98
DirectNT.SYS Driver for NT

(V3 hats little corrections against V2, mainly the default size
of the frame buffer is changed to 16 MByte)

SetK6 controls and sets the internal processor registers for
Write Allokation and Write Combining (K6-2/CXT, K6-III only). If
the BIOS does not recognize and does not correctly
intitialize the processor, it runs about 5 % slower than necessary.

Under Windows setk6 is a consol application, which normaly
should be started from the MSDOS shell, at least if you want to
pass parameters.

SetK6, Setk6D without parameters show the actual state.


Setk6 /on  :   activates Write Allocation under Windows
		for the complete system memory
Setk6 /off :   deactivates Write Allocation
Setk6 /on:xxM: activates WA for memory until xx MByte oder
		shortform:
Setk6 xxM      with xx: decimal with suffix M means xx MByte
		i.e. setk6 64M
		(without M setk6 interpretes the number
		hexadecimal in MByte, i.e setk6 64 => setk6 100M)

under DOS you always have to specify the maximal memory !

Extension for the K6-2/CXT and K6-III

The K6-2/CXT and K6III processors support a so called Write Combining
for uncached memory. This enables a much faster access to the
linear frame buffer (LFB) of the grafic card. For this the
processor offers two Memory Type Range Registers (MTRR), where
you can program the physical address and size of the LFBs.
Modern grafic cards usually support two LFBs, one for direct
accesses and one for the hardware accelerator.

setk6 looks into the PCI header of the grafic card, where normally
these resources are stored.

setk6 /M0:LFB,xxM sets MTRR0 according to the first entry in the
    PCI header with the size xxM (default 16M) and with
    attribut WC (Write Combining)

setk6 /M1:LFB2,xxM sets MTRR1 to the second Entry


You even can specify an attribut, i.e.
setk6 /M0:LFB,16M,WC  or ...,UC (uncached) ...NE (No effect)

If the entries in the PCI header are not conform with the
real address of the framebuffer or you have other hardware with
PCI-memory, you can specify directly a wanted address (in hex):

setk6  /M0:E0000000  which is the same as  /M0:3584M

If you do not specify a Number with MTRR, setk6 looks for the
next unused MTRR:

setk6 /M:LFB : first unused MTRR is set for LFB according to the
	      PCI header with default size 16M


Mostly the typical setting under Windows looks like this:

setk6 /on /M0:LFB /M1:LFB2

and so under DOS with 64 MByte memory:

setk6D /on:64M /M0:LFB /M1:LFB2

Andreas Stiller/c't March 1999
