linux/arch/blackfin/kernel
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
..
asm-offsets.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
bfin_dma_5xx.c Blackfin arch: dma add some API and cleanup bf54x DMA definition 2007-10-22 00:02:14 +08:00
bfin_gpio.c Blackfin arch: add new processor ADSP-BF52x arch/mach support 2007-10-21 16:54:27 +08:00
bfin_ksyms.c Blackfin arch: Add assembly function insl_16 2007-11-17 23:46:58 +08:00
cacheinit.c Blackfin arch: to do some consolidation of common code and common name spaces 2007-10-10 23:55:26 +08:00
cplbinit.c Blackfin arch: fix bug cplbmgr.S does not exit properly on error condition 2007-11-15 15:10:48 +08:00
dma-mapping.c blackfin: fix sg fallout 2007-10-24 14:09:25 +02:00
dualcore_test.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
early_printk.c Blackfin arch: Print out debug info, as early as possible 2007-10-09 17:31:46 +08:00
entry.S Blackfin arch: Fix random crash issue found by Michael. 2007-10-29 18:14:15 +08:00
fixed_code.S Blackfin arch: ensure that speculative loads of bad pointers don't cause us to do bad things. 2007-10-29 18:23:28 +08:00
flat.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
gptimers.c Blackfin arch: add support for checking/clearing overruns in generic purpose Timer API 2007-10-29 18:02:09 +08:00
init_task.c Blackfin arch: move the init sections to the end of memory to help decrease memory fragementation 2007-11-15 20:57:53 +08:00
irqchip.c Blackfin arch: allow people to select the feature that is unavailable to the kernel 2007-08-05 17:03:59 +08:00
kgdb.c Blackfin arch: kgdb specific code 2007-06-29 16:35:17 +08:00
Makefile Blackfin arch: cleanup and promote the general purpose timers api to a core blackfin component 2007-10-21 23:37:54 +08:00
module.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
process.c Blackfin arch: remove dump_thread() 2007-11-18 00:41:56 +08:00
ptrace.c Consolidate PTRACE_DETACH 2007-10-16 09:42:49 -07:00
reboot.c Blackfin arch: add new processor ADSP-BF52x arch/mach support 2007-10-21 16:54:27 +08:00
setup.c Blackfin arch: use do_div() for the 64bit division as pointed out by Bernd 2007-11-23 11:28:11 +08:00
signal.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
sys_bfin.c Blackfin arch: after removing fs.h from mm.h, fix the broken on Blackfin arch 2007-08-11 15:47:39 -07:00
time.c Blackfin arch: cleanup warnings from checkpatch -- no functional changes 2007-07-12 22:58:21 +08:00
traps.c Blackfin arch: fix bug cplbmgr.S does not exit properly on error condition 2007-11-15 15:10:48 +08:00
vmlinux.lds.S Blackfin arch: move the init sections to the end of memory to help decrease memory fragementation 2007-11-15 20:57:53 +08:00