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.
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to