Date: Wed, 30 Dec 2009 18:15:25 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/conf files.ia64 src/sys/ia64/ia64 bus_machdep.c machdep.c mp_machdep.c nexus.c sys_machdep.c src/sys/ia64/include bus.h cpufunc.h Message-ID: <200912301816.nBUIGLb1016647@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
marcel 2009-12-30 18:15:25 UTC FreeBSD src repository Modified files: sys/conf files.ia64 sys/ia64/ia64 machdep.c mp_machdep.c nexus.c sys_machdep.c sys/ia64/include bus.h cpufunc.h Added files: sys/ia64/ia64 bus_machdep.c Log: SVN rev 201269 on 2009-12-30 18:15:25Z by marcel Revamp bus_space access functions: o Optimize for memory mapped I/O by making all I/O port acceses function calls and marking the test for the IA64_BUS_SPACE_IO tag with __predict_false(). Implement the I/O port access functions in a new file, called bus_machdep.c. o Change the bus_space_handle_t for memory mapped I/O to the virtual address rather than the physical address. This eliminates the PA->VA translation for every I/O access. The handle for I/O port access is still the port number. o Move inb(), outb(), inw(), outw(), inl(), outl(), and their string variants from cpufunc.h and define them in bus.h. On ia64 these are not CPU functions at all. In bus.h they are merely aliases for the new I/O port access functions defined in bus_machdep.h. o Handle the ACPI resource bug in nexus_set_resource(). There we can do it once so that we don't have to worry about it whenever we need to write to an I/O port that is really a memory mapped address. The upshot of this change is that the KBI is better defined and that I/O port access always involves a function call, allowing us to change the actual implementation without breaking the KBI. For memory mapped I/O the virtual address is abstracted, so that we can change the VA->PA mapping in the kernel without causing an KBI breakage. The exception at this time is for bus_space_map() and bus_space_unmap(). MFC after: 1 week. Revision Changes Path 1.103 +1 -0 src/sys/conf/files.ia64 1.1 +356 -0 src/sys/ia64/ia64/bus_machdep.c (new) 1.253 +0 -10 src/sys/ia64/ia64/machdep.c 1.78 +1 -1 src/sys/ia64/ia64/mp_machdep.c 1.22 +25 -12 src/sys/ia64/ia64/nexus.c 1.9 +1 -0 src/sys/ia64/ia64/sys_machdep.c 1.24 +399 -388 src/sys/ia64/include/bus.h 1.26 +0 -120 src/sys/ia64/include/cpufunc.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912301816.nBUIGLb1016647>