linux-kernel-test/arch/blackfin
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
..
boot Blackfin arch: add a cheesy install target 2007-10-22 00:45:55 +08:00
configs Blackfin arch: Default config for HV Sistemas H8606 board 2007-11-15 15:45:33 +08:00
kernel Blackfin arch: Add assembly function insl_16 2007-11-17 23:46:58 +08:00
lib Blackfin arch: Add assembly function insl_16 2007-11-17 23:46:58 +08:00
mach-bf527 Blackfin arch: Dont use cs_change_per_word, since the AD7877 driver doesnt require it anymore; fix bus numbers, fix typos 2007-11-15 21:33:31 +08:00
mach-bf533 Blackfin arch: Typo: "CONFIG_RTC_BFIN_MODULE" -> "CONFIG_RTC_DRV_BFIN_MODULE" 2007-11-17 22:57:03 +08:00
mach-bf537 Blackfin arch: Dont use cs_change_per_word, since the AD7877 driver doesnt require it anymore; fix bus numbers, fix typos 2007-11-15 21:33:31 +08:00
mach-bf548 Blackfin arch: Dont use cs_change_per_word, since the AD7877 driver doesnt require it anymore; fix bus numbers, fix typos 2007-11-15 21:33:31 +08:00
mach-bf561 Blackfin arch: relocate linux/usb_isp1362.h to linux/usb/isp1362.h like in newer linux trees 2007-11-15 21:29:15 +08:00
mach-common Blackfin arch: fix spurious newline in header 2007-11-17 23:24:07 +08:00
mm Blackfin arch: do not include linux/autoconf.h 2007-11-15 21:22:53 +08:00
oprofile Combine instrumentation menus in kernel/Kconfig.instrumentation 2007-10-19 11:53:54 -07:00
Kconfig Blackfin arch: remove useless CONFIG_IRQCHIP_DEMUX_GPIO 2007-11-15 21:12:32 +08:00
Kconfig.debug Blackfin arch: split debug stuff off into Kconfig.debug like everyone else 2007-11-21 23:50:49 +08:00
Makefile Blackfin arch: add BF547 to list of accepted procs 2007-11-15 21:10:21 +08:00