From 731de133478bba8acf4b64ea9951132592147011 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 15 Sep 2014 16:04:42 -0600 Subject: [PATCH] Partial fix to an cache cleaning problem --- arch/arm/src/armv7-a/arm_addrenv.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/arm/src/armv7-a/arm_addrenv.c b/arch/arm/src/armv7-a/arm_addrenv.c index d1ff06c526..742d08e344 100644 --- a/arch/arm/src/armv7-a/arm_addrenv.c +++ b/arch/arm/src/armv7-a/arm_addrenv.c @@ -664,7 +664,11 @@ int up_addrenv_coherent(FAR const group_addrenv_t *addrenv) cp15_invalidate_icache(); - /* Clean D-Cache in each region. */ + /* Clean D-Cache in each region. + * REVISIT: Cause crashes when trying to clean unmapped memory. In order + * for this to work, we need to know the exact size of each region (as we + * do now for the heap region). + */ #warning REVISIT... causes crashes #if 0 @@ -675,12 +679,11 @@ int up_addrenv_coherent(FAR const group_addrenv_t *addrenv) arch_clean_dcache(CONFIG_ARCH_DATA_VBASE, CONFIG_ARCH_DATA_VBASE + CONFIG_ARCH_DATA_NPAGES * MM_PGSIZE - 1); - -#if 0 /* Not yet implemented */ - arch_clean_dcache(CONFIG_ARCH_HEAP_VBASE, - CONFIG_ARCH_HEAP_VBASE + - CONFIG_ARCH_HEAP_NPAGES * MM_PGSIZE - 1); #endif + +#ifdef CONFIG_BUILD_KERNEL + arch_clean_dcache(CONFIG_ARCH_HEAP_VBASE, + CONFIG_ARCH_HEAP_VBASE + addrenv->heapsize); #endif return OK;