
Dear Måns Rullgård,
In message yw1xfvnpaclm.fsf@unicorn.mansr.com you wrote:
With application code you don't really care whether a variable is read/written in one piece or broken down into several smaller reads/writes - except when you notice that performance suffers.
When accessing hardware, it often makes a fundamental difference whether you access a device register with it's correct size or not. Usually breaking down an access into smaller ones results in crashes or incorrect data or other errors.
I'm well aware of this, but it has nothing to do with the issue at hand.
This is by your definition, or based on which exact rationale?
Device registers are always aligned. In properly written code these are accessed using pointers the compiler knows to be aligned and thus does the right thing.
Maybe the device registers you have seen so far have always been perfectly aligned. Lucky you. Note that there are a number of designs around (that I do not hesitate to call broken) which have such properties. And when we include external hardware into the discussion like PCI attached devices or customer-designed FPGAs, it becomes even more "interesting".
I think we can stop the discussion here (at least I will do that now). I haven't seen any new arguments coming up.
Best regards,
Wolfgang Denk