Bartlomiej Zolnierkiewicz wrote:
Someone should fix hw_regs_t to neither be a typedef, nor use "unsigned long" where it should use "void __iomem *".
It cannot use pointers of course -- as the addresses can be I/O ports.
It could use the ioread*() calls, which take pointers and handle both types of I/O in a type-safe manner.
Probably they can... though using those would only slow down register access on x86.
... and cause code bloat due to switching to real function calls from inlines which now should render into in/out isns.
OTOH it would allow to unify a lot of 'if (hwif->host_flags & IDE_HFLAG_MMIO)' cases so the code may even shrink.
It won't shrink as much as it will grow.
I also suspect that register access slow down is most likely negligable (we can always measure and check it).
I'd agree here but code bloat won't be as negligible considering the IDE code's predominant use of I/O ports on x86.
The real reason for not using ioread*() and co. is that not all archs support them (though I checked some time ago, maybe they do now?) and we don't want to break IDE support for them.
Sure. :-)
Thanks, Bart
MBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html