diff options
author | Markus Niebel <Markus.Niebel@tqs.de> | 2013-10-04 15:48:03 +0200 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-10-14 16:06:52 -0400 |
commit | 452a2722ecee9ed9644d6fc7c8d570d725cfdb82 (patch) | |
tree | 6129e0bcb27a7f062b81baaef57f15d17a3fa2e0 | |
parent | cca2011e62289063066faee3cf8e3d74685be8fc (diff) | |
download | u-boot-imx-452a2722ecee9ed9644d6fc7c8d570d725cfdb82.zip u-boot-imx-452a2722ecee9ed9644d6fc7c8d570d725cfdb82.tar.gz u-boot-imx-452a2722ecee9ed9644d6fc7c8d570d725cfdb82.tar.bz2 |
env_mmc: fix buffer allocation for armv7
commit d196bd880347373237d73e0d115b4d51c68cf2ad adds
redundand environment to mmc. The usage of malloc in
env_relocate_spec triggers cache errors on armv7.
Tested on a not mainlined i.MX53 board:
Board: TQMa53
I2C: ready
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
ERROR: v7_dcache_inval_range - start address is not aligned - 0x8f57c2d8
ERROR: v7_dcache_inval_range - stop address is not aligned - 0x8f57e2d8
ERROR: v7_dcache_inval_range - start address is not aligned - 0x8f57e2e0
ERROR: v7_dcache_inval_range - stop address is not aligned - 0x8f5802e0
Using default environment
Signed-off-by: Markus Niebel <Markus.Niebel@tqs.de>
-rw-r--r-- | common/env_mmc.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/common/env_mmc.c b/common/env_mmc.c index 65aafa9..204d23b 100644 --- a/common/env_mmc.c +++ b/common/env_mmc.c @@ -192,11 +192,12 @@ void env_relocate_spec(void) u32 offset1, offset2; int read1_fail = 0, read2_fail = 0; int crc1_ok = 0, crc2_ok = 0; - env_t *ep, *tmp_env1, *tmp_env2; + env_t *ep; int ret; - tmp_env1 = (env_t *)malloc(CONFIG_ENV_SIZE); - tmp_env2 = (env_t *)malloc(CONFIG_ENV_SIZE); + ALLOC_CACHE_ALIGN_BUFFER(env_t, tmp_env1, 1); + ALLOC_CACHE_ALIGN_BUFFER(env_t, tmp_env2, 1); + if (tmp_env1 == NULL || tmp_env2 == NULL) { puts("Can't allocate buffers for environment\n"); ret = 1; @@ -266,8 +267,6 @@ err: if (ret) set_default_env(NULL); - free(tmp_env1); - free(tmp_env2); #endif } #else /* ! CONFIG_ENV_OFFSET_REDUND */ |