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