*** arch/i386/stand/libsa/gateA20.c-	Sat Mar  7 14:09:30 1998
--- arch/i386/stand/libsa/gateA20.c	Sat Sep 19 16:01:34 1998
***************
*** 51,56 ****
--- 51,77 ----
  int
  getA20type()
  {
+ 	u_int32_t status;
+ 	u_int8_t *vers;
+ 
+ 	__asm __volatile(DOINT(0x15) "\n\t"
+ 			 "setc %%al\n\t"
+ 			 : "=a" (status)
+ 			 : "0" (0xc000)
+ 			 : "%ecx", "cc");
+ 
+ 	/* On failure we go for a normal A20 line */
+ 	if (status)
+ 		return(A20_KBD);
+ 
+ 	vers = (void*) (((BIOS_regs.biosr_es << 4) | BIOS_regs.biosr_bx) +2);
+ 	printf("machine bytes %x %x\n", vers[0], vers[1]);
+ 
+ 	/* Detect IBM L40 machine */
+ 	if (vers[0] == 0xF8 && vers[1] == 0x23)
+ 		return(A20_0x92);
+ 
+ 	/* By default we go for a normal A20 line */
  	return(A20_KBD);
  }
  
