diff options
author | Pascal Brand <pascal.brand@st.com> | 2015-01-30 13:49:36 +0100 |
---|---|---|
committer | Pascal Brand <pascal.brand@st.com> | 2015-01-30 14:53:48 +0100 |
commit | c643dd49f5ae7b98f8d0a32beb3372d3740a1295 (patch) | |
tree | 469e83fbfa6006c6d3441ef297bba5977e650486 | |
parent | 089f125c5a68454264949e74bd08b993930d9b19 (diff) |
[plat-stm] cache_maintenance_l2() performed on given area
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>
-rw-r--r-- | core/arch/arm32/plat-stm/cache_maintenance.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/core/arch/arm32/plat-stm/cache_maintenance.c b/core/arch/arm32/plat-stm/cache_maintenance.c index 4ab7a3d..e71b93f 100644 --- a/core/arch/arm32/plat-stm/cache_maintenance.c +++ b/core/arch/arm32/plat-stm/cache_maintenance.c @@ -29,8 +29,7 @@ #include <mm/core_mmu.h> #include <kernel/tz_ssvce_pl310.h> -unsigned int cache_maintenance_l2(int op __unused, - paddr_t pa __unused, size_t len __unused) +unsigned int cache_maintenance_l2(int op, paddr_t pa, size_t len) { unsigned int ret = TEE_SUCCESS; @@ -41,19 +40,22 @@ unsigned int cache_maintenance_l2(int op __unused, arm_cl2_invbyway(); break; case L2CACHE_AREA_INVALIDATE: - arm_cl2_invbyway(); + if (len) + arm_cl2_invbypa(pa, pa + len - 1); break; case L2CACHE_CLEAN: arm_cl2_cleanbyway(); break; case L2CACHE_AREA_CLEAN: - arm_cl2_cleanbyway(); + if (len) + arm_cl2_cleanbypa(pa, pa + len - 1); break; case L2CACHE_CLEAN_INV: arm_cl2_cleaninvbyway(); break; case L2CACHE_AREA_CLEAN_INV: - arm_cl2_cleaninvbyway(); + if (len) + arm_cl2_cleaninvbypa(pa, pa + len - 1); break; default: ret = TEE_ERROR_NOT_IMPLEMENTED; |