Correct usage of data and instruction barriers
The current code does not always use data and instruction
barriers as required by the architecture and frequently uses
barriers excessively due to their inclusion in all of the
write_*() helper functions.

Barriers should be used explicitly in assembler or C code
when modifying processor state that requires the barriers in
order to enable review of correctness of the code.

This patch removes the barriers from the helper functions and
introduces them as necessary elsewhere in the code.

PORTING NOTE: check any port of Trusted Firmware for use of
system register helper functions for reliance on the previous
barrier behaviour and add explicit barriers as necessary.

Fixes ARM-software/tf-issues#92

Change-Id: Ie63e187404ff10e0bdcb39292dd9066cb84c53bf
1 parent e404d7f commit 8cec598ba3b689b86d9dfc58bca5610bdc48f55a
@Andrew Thoelke Andrew Thoelke authored on 28 Apr 2014
Showing 18 changed files
View
bl1/aarch64/bl1_arch_setup.c
View
bl1/aarch64/bl1_entrypoint.S
View
bl1/aarch64/bl1_exceptions.S
View
bl2/aarch64/bl2_entrypoint.S
View
bl31/aarch64/bl31_entrypoint.S
View
bl31/bl31_main.c
View
drivers/arm/gic/aarch64/gic_v3_sysregs.S
View
lib/aarch64/cache_helpers.S
View
lib/aarch64/cpu_helpers.S
View
lib/aarch64/misc_helpers.S
View
lib/aarch64/sysreg_helpers.S
View
lib/aarch64/tlb_helpers.S
View
plat/fvp/aarch64/plat_common.c
View
plat/fvp/plat_gic.c
View
plat/fvp/plat_pm.c
View
services/std_svc/psci/psci_afflvl_off.c
View
services/std_svc/psci/psci_afflvl_suspend.c
View
services/std_svc/psci/psci_entry.S