diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-10-06 16:46:36 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-10-06 16:46:36 +0000 |
commit | 48449a87138c3a6b1d6aff0a7ca7f80058e36010 (patch) | |
tree | 2131c2598a0a832989d222fc4e2426db5a64116c | |
parent | 2011-10-06 Gedare Bloom <giddyup44@yahoo.com> (diff) | |
download | rtems-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.
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 } |