dslinux/linux-2.6.x/drivers/mmc scsd_c.c scsd_s.S

Amadeus amadeus at iksw-muees.de
Tue Aug 29 08:09:56 CEST 2006


On Tuesday 29 August 2006 06:49, Chris McCormick wrote:
> And if you must insist on coding in assembler you should do extensive
> profiling against the code that gcc generates, as in most cases it
> will produce much better optimised assembler than what you can write
> by hand.

I do not insist. I want to do the best solution possible, and if that 
means coding in HEX, I will do it.

Your statement is heard often. But I think, it's not true for small 
loops, because in assembler, you can do a better register layout and 
arrangement of instructions as the ARM C code generator can do.
Look at the assembler code parts in scsd_s.S, and you know what I mean. 
Per example, there is no way to tell gcc "the lower bits of that IO 
address are invalid, so you can use LDMI/STMI to read/write multiple 
data at once". 

I have read *many* lines of gcc ARM assembler output while making the 
8bit modification to gcc.

We're back to the times when men were men 
and wrote their own device drivers.

(Linus Torvalds)

More information about the dslinux-devel mailing list