linux/arch
Michael Hennerich 5c91fb902d Blackfin arch: Add assembly function insl_16
/*
 * CPUs often take a performance hit when accessing unaligned memory
 * locations. The actual performance hit varies, it can be small if the
 * hardware handles it or large if we have to take an exception and fix
 * it
 * in software.
 *
 * Since an ethernet header is 14 bytes network drivers often end up
 * with
 * the IP header at an unaligned offset. The IP header can be aligned by
 * shifting the start of the packet by 2 bytes. Drivers should do this
 * with:
 *
 * skb_reserve(NET_IP_ALIGN);
 *
 * The downside to this alignment of the IP header is that the DMA is
 * now
 * unaligned. On some architectures the cost of an unaligned DMA is high
 * and this cost outweighs the gains made by aligning the IP header.
 *
 * Since this trade off varies between architectures, we allow
 * NET_IP_ALIGN
 * to be overridden.
 */

This new function insl_16 allows to read form 32-bit IO and writes to
16-bit aligned memory. This is useful in above described scenario -
In particular with the AXIS AX88180 Gigabit Ethernet MAC.
Once the device is in 32-bit mode, reads from the RX FIFO always
decrements 4bytes.
While on the other side the destination address in SDRAM is always
16-bit aligned.
If we use skb_reserve(0) the receive buffer is 32-bit aligned but later
we hit a unaligned exception in the IP code.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
2007-11-17 23:46:58 +08:00
..
alpha alpha: sg_virt() fallout 2007-10-23 12:31:05 +02:00
arm Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-11-16 18:32:08 -08:00
avr32 [AVR32] Export intc_get_pending symbol 2007-11-15 13:47:20 +01:00
blackfin Blackfin arch: Add assembly function insl_16 2007-11-17 23:46:58 +08:00
cris CRISv10 fasttimer: Scrap INLINE and name timeval_cmp better 2007-11-14 18:45:47 -08:00
frv FRV: Remove the section annotation on free_initmem() 2007-11-09 15:02:25 -08:00
h8300 Kbuild/doc: fix links to Documentation files 2007-10-30 14:26:30 -07:00
ia64 Add IORESOUCE_BUSY flag for System RAM 2007-11-14 18:45:39 -08:00
m32r spelling fixes: arch/m32r/ 2007-10-20 01:14:39 +02:00
m68k m68k: sg fallout 2007-10-24 08:55:40 +02:00
m68knommu m68knommu: mark mem init functions as __init 2007-10-23 20:45:44 -07:00
mips [MIPS] N32 needs to use the compat version of sys_nfsservctl. 2007-11-15 23:21:52 +00:00
parisc parisc: fix sg_page() fallout 2007-10-23 09:49:31 +02:00
powerpc [POWERPC] Silence an annoying boot message 2007-11-13 16:23:47 +11:00
ppc [POWERPC] Avoid unpaired stwcx. on some processors 2007-11-13 16:22:43 +11:00
s390 sched: restore deterministic CPU accounting on powerpc 2007-11-09 22:39:38 +01:00
sh Merge branch 'page_colouring_despair' 2007-11-08 17:01:42 +09:00
sh64 sh64: Kill off duplicate includes. 2007-11-05 12:18:17 +09:00
sparc [SPARC]: Remove duplicate includes. 2007-11-06 21:23:11 -08:00
sparc64 [SPARC]: Remove duplicate includes. 2007-11-06 21:23:11 -08:00
um uml: fix build for !CONFIG_PRINTK 2007-11-14 18:45:43 -08:00
v850 spelling fixes: arch/v850/ 2007-10-20 01:24:05 +02:00
x86 x86: simplify "make ARCH=x86" and fix kconfig all.config 2007-11-17 17:21:54 +01:00
xtensa Kbuild/doc: fix links to Documentation files 2007-10-30 14:26:30 -07:00