[coreboot] Understanding BIOS I/O Adresses

Peter Stuge peter at stuge.se
Mon Nov 16 16:23:10 CET 2015


Please don't post disassembly of code from outside the project. Thanks.

panic wrote:
> I have some difficulties to understand what is done

Welcome to x86 firmware. Some day you may even grow to appreciate
that feeling.


> Is there a way to find out what these addresses are used for?

You have to look for a lot of different documentation, and piece
together the complete picture on your own.

Get Ralf Brown's interrupt list. It includes an IO port list with
some register explanations.

Also look at operating system programming documentation. This is 386
class hardware, read books about operating system programming on the
386 and on older hardware.

Writing a 386 operating system is also a good exercise to learn about
the hardware.

There are good IA-32 books from Intel. They're a couple thousand
pages.


> In particular I'm interested in 0x80, 0x84/0x85, 0x8c/0x8d.

>From ports.lst:
----------P0080008F--------------------------
PORT 0080-008F - DMA PAGE REGISTERS (74612)

..
0084  RW  extra page register
0085  RW  extra page register
008C  RW  extra page register
008D  RW  extra page register


So either something is being done with the DMA controller (seems
unlikely in early boot) or these registers have a completely
different meaning at that time in the platform lifecycle.

I would not expect that there is any good documentation about this.


Good luck and have fun!

//Peter



More information about the coreboot mailing list