Date: Fri, 5 Oct 2012 12:08:45 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: Carl Delsey <carl.r.delsey@intel.com> Subject: Re: No bus_space_read_8 on x86 ? Message-ID: <201210051208.45550.jhb@freebsd.org> In-Reply-To: <506DC574.9010300@intel.com> References: <506DC574.9010300@intel.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, October 04, 2012 1:20:52 pm Carl Delsey wrote: > I noticed that the bus_space_*_8 functions are unimplemented for x86. > Looking at the code, it seems this is intentional. > > Is this done because on 32-bit systems we don't know, in the general > case, whether to read the upper or lower 32-bits first? > > If that's the reason, I was thinking we could provide two > implementations for i386: bus_space_read_8_upper_first and > bus_space_read_8_lower_first. For amd64 we would just have bus_space_read_8 > > Anybody who wants to use bus_space_read_8 in their file would do > something like: > #define BUS_SPACE_8_BYTES LOWER_FIRST > or > #define BUS_SPACE_8_BYTES UPPER_FIRST > whichever is appropriate for their hardware. > > This would go in their source file before including bus.h and we would > take care of mapping to the correct implementation. > > With the prevalence of 64-bit registers these days, if we don't provide > an implementation, I expect many drivers will end up rolling their own. > > If this seems like a good idea, I'll happily whip up a patch and submit it. I think cxgb* already have an implementation. For amd64 we should certainly have bus_space_*_8(), at least for SYS_RES_MEMORY. I think they should fail for SYS_RES_IOPORT. I don't think we can force a compile-time error though, would just have to return -1 on reads or some such? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210051208.45550.jhb>