summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
diff options
context:
space:
mode:
authorÉric Tremblay <e.tremblay@axis-canada.com>2018-03-20 14:14:39 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-03-20 14:18:45 +0100
commit5cf06565149c8cab4c9437e44f1acfda93bdaa55 (patch)
treedd7492d467fa3b396ba79dd8b22d907c0064b807 /c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
parentbsp/qoriq: Fix bsp_restart() (diff)
downloadrtems-5cf06565149c8cab4c9437e44f1acfda93bdaa55.tar.bz2
bsps/powerpc: Support more than 256MiB of RAM
Close #3322.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/startup/bspstart.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
index 5a97cc8531..dac4b2452d 100644
--- a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
@@ -300,6 +300,24 @@ void bsp_start( void )
*/
_BSP_clear_hostbridge_errors(0 /* enableMCP */, 0/*quiet*/);
+ if (BSP_mem_size > 0x10000000)
+ {
+ /* Support cases of system memory size larger than 256Mb.
+ *
+ * We use BAT3 in order to obtain access to the top section of the RAM.
+ * We also need to do this just before setting up the page table because
+ * this is where the page table will be located.
+ */
+ const unsigned int mem256Count = (BSP_mem_size / 0x10000000);
+ const unsigned int BAT3Addr = ((BSP_mem_size % 0x10000000) ?
+ (mem256Count * 0x10000000) :
+ ((mem256Count-1) * 0x10000000));
+ setdbat(3, BAT3Addr, BAT3Addr, 0x10000000, IO_PAGE);
+#ifdef SHOW_MORE_INIT_SETTINGS
+ printk("Setting up BAT3 for large memory support. (BAT3 --> 0x%x)\n", BAT3Addr);
+#endif
+ }
+
/* Allocate and set up the page table mappings
* This is only available on >604 CPUs.
*