aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2012-11-30 13:01:15 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2013-01-10 22:21:32 +0100
commit724cdffca179057f4ebdf413ad764ea70b0e8ed2 (patch)
treea6206d7fa4898dd86411448c3ee0304919bfaa3d
parent44df5e8d30a276985b40bb32a69584f5a7fac9a0 (diff)
downloadu-boot-linaro-stable-724cdffca179057f4ebdf413ad764ea70b0e8ed2.tar.gz
arm: Keep track of the tlb size as well as its location
It may be necessary to know where the TLB area ends as well as where it starts. This allows board code to complete a secure memory erase without destroying the page tables. Signed-off-by: Gabe Black <gabeblack@google.com> Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--arch/arm/include/asm/global_data.h1
-rw-r--r--arch/arm/lib/board.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h
index 2b9af9380..41a26edfb 100644
--- a/arch/arm/include/asm/global_data.h
+++ b/arch/arm/include/asm/global_data.h
@@ -73,6 +73,7 @@ typedef struct global_data {
unsigned long reloc_off;
#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
unsigned long tlb_addr;
+ unsigned long tlb_size;
#endif
const void *fdt_blob; /* Our device tree, NULL if none */
void **jt; /* jump table */
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index 0459d0ce9..c214bba88 100644
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -348,13 +348,14 @@ void board_init_f(ulong bootflag)
#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
/* reserve TLB table */
- addr -= (4096 * 4);
+ gd->tlb_size = 4096 * 4;
+ addr -= gd->tlb_size;
/* round down to next 64 kB limit */
addr &= ~(0x10000 - 1);
gd->tlb_addr = addr;
- debug("TLB table at: %08lx\n", addr);
+ debug("TLB table from %08lx to %08lx\n", addr, addr + gd->tlb_size);
#endif
/* round down to next 4 kB limit */