MCPcopy Create free account
hub / github.com/F-Stack/f-stack / freebsd_parse_boot_param

Function freebsd_parse_boot_param

freebsd/arm/arm/machdep_boot.c:271–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269
270#if defined(FREEBSD_BOOT_LOADER)
271static vm_offset_t
272freebsd_parse_boot_param(struct arm_boot_params *abp)
273{
274 vm_offset_t lastaddr = 0;
275 void *mdp;
276 void *kmdp;
277#ifdef DDB
278 vm_offset_t ksym_start;
279 vm_offset_t ksym_end;
280#endif
281
282 /*
283 * Mask metadata pointer: it is supposed to be on page boundary. If
284 * the first argument (mdp) doesn't point to a valid address the
285 * bootloader must have passed us something else than the metadata
286 * ptr, so we give up. Also give up if we cannot find metadta section
287 * the loader creates that we get all this data out of.
288 */
289
290 if ((mdp = (void *)(abp->abp_r0 & ~PAGE_MASK)) == NULL)
291 return 0;
292 preload_metadata = mdp;
293 kmdp = preload_search_by_type("elf kernel");
294 if (kmdp == NULL)
295 return 0;
296
297 boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int);
298 loader_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *);
299 init_static_kenv(loader_envp, 0);
300 lastaddr = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t);
301#ifdef DDB
302 ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t);
303 ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t);
304 db_fetch_ksymtab(ksym_start, ksym_end, 0);
305#endif
306 return lastaddr;
307}
308#endif
309
310vm_offset_t

Callers 1

default_parse_boot_paramFunction · 0.70

Calls 3

preload_search_by_typeFunction · 0.85
init_static_kenvFunction · 0.85
db_fetch_ksymtabFunction · 0.85

Tested by

no test coverage detected