patch-2.1.15 linux/arch/i386/kernel/setup.c

Next file: linux/arch/i386/kernel/signal.c
Previous file: linux/arch/i386/kernel/mca.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.14/linux/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
@@ -53,6 +53,12 @@
  * Bus types ..
  */
 int EISA_bus = 0;
+int MCA_bus = 0;
+
+/* for MCA, but anyone else can use it if they want */
+unsigned int machine_id = 0;
+unsigned int machine_submodel_id = 0;
+unsigned int BIOS_revision = 0;
 
 /*
  * Setup options
@@ -62,6 +68,10 @@
 #ifdef CONFIG_APM
 struct apm_bios_info apm_bios_info;
 #endif
+struct sys_desc_table_struct {
+	unsigned short length;
+	unsigned char table[0];
+};
 
 unsigned char aux_device_present;
 
@@ -94,6 +104,7 @@
 #define KERNEL_START (*(unsigned long *) (PARAM+0x214))
 #define INITRD_START (*(unsigned long *) (PARAM+0x218))
 #define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c))
+#define SYS_DESC_TABLE (*(struct sys_desc_table_struct*)(PARAM+0x220))
 #define COMMAND_LINE ((char *) (PARAM+2048))
 #define COMMAND_LINE_SIZE 256
 
@@ -124,6 +135,12 @@
 #ifdef CONFIG_APM
 	apm_bios_info = APM_BIOS_INFO;
 #endif
+	if( SYS_DESC_TABLE.length != 0 ) {
+		MCA_bus = SYS_DESC_TABLE.table[3] &0x2;
+		machine_id = SYS_DESC_TABLE.table[0];
+		machine_submodel_id = SYS_DESC_TABLE.table[1];
+		BIOS_revision = SYS_DESC_TABLE.table[2];
+	}
 	aux_device_present = AUX_DEVICE_INFO;
 	memory_end = (1<<20) + (EXT_MEM_K<<10);
 	memory_end &= PAGE_MASK;
@@ -199,7 +216,7 @@
 	/* request io space for devices used on all i[345]86 PC'S */
 	request_region(0x00,0x20,"dma1");
 	request_region(0x40,0x20,"timer");
-	request_region(0x80,0x20,"dma page reg");
+	request_region(0x80,0x10,"dma page reg");
 	request_region(0xc0,0x20,"dma2");
 	request_region(0xf0,0x10,"npu");
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov