[OpenBIOS] [PATCH 07/16] Switch SPARC32 page tables over to use OFMEM's ofmem_posix_memalign() rather than its internal posix_memalign() function.

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Thu Dec 30 19:07:10 CET 2010


This requires a corresponding increase in the memory allocated to OFMEM in order to store the page tables.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
---
 openbios-devel/arch/sparc32/lib.c           |    8 ++++----
 openbios-devel/arch/sparc32/ofmem_sparc32.c |    3 +--
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/openbios-devel/arch/sparc32/lib.c b/openbios-devel/arch/sparc32/lib.c
index 10599ce..788d6f5 100644
--- a/openbios-devel/arch/sparc32/lib.c
+++ b/openbios-devel/arch/sparc32/lib.c
@@ -273,7 +273,7 @@ find_pte(unsigned long va, int alloc)
     pte = l1[(va >> SRMMU_PGDIR_SHIFT) & (SRMMU_PTRS_PER_PGD - 1)];
     if ((pte & SRMMU_ET_MASK) == SRMMU_ET_INVALID) {
         if (alloc) {
-            ret = posix_memalign(&p, SRMMU_PTRS_PER_PMD * sizeof(int),
+            ret = ofmem_posix_memalign(&p, SRMMU_PTRS_PER_PMD * sizeof(int),
                                  SRMMU_PTRS_PER_PMD * sizeof(int));
             if (ret != 0)
                 return ret;
@@ -290,7 +290,7 @@ find_pte(unsigned long va, int alloc)
     pte = *(uint32_t *)pa2va(pa);
     if ((pte & SRMMU_ET_MASK) == SRMMU_ET_INVALID) {
         if (alloc) {
-            ret = posix_memalign(&p, SRMMU_PTRS_PER_PTE * sizeof(void *),
+            ret = ofmem_posix_memalign(&p, SRMMU_PTRS_PER_PTE * sizeof(void *),
                                  SRMMU_PTRS_PER_PTE * sizeof(void *));
             if (ret != 0)
                 return ret;
@@ -602,9 +602,9 @@ init_mmu_swift(void)
     mem_init(&cmem, (char *) &_vmem, (char *)&_evmem);
     mem_init(&cio, (char *)&_end, (char *)&_iomem);
 
-    posix_memalign((void *)&context_table, NCTX_SWIFT * sizeof(int),
+    ofmem_posix_memalign((void *)&context_table, NCTX_SWIFT * sizeof(int),
                    NCTX_SWIFT * sizeof(int));
-    posix_memalign((void *)&l1, 256 * sizeof(int), 256 * sizeof(int));
+    ofmem_posix_memalign((void *)&l1, 256 * sizeof(int), 256 * sizeof(int));
 
     context_table[0] = (((unsigned long)va2pa((unsigned long)l1)) >> 4) |
         SRMMU_ET_PTD;
diff --git a/openbios-devel/arch/sparc32/ofmem_sparc32.c b/openbios-devel/arch/sparc32/ofmem_sparc32.c
index 2e6f7b5..6484be9 100644
--- a/openbios-devel/arch/sparc32/ofmem_sparc32.c
+++ b/openbios-devel/arch/sparc32/ofmem_sparc32.c
@@ -21,8 +21,7 @@
 
 #define OF_MALLOC_BASE		((char*)OFMEM + ALIGN_SIZE(sizeof(ofmem_t), 8))
 
-/* Temporarily very small */
-#define MEMSIZE (1 * 1024)
+#define MEMSIZE (256 * 1024)
 static union {
 	char memory[MEMSIZE];
 	ofmem_t ofmem;
-- 
1.7.2.3




More information about the OpenBIOS mailing list