Import 2.1.15
[davej-history.git] / arch / i386 / kernel / setup.c
index 3dae506..112ebcf 100644 (file)
@@ -53,6+53,12 @@ char hlt_works_ok = 1;               /* set if the "hlt" instruction works */
  * 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 @@ struct screen_info screen_info;
 #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 @@ extern char empty_zero_page[PAGE_SIZE];
 #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 @@ void setup_arch(char **cmdline_p,
 #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 @@ void setup_arch(char **cmdline_p,
        /* 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");
 }
close