linux/arch/blackfin/mach-common
Mike Frysinger eed7b83658 Blackfin: dpmc: optimize hibernate/resume path
The current save logic used in hibernation is to do a MMR load (base +
offset) into a register, and then push that onto the stack.  Then when
restoring, pop off the stack into a register followed by a MMR store
(base + offset).  These use plenty of 32bit insns rather than 16bit,
are pretty long winded, and full of pipeline bubbles.

So, by taking advantage of MMRs that are contiguous, the multi-register
push/pop insn, and register abuse, we can shrink this code considerably.

When saving, the new logic does a lot of loads into the data and pointer
registers before executing a single multi-register push insn.  Then when
restoring, we do a single multi-register pop insn followed by a lot of
stores.  Overall, this allows us to cut the insn count by ~30%, the code
size by ~45%, and drastically reduce the register hazards that trigger
bubbles in the pipeline.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:29 -04:00
..
Makefile Blackfin: drop unused irq_panic()/DEBUG_ICACHE_CHECK 2010-10-25 17:24:00 -04:00
arch_checks.c Blackfin: split optimization settings more 2011-03-18 04:01:03 -04:00
cache-c.c Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
cache.S Blackfin: SMP: work around anomaly 05000491 2011-03-18 04:01:04 -04:00
clocks-init.c Blackfin: pull in asm/dpmc.h for power defines 2009-12-15 00:14:50 -05:00
cpufreq.c Blackfin: cpufreq: fix typos 2011-03-18 04:01:10 -04:00
dpmc.c Blackfin: convert old cpumask API to new one 2011-05-25 08:24:11 -04:00
dpmc_modes.S Blackfin: dpmc: optimize hibernate/resume path 2011-07-23 01:18:29 -04:00
entry.S Blackfin: wire up new sendmmsg syscall 2011-05-28 17:02:55 -04:00
head.S Blackfin: optimize double fault boot checking 2011-07-23 01:10:43 -04:00
interrupt.S Blackfin/ipipe: fix deferred pipeline sync for the root stage 2011-03-18 04:01:11 -04:00
ints-priority.c Blackfin: gpio/ints: generalize pint logic 2011-07-23 01:18:27 -04:00
pm.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
smp.c Blackfin: optimize double fault boot checking 2011-07-23 01:10:43 -04:00