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
WIP_v2.3-LS
master
v2.2-LS
v2.4-LS
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.3
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.2
v2.1-rc1
v2.1-rc0
v2.1
v2.0-rc0
v2.0
v1.6-rc1
v1.6-rc0
v1.6
v1.5-rc3
v1.5-rc2
v1.5-rc1
v1.5-rc0
v1.5
v1.4-rc0
v1.4
v1.3_rc2
v1.3_rc1
v1.3-rc0
v1.3
v1.2-rc0
v1.2
v1.1-rc3
v1.1-rc2
v1.1-rc1
v1.1-rc0
v1.1-Juno-0.1
v1.1
v1.0-rc0
v1.0
v0.4-rc2
v0.4-rc1
v0.4-Juno-0.6-rc1
v0.4-Juno-0.6-rc0
v0.4-Juno-0.5-rc1
v0.4-Juno-0.5-rc0
v0.4-Juno-0.5
v0.4-Juno-0.4-rc0
v0.4-Juno-0.4
v0.4
for-v0.4/05.22
for-v0.4/05.21
for-v0.4/05.20
for-v0.4-rc0
|
---|
|
bl1/aarch64/bl1_arch_setup.c |
---|
bl1/aarch64/bl1_entrypoint.S |
---|
bl1/aarch64/bl1_exceptions.S |
---|
bl2/aarch64/bl2_entrypoint.S |
---|
bl31/aarch64/bl31_entrypoint.S |
---|
bl31/bl31_main.c |
---|
drivers/arm/gic/aarch64/gic_v3_sysregs.S |
---|
lib/aarch64/cache_helpers.S |
---|
lib/aarch64/cpu_helpers.S |
---|
lib/aarch64/misc_helpers.S |
---|
lib/aarch64/sysreg_helpers.S |
---|
lib/aarch64/tlb_helpers.S |
---|
plat/fvp/aarch64/plat_common.c |
---|
plat/fvp/plat_gic.c |
---|
plat/fvp/plat_pm.c |
---|
services/std_svc/psci/psci_afflvl_off.c |
---|
services/std_svc/psci/psci_afflvl_suspend.c |
---|
services/std_svc/psci/psci_entry.S |
---|