/* 440BX-Report 440BX Chipset SDRAM Timing Registers Copyright 1996-1998 by Leonard N. Zubkoff This program is free software; you may redistribute and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for complete details. Compile with gcc -O -o 440bx 440bx.c */ #include #include #include #define PCI_Index_Register 0xCF8 #define PCI_Data_Register 0xCFC int main(ArgCount, ArgVector, Environment) int ArgCount; char *ArgVector[], *Environment[]; { unsigned long VendorAndDeviceID, Register50, Register76; iopl(3); outl(0x80000000 | 0x00, PCI_Index_Register); VendorAndDeviceID = inl(PCI_Data_Register); if (VendorAndDeviceID != 0x71908086 && VendorAndDeviceID != 0x71928086) { fprintf(stderr, "This machine does not use the Intel 440BX chipset\n"); exit(1); } outl(0x80000000 | 0x50, PCI_Index_Register); Register50 = inl(PCI_Data_Register); outl(0x80000000 | 0x74, PCI_Index_Register); Register76 = inl(PCI_Data_Register) >> 16; printf("*** 440BX SDRAM Memory Timing ***\n"); printf("CAS# Latency:\t\t%d DCLKs\n", (Register76 & 0x0004 ? 2 : 3)); printf("RAS# to CAS# Delay:\t%d DCLKs\n", (Register76 & 0x0002 ? 2 : 3)); printf("RAS# Precharge:\t\t%d DCLKs\n", (Register76 & 0x0001 ? 2 : 3)); if (!(Register50 & 0x04)) printf("\n\ WARNING: The In-Order Queue Depth for this system in the NBXCFG configuration\n\ register is limited to 1. This will reduce memory bandwidth performance on\n\ the STREAM benchmark and other memory intensive applications by a factor of\n\ two. If this is a Tyan S1832DL Tiger 100 motherboard, remove jumper JP2\n\ which is located near the DIMM sockets to correct this problem.\n"); return 0; }