Maciej W. Rozycki wrote:
Of course it will. It shall work with whatever physical address space is
supported by your MMU. As long as the MMU is handled correctly that is,
but I guess I may have omitted this clarification as obvious.
Even on a CPU with 36-bit physical address? ;-)
WTF... I know I've typed "32-bit CPU"! :-/
It does not matter. The physical address of an I/O resource can be
Believe me, it does in *this* case. :-)
treated as a cookie that is converted, typically though an MMU, to another
cookie that can be used with {read,write}{b,w,l}(). Of course you may
have troubles ioremap()ping say 4GB of I/O space on a processor with a
32-bit virtual address space, but that is a corner case and typically your
I/O space will be sparsely occupied.
It is exactly this case.
On a MIPS32 processor you have 512MB of KSEG0/1 unmapped virtual address
space available for I/O devices located within the first 512MB of the
PCI config. space is mapped at 0x600000000, well beyond KGSEG0/1.
physical address space plus 1GB of KSEG2 mapped virtual address space
available for I/O devices located anywhere in the physical address space.
That gives you from 1GB to 1.5GB of virtual address space for I/O which is
enough for all the usual cases.
This case is not usual. :-)
Maciej
Thanks for wasting time on my education about MIPS. ;-)
WBR, Sergei
|