]> git.proxmox.com Git - mirror_edk2.git/commit
ArmPkg/ArmLib: fix barriers in AArch64 ArmEnableMmu
authorMark Rutland <mark.rutland@arm.com>
Mon, 9 Nov 2015 13:25:12 +0000 (13:25 +0000)
committerabiesheuvel <abiesheuvel@Edk2>
Mon, 9 Nov 2015 13:25:12 +0000 (13:25 +0000)
commitee95f9e1faf0158db6ba517ab500779242b68163
tree919cee89dc2b6befc6ddfaff258f649ff9286bfa
parentf3e88737f78135f70a5bb79283e40b829bdb02dd
ArmPkg/ArmLib: fix barriers in AArch64 ArmEnableMmu

The ARM architecture requires a DSB to complete TLB maintenance, with a
subsequent ISB being required to synchronize subsequent items in the
current instruction stream against the completed TLB maintenance.

The ArmEnableMmu function is currently missing the DSB, and hence the
TLB maintenance is not guaranteed to have completed at the point the MMU
is enabled. This may result in unpredictable behaviour.

The DSB subsequent to the write to SCTLR_EL1 is unnecessary; the ISB
alone is sufficient to complete all prior instructions and to
synchronise the new context with any subsequent instructions.

This patch adds missing DSBs to complete TLB maintenance, and removes
the unnecessary trailing DSB.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18749 6f19259b-4bc3-4df7-8a09-765794883524
ArmPkg/Library/ArmLib/AArch64/AArch64Support.S