Patch from Aleksey (Quality Quorum <qqi@world.std.com>) to change the

delay loop in this BSP.  Here is his response to a question about
the patch:

    Yes, or that other machine has a different chipset with different
    timing requirements on enabling Gate 20. I am strongly suspecting
    that it may some how related to the video card I am using (on my
    old P-75 target it was plain PCI VGA, on my new one it is Diamond Stealth
    3D 2000).
This commit is contained in:
Joel Sherrill
1999-12-03 15:46:17 +00:00
parent 1e4a7d413d
commit 76c356f365
2 changed files with 46 additions and 6 deletions
+23 -2
View File
@@ -115,6 +115,10 @@ _start16:
outb %al, $0x60
call empty_8042
call delay
call delay
call delay
movl %cs:HDRSTART + HDROFF, %eax #
pushl %eax # jump to start of 32 bit code
ret #
@@ -122,13 +126,29 @@ _start16:
/*----------------------------------------------------------------------------+
| delay
+------------------------------------------------------------------------------
| Delay is needed after doing I/O. We do it by writing to a non-existent port.
| Delay is needed after doing I/O.
|
| The outb version is OK on most machines BUT the loop version ...
|
| will delay for 1us on 1Gz machine, it will take a little bit
| longer on slower machines, however, it does not matter because we
| are going to call this function only a few times
+----------------------------------------------------------------------------*/
.p2align 4
.globl _delay
.globl delay
delay:
_delay:
outb %al, $0xED # about 1uS delay
/*
outb %al, $0xED # about 1uS delay on most machines
*/
/*
movl $0x200, %eax
delay1:
dec %eax
jnz delay1
ret
/*----------------------------------------------------------------------------+
@@ -139,6 +159,7 @@ _delay:
| No timeout is used - if this hangs there is something wrong with the machine,
| and we probably couldn't proceed anyway.
+----------------------------------------------------------------------------*/
.p2align 4
.globl _empty_8042
.globl empty_8042
empty_8042:
+23 -4
View File
@@ -52,16 +52,35 @@ BEGIN_CODE
EXTERN (Timer_exit)
EXTERN (clockOff)
.p2align 4
/*----------------------------------------------------------------------------+
| delay
+------------------------------------------------------------------------------
| Delay is needed after doing I/O. We do it by writing to a non-existent port.
| Delay is needed after doing I/O.
|
| The outb version is OK on most machines BUT the loop version ...
|
| will delay for 1us on 1Gz machine, it will take a little bit
| longer on slower machines, however, it does not matter because we
| are going to call this function only a few times
+----------------------------------------------------------------------------*/
SYM(delay):
outb al, $0x80 # about 1uS delay
.p2align 4
.globl _delay
.globl delay
delay:
_delay:
/*
outb %al, $0xED # about 1uS delay on most machines
*/
/*
movl $0x200, %eax
delay1:
dec %eax
jnz delay1
ret
/*-------------------------------------------------------------------------+
| Function: _load_segments
| Description: Current environment is standard PC booted by grub.