Consider the following recommended guidelines when designing a multiprocessing system:
synchronize software execution on processors using
STREXto create a mutex or semaphore to protect critical sections and non-shareable resources
manage cache coherency for symmetrical and asymmetrical multiprocessing
execute repetitive tasks in separate threads
split a large task into several threads executing in parallel
set up a primary CPU using the CP15 CPU ID register for initialization tasks
use bit masking for interrupt pre-emption
configure the cycle counts that trigger a timer or watchdog.
These tasks are generally handled by an OS.