Hi,

i think something equivalent to this diff got lost in the past,
in some diff i haven't seen myself, and don't care to go digging
cvs history, if there's any explanation for why not. comments?

boot tested cubie2&wandb, too busy to make 'em dump right now.
-Artturi


diff --git a/sys/arch/armv7/armv7/armv7_machdep.c 
b/sys/arch/armv7/armv7/armv7_machdep.c
index aa1c549b29b..2f636441cb2 100644
--- a/sys/arch/armv7/armv7/armv7_machdep.c
+++ b/sys/arch/armv7/armv7/armv7_machdep.c
@@ -197,6 +197,7 @@ extern struct user *proc0paddr;
 int   safepri = 0;
 
 /* Prototypes */
+static inline void _bs_add_dramblk(paddr_t, paddr_t);
 
 char   bootargs[MAX_BOOT_STRING];
 int    bootstrap_bs_map(void *, uint64_t, bus_size_t, int,
@@ -356,6 +357,15 @@ copy_io_area_map(pd_entry_t *new_pd)
        }
 }
 
+void
+_bs_add_dramblk(paddr_t pms, paddr_t pme)
+{
+       uvm_page_physload(atop(pms), atop(pme), atop(pms), atop(pme), 0);
+       bootconfig.dram[bootconfig.dramblocks].address = pms;
+       bootconfig.dram[bootconfig.dramblocks].pages =  atop(pme - pms);
+       bootconfig.dramblocks++;
+}
+
 /*
  * u_int initarm(...)
  *
@@ -740,12 +750,11 @@ initarm(void *arg0, void *arg1, void *arg2, paddr_t 
loadaddr)
        printf("page ");
 #endif
        uvm_setpagesize();        /* initialize PAGE_SIZE-dependent variables */
-       uvm_page_physload(atop(physical_freestart), atop(physical_freeend),
-           atop(physical_freestart), atop(physical_freeend), 0);
+       bootconfig.dramblocks = 0;
+       _bs_add_dramblk(physical_freestart, physical_freeend);
 
        if (physical_start < loadaddr) {
-               uvm_page_physload(atop(physical_start), atop(loadaddr),
-                   atop(physical_start), atop(loadaddr), 0);
+               _bs_add_dramblk(physical_start, loadaddr);
                physsegs--;
        }
 
@@ -759,8 +768,7 @@ initarm(void *arg0, void *arg1, void *arg2, paddr_t 
loadaddr)
                memstart = reg.addr;
                memend = MIN(reg.addr + reg.size, (paddr_t)-PAGE_SIZE);
                physmem += (memend - memstart) / PAGE_SIZE;
-               uvm_page_physload(atop(memstart), atop(memend),
-                   atop(memstart), atop(memend), 0);
+               _bs_add_dramblk(memstart, memend);
        }
 
        /* Boot strap pmap telling it where the kernel page table is */

Reply via email to