Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.
1696 Discussions

Xeon dual core 5130 - Vxworks 6.4 - Enabling A20 line on bootrom fails

eladn
Beginner
813 Views

Hi,

We are using the S5000PHB board (Xeon 5130 dual core) and Vxworks 6.4.

The BIOS loads the bootrom to RAM, and runs it.

The bootrom initializes registers, and among the first things it does is to enable the A20 line, as follows (in pseudo code, the actual code is in assembly):

wait_until_kbctrl_ready()

{

read byte from port 0x64 into al,

do it until al& 0x02 is zero (e.g. until bit 1 is cleared)

}

enable_A20_line()

{

write the byte 0xd1 to port 0x64

wait_until_kbctrl_ready()

write the byte 0xdf to port 0x60

wait_until_kbctrl_ready()

write the byte 0xff to port 0x64

wait_until_kbctrl_ready()

write zero to 0x0, 0x100000

write 0x1234567 to 0

check if 0x100000 contains 0x1234567

if no, then A20 is enabled - finish

if not, try an alternative method:

write byte 0x02 to port 0x92

read byte from port 0x92 into al,

do it (reading from port 0x92)until al& 0x02 isone (e.g. until bit 1 is set)

write zero to 0x0, 0x100000

write 0x1234567 to 0

check if 0x100000 contains 0x1234567

if no, then A20 is enabled - finish

else declare failure

}

Sometimes both methods fails and the bootrom is unable to boot.

Anyone can see any problem with the above code? Any additional things which needs to be taken into consideration when enabling A20 on this board?

Thanks,

Elad.

0 Kudos
0 Replies
Reply