On 03/13/2015 02:09 PM, Russell King - ARM Linux wrote: > On Fri, Mar 13, 2015 at 02:02:49PM -0400, Peter Hurley wrote: >> On 03/13/2015 01:46 PM, Russell King - ARM Linux wrote: >>> On Fri, Mar 13, 2015 at 01:41:02PM -0400, Peter Hurley wrote: >>>> I think this would be much cleaner keeping the existing register index >>>> symbolic constants and using a remapping LUT with inline i/o accessors. >>>> >>>> Plus it has the advantage of disallowing certain indexes which are not >>>> mapped (rather than an accidental alias). >>>> >>>> I realize that was not the original model set forth but I don't think >>>> the original model contemplated a complete remap. >>> >>> In that case, we will want to ensure that we cache the data register >>> and flag register iomem pointer in loops, so we don't have to >>> constantly reload the base and offsets. >>> >>> This code gets run on some fairly slow ARM systems - including entirely >>> FPGA based systems. >> >> I would the think the compiler would factor ptr calculations outside >> any loop, but maybe not. > > It can't. IO accessors tend to have barriers, possibly calling out > to functions, and the barriers force the compiler to reload almost > everything which is not in a local variable. Oh, yeah right. Thanks for the reminder. > (Note that none of the accessors in amba-pl011.c needs to have these > barriers, and the driver probably should've been converted to the > relaxed accessors when they were merged.) -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html