[BACK]Return to fdt_machdep.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / evbarm / fdt

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/evbarm/fdt/fdt_machdep.c between version 1.43 and 1.44

version 1.43, 2018/10/14 14:31:05 version 1.44, 2018/10/18 09:01:54
Line 141  fdt_putchar(char c)
Line 141  fdt_putchar(char c)
         const struct arm_platform *plat = arm_fdt_platform();          const struct arm_platform *plat = arm_fdt_platform();
         if (plat && plat->ap_early_putchar) {          if (plat && plat->ap_early_putchar) {
                 plat->ap_early_putchar(c);                  plat->ap_early_putchar(c);
         }          } else {
         else {                  uartputc(c);
 #define PLATFORM_EARLY_PUTCHAR ___CONCAT(EARLYCONS, _platform_early_putchar)  
                 void PLATFORM_EARLY_PUTCHAR(char);  
                 PLATFORM_EARLY_PUTCHAR(c);  
         }          }
 #endif  #endif
 }  }
Line 209  fdt_get_memory(uint64_t *pstart, uint64_
Line 206  fdt_get_memory(uint64_t *pstart, uint64_
 void  void
 fdt_add_reserved_memory_range(uint64_t addr, uint64_t size)  fdt_add_reserved_memory_range(uint64_t addr, uint64_t size)
 {  {
         uint64_t start = trunc_page(addr);          uint64_t start = addr;
         uint64_t end = round_page(addr + size);          uint64_t end = addr + size;
   
         int error = extent_free(fdt_memory_ext, start,          int error = extent_free(fdt_memory_ext, start,
              end - start, EX_NOWAIT);               end - start, EX_NOWAIT);
Line 227  fdt_add_reserved_memory_range(uint64_t a
Line 224  fdt_add_reserved_memory_range(uint64_t a
 static void  static void
 fdt_add_reserved_memory(uint64_t min_addr, uint64_t max_addr)  fdt_add_reserved_memory(uint64_t min_addr, uint64_t max_addr)
 {  {
           uint64_t lstart = 0, lend = 0;
         uint64_t addr, size;          uint64_t addr, size;
         int index, error;          int index, error;
   
Line 234  fdt_add_reserved_memory(uint64_t min_add
Line 232  fdt_add_reserved_memory(uint64_t min_add
         for (index = 0; index <= num; index++) {          for (index = 0; index <= num; index++) {
                 error = fdt_get_mem_rsv(fdtbus_get_data(), index,                  error = fdt_get_mem_rsv(fdtbus_get_data(), index,
                     &addr, &size);                      &addr, &size);
                 if (error != 0 || size == 0)                  if (error != 0)
                           continue;
                   if (lstart <= addr && addr <= lend) {
                           size -= (lend - addr);
                           addr = lend;
                   }
                   if (size == 0)
                         continue;                          continue;
                 if (addr + size <= min_addr)                  if (addr + size <= min_addr)
                         continue;                          continue;
Line 247  fdt_add_reserved_memory(uint64_t min_add
Line 251  fdt_add_reserved_memory(uint64_t min_add
                 if (addr + size > max_addr)                  if (addr + size > max_addr)
                         size = max_addr - addr;                          size = max_addr - addr;
                 fdt_add_reserved_memory_range(addr, size);                  fdt_add_reserved_memory_range(addr, size);
                   lstart = addr;
                   lend = addr + size;
         }          }
 }  }
   
Line 401  initarm(void *arg)
Line 407  initarm(void *arg)
                 OF_getprop(chosen, "bootargs", bootargs, sizeof(bootargs));                  OF_getprop(chosen, "bootargs", bootargs, sizeof(bootargs));
         boot_args = bootargs;          boot_args = bootargs;
   
         VPRINTF("devmap\n");  
         pmap_devmap_register(plat->ap_devmap());  
 #ifdef __aarch64__  
         pmap_devmap_bootstrap(plat->ap_devmap());  
 #endif  
   
         /* Heads up ... Setup the CPU / MMU / TLB functions. */          /* Heads up ... Setup the CPU / MMU / TLB functions. */
         VPRINTF("cpufunc\n");          VPRINTF("cpufunc\n");
         if (set_cpufuncs())          if (set_cpufuncs())
                 panic("cpu not recognized!");                  panic("cpu not recognized!");
   
           /*
            * Memory is still identity/flat mapped this point so using ttbr for
            * l1pt VA is fine
            */
   
           VPRINTF("devmap\n");
           extern char ARM_BOOTSTRAP_LxPT[];
           pmap_devmap_bootstrap((vaddr_t)ARM_BOOTSTRAP_LxPT, plat->ap_devmap());
   
         VPRINTF("bootstrap\n");          VPRINTF("bootstrap\n");
         plat->ap_bootstrap();          plat->ap_bootstrap();
   
Line 419  initarm(void *arg)
Line 428  initarm(void *arg)
          * If stdout-path is specified on the command line, override the           * If stdout-path is specified on the command line, override the
          * value in /chosen/stdout-path before initializing console.           * value in /chosen/stdout-path before initializing console.
          */           */
           VPRINTF("stdout\n");
         fdt_update_stdout_path();          fdt_update_stdout_path();
   
         /*          /*
Line 457  initarm(void *arg)
Line 467  initarm(void *arg)
 #endif  #endif
         uint64_t memory_size = memory_end - memory_start;          uint64_t memory_size = memory_end - memory_start;
   
           VPRINTF("%s: memory start %" PRIx64 " end %" PRIx64 " (len %"
               PRIx64 ")\n", __func__, memory_start, memory_end, memory_size);
   
         /* Parse ramdisk info */          /* Parse ramdisk info */
         fdt_probe_initrd(&initrd_start, &initrd_end);          fdt_probe_initrd(&initrd_start, &initrd_end);
   
Line 464  initarm(void *arg)
Line 477  initarm(void *arg)
          * Populate bootconfig structure for the benefit of           * Populate bootconfig structure for the benefit of
          * dodumpsys           * dodumpsys
          */           */
           VPRINTF("%s: fdt_build_bootconfig\n", __func__);
         fdt_build_bootconfig(memory_start, memory_end);          fdt_build_bootconfig(memory_start, memory_end);
   
         /* Perform PT build and VM init */          /* Perform PT build and VM init */
Line 478  initarm(void *arg)
Line 492  initarm(void *arg)
         int nfdt_physmem = 0;          int nfdt_physmem = 0;
         struct extent_region *er;          struct extent_region *er;
   
           VPRINTF("Memory regions :\n");
         LIST_FOREACH(er, &fdt_memory_ext->ex_regions, er_link) {          LIST_FOREACH(er, &fdt_memory_ext->ex_regions, er_link) {
                 VPRINTF("  %lx - %lx\n", er->er_start, er->er_end);                  VPRINTF("  %lx - %lx\n", er->er_start, er->er_end);
                 struct boot_physmem *bp = &fdt_physmem[nfdt_physmem++];                  struct boot_physmem *bp = &fdt_physmem[nfdt_physmem++];
   
                 KASSERT(nfdt_physmem <= MAX_PHYSMEM);                  KASSERT(nfdt_physmem <= MAX_PHYSMEM);
                 bp->bp_start = atop(er->er_start);  
                 bp->bp_pages = atop(er->er_end - er->er_start);                  bp->bp_start = atop(round_page(er->er_start));
                   bp->bp_pages = atop(trunc_page(er->er_end + 1)) - bp->bp_start;
                 bp->bp_freelist = VM_FREELIST_DEFAULT;                  bp->bp_freelist = VM_FREELIST_DEFAULT;
   
 #ifdef _LP64  #ifdef _LP64
Line 500  initarm(void *arg)
Line 516  initarm(void *arg)
 #endif  #endif
         }          }
   
         return initarm_common(KERNEL_VM_BASE, KERNEL_VM_SIZE, fdt_physmem,          u_int sp = initarm_common(KERNEL_VM_BASE, KERNEL_VM_SIZE, fdt_physmem,
              nfdt_physmem);               nfdt_physmem);
   
           VPRINTF("mpstart\n");
           if (plat->ap_mpstart)
                   plat->ap_mpstart();
   
           /*
            * Now we have APs started the pages used for stacks and L1PT can
            * be given to uvm
            */
           extern char __start__init_memory[], __stop__init_memory[];
           if (__start__init_memory != __stop__init_memory) {
                   const paddr_t spa = KERN_VTOPHYS((vaddr_t)__start__init_memory);
                   const paddr_t epa = KERN_VTOPHYS((vaddr_t)__stop__init_memory);
                   const paddr_t spg = atop(spa);
                   const paddr_t epg = atop(epa);
   
                   uvm_page_physload(spg, epg, spg, epg, VM_FREELIST_DEFAULT);
   
                   VPRINTF("           start %08lx  end %08lx", ptoa(spa), ptoa(epa));
           }
   
           return sp;
 }  }
   
 static void  static void

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44

CVSweb <webmaster@jp.NetBSD.org>