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

Function fake_preload_metadata

freebsd/arm/arm/machdep_boot.c:349–390  ·  view source on GitHub ↗

* Fake up a boot descriptor table */

Source from the content-addressed store, hash-verified

347 * Fake up a boot descriptor table
348 */
349vm_offset_t
350fake_preload_metadata(struct arm_boot_params *abp __unused, void *dtb_ptr,
351 size_t dtb_size)
352{
353 vm_offset_t lastaddr;
354 int i = 0;
355 static uint32_t fake_preload[35];
356
357 lastaddr = (vm_offset_t)&end;
358
359 fake_preload[i++] = MODINFO_NAME;
360 fake_preload[i++] = strlen("kernel") + 1;
361 strcpy((char*)&fake_preload[i++], "kernel");
362 i += 1;
363 fake_preload[i++] = MODINFO_TYPE;
364 fake_preload[i++] = strlen("elf kernel") + 1;
365 strcpy((char*)&fake_preload[i++], "elf kernel");
366 i += 2;
367 fake_preload[i++] = MODINFO_ADDR;
368 fake_preload[i++] = sizeof(vm_offset_t);
369 fake_preload[i++] = KERNVIRTADDR;
370 fake_preload[i++] = MODINFO_SIZE;
371 fake_preload[i++] = sizeof(uint32_t);
372 fake_preload[i++] = (uint32_t)&end - KERNVIRTADDR;
373 if (dtb_ptr != NULL) {
374 /* Copy DTB to KVA space and insert it into module chain. */
375 lastaddr = roundup(lastaddr, sizeof(int));
376 fake_preload[i++] = MODINFO_METADATA | MODINFOMD_DTBP;
377 fake_preload[i++] = sizeof(uint32_t);
378 fake_preload[i++] = (uint32_t)lastaddr;
379 memmove((void *)lastaddr, dtb_ptr, dtb_size);
380 lastaddr += dtb_size;
381 lastaddr = roundup(lastaddr, sizeof(int));
382 }
383 fake_preload[i++] = 0;
384 fake_preload[i] = 0;
385 preload_metadata = (void *)fake_preload;
386
387 init_static_kenv(NULL, 0);
388
389 return (lastaddr);
390}
391
392#ifdef EFI
393void

Callers 2

linux_parse_boot_paramFunction · 0.70
default_parse_boot_paramFunction · 0.70

Calls 2

init_static_kenvFunction · 0.85
memmoveFunction · 0.50

Tested by

no test coverage detected