(read|write)[bwl]

From: Matthew Wilcox (matthew@wil.cx)
Date: Thu Mar 01 2001 - 12:54:22 MST


right now we do rsm / foo / mtsm in order to read/write gsc space.
the rsm/mtsm turns off address translation. this is cripplingly slow
on PA8x00 series processors.

proposal 1:

leave gsc_* macros alone. people can continue to use these if they want.
they should be aware these are slow though.

stop aliasing (read,write)[bwl] to the gsc_* variants. they should
just dereference the address passed to them.

write an ioremap() function which provides a logical map to that area
of address space.

proposal 2:

direct-map the entire 0xfxxx'xxxx address space into the kernel's address
space. ioremap becomes a NOP, gsc_* go away and (read,write)[bwl] become
as trivial as before.

i suspect we want proposal 1 on PA1.1 and proposal 2 on PA2.0. This leads
to proposal 3 which should allow modules to work for either architecture:

gsc_* stay as calls to _gsc_*, (read,write)[bwl] become the direct memory
dereferences. ioremap is a function call. On PA2.0, the gsc space is
permanently mapped, the ioremap function does nothing and _gsc_* don't
mess with the system mask. On PA1.1, we construct page table entries
for the io area upon calls to ioremap, and _gsc_* still mess with the
system mask.

Suggestions?

-- 
Revolutions do not require corporate support.


List: parisc-linux@lists.parisc-linux.org