summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-10-06 16:46:36 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-10-06 16:46:36 +0000
commit48449a87138c3a6b1d6aff0a7ca7f80058e36010 (patch)
tree2131c2598a0a832989d222fc4e2426db5a64116c /c
parent2011-10-06 Gedare Bloom <giddyup44@yahoo.com> (diff)
downloadrtems-48449a87138c3a6b1d6aff0a7ca7f80058e36010.tar.bz2
2011-10-06 Gedare Bloom <giddyup44@yahoo.com>
PR 1920/bsp * shared/helenos/kernel/sparc64/src/sun4u/takemmu.S, shared/start/start.S, shared/startup/bspgetworkarea.c, shared/startup/linkcmds: Fix BSP memory use to support more than 4 MB of RAM.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/sparc64/ChangeLog8
-rw-r--r--c/src/lib/libbsp/sparc64/shared/helenos/kernel/sparc64/src/sun4u/takemmu.S38
-rw-r--r--c/src/lib/libbsp/sparc64/shared/start/start.S7
-rw-r--r--c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c2
-rw-r--r--c/src/lib/libbsp/sparc64/shared/startup/linkcmds8
5 files changed, 51 insertions, 12 deletions
diff --git a/c/src/lib/libbsp/sparc64/ChangeLog b/c/src/lib/libbsp/sparc64/ChangeLog
index 3a8c2ec607..766a0dfc70 100644
--- a/c/src/lib/libbsp/sparc64/ChangeLog
+++ b/c/src/lib/libbsp/sparc64/ChangeLog
@@ -1,5 +1,13 @@
2011-10-06 Gedare Bloom <giddyup44@yahoo.com>
+ PR 1920/bsp
+ * shared/helenos/kernel/sparc64/src/sun4u/takemmu.S,
+ shared/start/start.S, shared/startup/bspgetworkarea.c,
+ shared/startup/linkcmds: Fix BSP memory use to support more than 4 MB
+ of RAM.
+
+2011-10-06 Gedare Bloom <giddyup44@yahoo.com>
+
PR 1919/bsp
* shared/startup/bsppredriverhook.c: New file.
diff --git a/c/src/lib/libbsp/sparc64/shared/helenos/kernel/sparc64/src/sun4u/takemmu.S b/c/src/lib/libbsp/sparc64/shared/helenos/kernel/sparc64/src/sun4u/takemmu.S
index 70aa3f1260..35fe1034bc 100644
--- a/c/src/lib/libbsp/sparc64/shared/helenos/kernel/sparc64/src/sun4u/takemmu.S
+++ b/c/src/lib/libbsp/sparc64/shared/helenos/kernel/sparc64/src/sun4u/takemmu.S
@@ -178,11 +178,11 @@ _take_mmu:
stxa %g0, [%g1] ASI_DMMU_DEMAP
membar #Sync
*/
-#define SET_TLB_TAG(r1, context) \
- set VMA | (context << TLB_TAG_ACCESS_CONTEXT_SHIFT), %r1
+#define SET_TLB_TAG(xVMA, r1, context) \
+ set xVMA | (context << TLB_TAG_ACCESS_CONTEXT_SHIFT), %r1
! write DTLB tag
- SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL)
+ SET_TLB_TAG(0x4000, g1, MEM_CONTEXT_KERNEL)
stxa %g1, [VA_DMMU_TAG_ACCESS] %asi
membar #Sync
@@ -271,7 +271,7 @@ _take_mmu:
flush %g5
*/
! write ITLB tag of context 0
- SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL)
+ SET_TLB_TAG(0x4000, g1, MEM_CONTEXT_KERNEL)
mov VA_DMMU_TAG_ACCESS, %g2
stxa %g1, [%g2] ASI_IMMU
flush %g5
@@ -280,6 +280,36 @@ _take_mmu:
SET_TLB_DATA(g1, g2, TTE_L) ! use non-global mapping
stxa %g1, [%g0] ASI_ITLB_DATA_IN_REG
flush %g5
+
+ ! GAB: add more mappings for dmmu in 4 MB chunks
+ SET_TLB_TAG(0x404000, g1, MEM_CONTEXT_KERNEL)
+ stxa %g1, [VA_DMMU_TAG_ACCESS] %asi
+ membar #Sync
+ set 0x400000, %g1
+ add %g1, %l5, %l5
+ SET_TLB_DATA(g1, g2, TTE_L | TTE_W)
+ stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG
+ membar #Sync
+
+ SET_TLB_TAG(0x804000, g1, MEM_CONTEXT_KERNEL)
+ stxa %g1, [VA_DMMU_TAG_ACCESS] %asi
+ membar #Sync
+ set 0x400000, %g1
+ add %g1, %l5, %l5
+ SET_TLB_DATA(g1, g2, TTE_L | TTE_W)
+ stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG
+ membar #Sync
+
+ SET_TLB_TAG(0xc04000, g1, MEM_CONTEXT_KERNEL)
+ stxa %g1, [VA_DMMU_TAG_ACCESS] %asi
+ membar #Sync
+ set 0x400000, %g1
+ add %g1, %l5, %l5
+ SET_TLB_DATA(g1, g2, TTE_L | TTE_W)
+ stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG
+ membar #Sync
+
+
/*
! enter nucleus - using context 0
wrpr %g0, 1, %tl
diff --git a/c/src/lib/libbsp/sparc64/shared/start/start.S b/c/src/lib/libbsp/sparc64/shared/start/start.S
index 0d660bae0d..f812885180 100644
--- a/c/src/lib/libbsp/sparc64/shared/start/start.S
+++ b/c/src/lib/libbsp/sparc64/shared/start/start.S
@@ -123,6 +123,10 @@ setstack:
set SYM(StackStart), %sp
add %sp, -STACK_BIAS, %sp
+ /* BSP-specific pre-bootcard initializations */
+ call SYM(_BSP_init)
+ nop
+
setx ofw_cif, %l0, %l1
call ofw_init ! initialize OpenFirmware
@@ -131,9 +135,6 @@ setstack:
call bootstrap
nop
- /* BSP-specific pre-bootcard initializations */
- call SYM(_BSP_init)
- nop
/* Set up ISR handler for interrupt enable/disable */
setx SYM(syscall), %l0, %o1
diff --git a/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c b/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c
index 2b8775df57..7bef613f9c 100644
--- a/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c
+++ b/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c
@@ -59,7 +59,7 @@ void bsp_get_work_area(
#endif
*work_area_start = WorkAreaBase;
- *work_area_size = ram_end - (uintptr_t) WorkAreaBase;
+ *work_area_size = (uintptr_t) HeapSize;
*heap_start = (void*) HeapBase;
*heap_size = (uintptr_t) HeapSize;
diff --git a/c/src/lib/libbsp/sparc64/shared/startup/linkcmds b/c/src/lib/libbsp/sparc64/shared/startup/linkcmds
index 30b7b2516e..0cf83ff30f 100644
--- a/c/src/lib/libbsp/sparc64/shared/startup/linkcmds
+++ b/c/src/lib/libbsp/sparc64/shared/startup/linkcmds
@@ -13,9 +13,9 @@
* Declare some sizes.
*/
RamBase = DEFINED(RamBase) ? RamBase : 0x0;
-RamSize = DEFINED(RamSize) ? RamSize : 16M;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 256k;
-StackSize = DEFINED(StackSize) ? StackSize : 256k;
+RamSize = DEFINED(RamSize) ? RamSize : 12M;
+HeapSize = DEFINED(HeapSize) ? HeapSize : 1M;
+StackSize = DEFINED(StackSize) ? StackSize : 1M;
RAM_END = RamBase + RamSize;
@@ -25,7 +25,7 @@ ENTRY(start)
MEMORY
{
- ram : ORIGIN = 0x0, LENGTH = 16M
+ ram : ORIGIN = 0x0, LENGTH = 12M
}