aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorben@fluff.org.uk <ben@fluff.org.uk>2008-10-15 00:17:18 +0100
committerPierre Ossman <drzeus@drzeus.cx>2008-10-15 18:05:48 +0200
commit18280fff663b8ba57e349a81b999604bc1106926 (patch)
tree4b81883aacc8de3f4febb6aae51b03e81c1b3156 /block
parent088a78af978d0c8e339071a9b2bca1f4cb368f30 (diff)
downloadkernel_goldelico_gta04-18280fff663b8ba57e349a81b999604bc1106926.zip
kernel_goldelico_gta04-18280fff663b8ba57e349a81b999604bc1106926.tar.gz
kernel_goldelico_gta04-18280fff663b8ba57e349a81b999604bc1106926.tar.bz2
s3cmci: fix continual accesses to host->pio_ptr
The s3cmci driver uses the host->pio_ptr field to point to the current position into the buffer for data transfer. During the transfers it does the following: while (fifo_words--) *(host->pio_ptr++) = readl(from_ptr); This is inefficent, as host->pio_ptr is not used in any other part of the transfer but the compiler emits code which does the following: while (fifo_words--) { u32 *ptr = host->pio_ptr; *ptr = readl(from_ptr); ptr++; host->pio_ptr = ptr; } This is obviously a waste of a load and store each time around the loop, which could be up to 16 times depending on how much needs to be transfered. Move the ptr accesses to outside the while loop so that we do not end up reloading/re-writing the pointer. Note, this seems to make the code 16 bytes larger. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions