Subject: Issue with /usr/src/sys/arch/i386/stand/lib/gatea20.c
To: NetBSD-current <current-users@NetBSD.org>
From: Marcin Jessa <lists@yazzy.org>
List: tech-embed
Date: 06/21/2005 15:50:37
Hi.

I have WRAP boards which do not have a keyboard controller. 
The system stops up when booting those boards becouse of that.
It seems like the /usr/src/sys/arch/i386/stand/lib/gatea20.c file is the one responsible for that. 
Would someone knowledgable take a look at the file and maybe fix that part?

This is what Dani Irinchev wrote once to the current list and Jukka Salmi (this fix solves the problem):

> Hi Jukka,
> Actually I got it running. It stops in the gateA20() function and is
related
> to the lack of a keyboard controller. I modified the finction gateA20 in
the
> file /usr/src/sys/arch/i386/stand/lib/gatea20.c to look like:
> 
> void gateA20()
> {
>         __asm("pushfl ; cli");
>         /*
>          * Not all systems enable A20 via the keyboard controller.
>          *      * IBM PS/2 L40
>          *      * AMD Elan SC520-based systems
>          */
>         /*
>         if (
> #ifdef SUPPORT_PS2
>             biosmca_ps2model == 0xf82 ||
> #endif
> 
>             0) {
>                 outb(0x92, 0x2);
>         } else {
>                 while (inb(K_STATUS) & K_IBUF_FUL);
>                 while (inb(K_STATUS) & K_OBUF_FUL)
>                         (void)inb(K_RDWR);
> 
>                 outb(K_CMD, KC_CMD_WOUT);
>                 delay(100);
>                 while (inb(K_STATUS) & K_IBUF_FUL);
>                 outb(K_RDWR, x_20);
>                 delay(100);
>                 while (inb(K_STATUS) & K_IBUF_FUL);
>         }
>         */
>         outb(0x92, 0x2);
>         __asm("popfl");
> }
> 
> Basically commented out most of it. Then you should run make in the
> /usr/src/sys/arch/i386/stand/boot directory and copy boot from
> /usr/src/sys/arch/i386/stand/boot/biosboot to your / directory.
> Cheers, Dani