Optimise data cache clean/invalidate operation
authorAndrew Thoelke <andrew.thoelke@arm.com>
Fri, 25 Apr 2014 09:49:30 +0000 (10:49 +0100)
committerAndrew Thoelke <andrew.thoelke@arm.com>
Wed, 7 May 2014 10:32:25 +0000 (11:32 +0100)
commit5f6032a8206bb88655367f96cc1270525bed9e48
treeaca93bb3c4778253a238bc41b603a8760aee9783
parente404d7f44a190b82332bb96daffa0c6239732218
Optimise data cache clean/invalidate operation

The data cache clean and invalidate operations dcsw_op_all()
and dcsw_op_loius() were implemented to invoke a DSB and ISB
barrier for every set/way operation. This adds a substantial
performance penalty to an already expensive operation.

These functions have been reworked to provide an optimised
implementation derived from the code in section D3.4 of the
ARMv8 ARM. The helper macro setup_dcsw_op_args has been moved
and reworked alongside the implementation.

Fixes ARM-software/tf-issues#146

Change-Id: Icd5df57816a83f0a842fce935320a369f7465c7f
include/common/asm_macros.S
lib/aarch64/cache_helpers.S