Chipsatz intern, Intel Triton, Mercury, Neptun , c't 10/95 S.332 (as)
********************************************************************

ctchipz.exe  V3.1 ausfhrbares Programm
intelpci.cfg Konfigurationsdatei fr die Intel-Pentium-Chipstze
             Triton, Neptun und Mercury


ctChipz ermglicht das Auslesen und Setzen von Chipstzen. Die
jeweilige Chipsatzinformation wird einer Konfigurationsdatei
entnommen (Extension .CFG). ctChipz Version 3 beherrscht nun auch
32bittige Ports und kann mit PCI-Chipstzen umgehen.

Interaktiver Betrieb
*********************

Um  einen Intel-Pentium-Chipsatz auszulesen, ist lediglich

ctchipz intelpci

einzugeben.

Alternativ kann man auch Name und Pfad im Environment setzen,
z.B.

set chipset=C:\chipset\intelpci.cfg

dann gengt es, allein ctchipz aufzurufen.

ctchipz gibt die aktuelle Einstellung der Register aus.
Nach jedem Register hlt es an, der Benutzer kann den Registerinhalt
ndern, abbrechen oder weitermachen. Folgende Eingaben sind
mglich:

S  : Schaltet Darstellung um zwischen
     aktuell: nur aktuelle Einstellung anzeigen  oder
     alle:    alle mglichen Einstellungen anzeigen.
     Die aktuelle Einstellung ist rot gekennzeichnet.

M  : Schaltet die Darstellung um zwischen
    Bitmuster: betroffene Bits als 1, nicht betroffene als 0 markieren
               also etwa 11100001 fr Bit 7,6,5,1
    Bit-Liste: explizite Auflistung der Bits (Default)
               also 7..5,1 fr  Bit 7,6,5,1

R  : Wiederholung

I,/: fragt neuen Index (in hex) ab

?  : kurzes Help

Q,ESC:Abbruch

CR : oder alle hier nicht aufgefhrten Zeichen: weiter


#### Registernderungen #####


H,$: gibt aktuellen Registerwert hexadezimal aus,
     Wert lt sich editieren (mit Cursor rechts, links, Hexzahl,
     CR), Abbruch mit ESC

B,%: gibt aktuellen Registerwert binr aus,
     Wert lt sich editieren (mit Cursor rechts, links, Binzahl,
     CR), Abbruch mit ESC

P  :Fragt nach Bitpattern in der Gestalt Bitliste:=Wert.

    Fr 8bittige Ports gilt zum Beispiel

    7..5,1:=%1111

    Fr 16 und 32bittige Ports sind die einzelnen Bitnummern
    zweistellig einzugeben, also z.B
    07..05,01:=%1111

    in beiden Fllen werden nur die Bits 7,6,5 und 1 gesetzt, der
    Rest bleibt unverndert.

    Oft will man nur ein Bit ndern, was hiermit recht praktisch
    geht, z.B.: P31:=1

###################### W A R N U N G   ###########################

Das ndern bestimmter Chipsatzregister  kann zum Absturz
des Rechners fhren!
##################################################################

Um gleich bei einem bestimmten Register zu starten, kann man den Index in
der Kommandozeile bergeben, z.B:

ctchipz intelpci /72

Kommandoline, Batchbetrieb und Makros
*************************************

Register lassen sich direkt ber die Kommandozeile setzen:

ctchipz intelpci /5E:=77

setzt das 8bittige Register 5Eh auf 77h (alle Zahlenwerte auch ohne 'h' in
hex, Registerindizes ab A0h erfordern eine vorangestellte 0). Dadurch wird
der Speicherbereich von E000h bis E7FFFh auf Read/write cacheable
geschaltet. Das Programm zeigt die genderten Register (vorher/nachher) an,
ohne auf ein Eingabe des Benutzers zu warten.

Alternativ sind binre Werte mglich:

ctchipz intelpci /5E:=%01110111

Um nur einen Teilbereich des Registers zu setzen, lassen sich hier
"Don't-Care-Bits" bergeben, etwa um nur E000h bis E3FFFh auf
Write only zu setzen:

ctchipz intelpci /5E:=%xxxx0010

Die bergebene Bitzahl mu dabei jeweils mit der Breite des Registers
(blicherweise 8) bereinstimmen.

Um Ihnen hier die Arbeit etwas zu vereinfachen, sind einige
Macros und Variable definiert in der Konfigurationsdatei. So lt
sich obiger Aufruf auch einfacher merkbar mit

ctchipz intelpci /SE0=WON

entsprechende Macros gibt es in IntelPCI fr

/SC0  (C0000..C3FFF) in 16 KB-Schritten bis
/SF0  (F0000..FFFFF)

mit den Attributen:

rwc   = x111     ;; read write Cacheable
rwn   = x011     ;; read write not Cacheable
won   = x010     ;; Write only not Cacheable
roc   = x101     ;; Read only, cacheable
ron   = x001     ;; Read only not Cacheable
bus   = x000     ;; Read/Write to PCI Bus

Weitere Macros sind definiert, die auch im laufenden Betrieb das Ein-
/Auschalten der Caches, oder nderung der Cachestrategien etc. erlauben. Diese
Macros sollte man mglichst nicht im virtuellen Modus aufrufen (EMM386, Max,
QEMM, Windows- oder OS/2-DOS-BOX), da hier die Datenkonsistenz nicht 100%
sichergestellt ist. Auerdem lt sich im virtuellem Modus der geschtzte
Prozessorbefehl WBINVD zum Flushen der Caches nicht einsetzen.
Zum "Reinigen" der Caches wird ferner das Lesen eines groen
Speicherblocks verwendet (zweimal Cache-Gre). Bei Caches von 512KByte oder
grer ist das nicht mehr im Real-Modus mglich. Mit dem Kommando-Switch

/L2

bzw.

/L2=512

benutzt ctchipz fr die Reinigungsaktion den Protected Mode

(fr grere Caches entsprechend /L2=1024 etc.)

In der Kommandozeile kann man mehrere Registerwerte, Makros
und Switches bergeben, z.B

ctchipz intelpci /L2 /58=%xxxxxxx0 /sE0=rwc /sE4=rwc ... /Q

Der Switch /Q sorgt dafr, da nur evtl. Fehlermeldungen ausgegeben werden.
Ansonsten kann man die reichhaltigen Ausgabe auch mit > Nul "vernichten".

Fr grere Konfigurationsorgien ist mit

/dat=name

die Angabe einer Textdatei mglich, in der die Registerwerte, Makros oder
weitere Dateien zeilenweise enthalten sind ('/' kann entfallen), also

ctchipz intelpci /dat=mein.cfg

und in mein.cfg:

QUIET          ; entspricht dem Switch /Q
L2=512         ; nur bei 512-K-Caches
58=%xxxxxxx0
sE0=rwc
sE4=rwc
...

Welche Macros definiert sind, entnehmen Sie bitte der zum Chipsatz
zugehrigen Konfigurationsdatei (Macro = ...). Im allgemeinen gibt es
Macros wie L2ON, L2OFF, L1ON, L1OFF, L2WT, L2WB, Dirty etc. Der Triton
kennt kein L2ON, er bentigt dafr die Angabe der installierten Cachegre,
also L256ON oder L512ON. Selbstdefinierte Macros lassen sich recht einfach
hinzufgen, wenn man sich an den vorhandenen Beispielen im Listing
orientiert.

Hardwareexperten knnen natrlich auch eigene Konfigurationsdateien
entsprechend der Struktur und Syntax vorliegender .CFG-Dateien erstellen.


