ARM: Factor out common code from cpu_proc_fin()

All implementations of cpu_proc_fin() start by disabling interrupts
and then flush caches.  Rather than have every processors proc_fin()
implementation do this, move it out into generic code - and move the
cache flush past setup_mm_for_reboot() (so it can benefit from having
caches still enabled.)

This allows cpu_proc_fin() to become independent of the L1/L2 cache
types, and eventually move the L2 cache flushing into the L2 support
code.

Change-Id: Ieb4bf1e2b0c9d96ad86f8b3b4709704e8a2b8e89
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>