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):
read byte from port 0x64 into al,
do it until al& 0x02 is zero (e.g. until bit 1 is cleared)
write the byte 0xd1 to port 0x64
write the byte 0xdf to port 0x60
write the byte 0xff to port 0x64
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)
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?
For more complete information about compiler optimizations, see our Optimization Notice.