cvs commit: src/sys/ia64/ia64 mp_machdep.c src/sys/ia64/include
bus.h cpufunc.h
Marcel Moolenaar
marcel at FreeBSD.org
Tue Apr 29 02:50:04 PDT 2003
marcel 2003/04/29 02:50:03 PDT
FreeBSD src repository
Modified files:
sys/ia64/ia64 mp_machdep.c
sys/ia64/include bus.h cpufunc.h
Log:
Revamp the newbus functions:
o do not use the in* and out* functions. These functions are used by
legacy drivers and thus must have ia32 compatible behaviour. Hence,
they need to have fences. Using these functions for newbus would
then pessimize performance.
o remove the conditional compilation of PIO and/or MEMIO support. It's
a PITA without having any significant benefit. We always support them
both. Since there are no I/O ports on ia64 (they are simulated by the
chipset by translating memory mapped I/O to predefined uncacheable
memory regions) the only difference between PIO and MEMIO is in the
address calculation. There should be enough ILP that can be exploited
here that making these computations compile-time conditional is not
worth it. We now also don't use the read* and write* functions.
o Add the missing *_8 variants. They were missing, although not missed.
It's for completeness.
o Do not add the fences that were present in the low-level support
functions here. We're using uncacheable memory, which means that
accesses are in program order. Change the barrier implementation
to not only do a memory fence, but also an acceptance fence. This
should more reliably synchronize drivers with the hardware. The
memory fence enforces ordering, but does not imply visibility (ie
the access does not necessarily have happened). This is what the
acceptance deals with.
cpufunc.h cleanup:
o Remove the low-level memory mapped I/O support functions. They are
not used. Keep the low-level I/O port access functions for legacy
drivers and add fences to ensure ia32 compatibility.
o Remove the syscons specific functions now that we have moved the
proper definitions where they belong.
o Replace the ia64_port_address() and ia64_memory_address() functions
with macros. There's a bigger change inline functions get inlined
when there aren't function callsi and the calculations are simply
enough to do it with macros.
Replace the one reference to ia64_memory address in mp_machdep.c to
use the macro.
Revision Changes Path
1.46 +1 -2 src/sys/ia64/ia64/mp_machdep.c
1.10 +694 -939 src/sys/ia64/include/bus.h
1.16 +68 -155 src/sys/ia64/include/cpufunc.h
More information about the cvs-src
mailing list