x86BIOS and the ISA bus and low memory in general...

Marcel Moolenaar xcllnt at mac.com
Thu Oct 15 20:37:17 UTC 2009


On Oct 15, 2009, at 12:45 PM, M. Warner Losh wrote:

> [[ redirected to arch@ ]]
>
> In message: <200910151431.53236.jkim at FreeBSD.org>
>            Jung-uk Kim <jkim at FreeBSD.org> writes:
> <snip>
> : This is actually very interesting discussion for me because one of  
> my
> : pet projects is extending x86bios to support non-PC architectures.
> : If anyone is interested, the current source tarball is here:
> :
> : http://people.freebsd.org/~jkim/x86bios-20091015.tar.bz2
> :
> : Especially, please see the code around #ifdef X86BIOS_COMPAT_ARCH.
> : Basically, mapping I/O ports and orm(4) is missing.  We don't have  
> to
> : implement I/O ports but orm(4) vs. bus_space(9) is critical to make
> : it a reality.  Please consider it as a real practical example for
> : orm, not just a blackhole driver. :-)
>
> I thought that most video cards had I/O ports as well as video RAM
> that needed to be mapped...  Am I crazy?

It depends on the platform. On an Itanium machine I have the
VGA frame buffer is at physical address 0xA0000-0xC0000. The
only requirement is that you use non-cached I/O, otherwise
you get a machine check. This can mean a non-identity mapping
or not. It all depends...

I/O ports don't exist and there's a memory region for generating
I/O port accesses, but the translation is not linear, so you
can't work with a single base and port offset to get this to work.
See ia64_ioport_address() in sys/ia64/ia64/machdep.c

-- 
Marcel Moolenaar
xcllnt at mac.com





More information about the freebsd-arch mailing list