Move the cpu_setup() call to the end of initarm(). On Cortex-A53 processors
authorkettenis <kettenis@openbsd.org>
Mon, 8 Aug 2016 19:27:12 +0000 (19:27 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 8 Aug 2016 19:27:12 +0000 (19:27 +0000)
commit0bf51c1ef61c78ea847cef82ae86bab1d5d8d5bc
treea4251779def19dce45a202e7115567edaa484b45
parentc2deda14b56fc3e94aea7620bf768ee78279af0d
Move the cpu_setup() call to the end of initarm().  On Cortex-A53 processors
atomic instructions don't work unless the data cache is enabled.  This happens
in cpu_setup(), but that gets currently called from cpu_startup() which runs
after a number of kernel subsystems have been initialized.  Since some of
these subsystems use locks, which need atomic instructions, we fault on
Cortex-A53.  Since at the end of initarm() we're done setting up the pmap
and initializing other low-level sense, calling cpu_setup() here makes much
more sense.

Remove setting up proc0paddr as well from cpu_startup(), since that already
happens in initarm().

Tested on zaurus by deraadt@.

ok jsg@, patrick@
sys/arch/arm/arm/arm32_machdep.c
sys/arch/armish/armish/armish_machdep.c
sys/arch/armv7/armv7/armv7_machdep.c
sys/arch/zaurus/zaurus/zaurus_machdep.c