# Jonathan Kollasch ## [[!template id=man name="ddb" section="4"]] tips ### locating a softc This locates a device's softc using it's `cfdriver_t` (e.g. `&mainbus_cd`, `&cpu_cd`) and its "device unit" (e.g. the `0` in `mainbus0`). db{0}> call device_lookup_private(ohci_cd, 0) 0xffff800045fb2008 ### locating structure members This uses [[!template id=man name="gdb" section="1"]] and a kernel with debugging symbols to find the offset to a element in a structure. $ gdb netbsd.gdb ... (gdb) print &((struct ohci_softc *)0)->iot $3 = (bus_space_tag_t *) 0x478 (gdb) print &((struct ohci_softc *)0)->ioh $4 = (bus_space_handle_t *) 0x480 ### peeking at mapped registers db{0}> call bus_space_read_4(*(ffff800045fb2008+478), *(ffff800045fb2008+480), 0) 0x110 ## Unfinished Projects ### x86 UEFI kernel loader Needs more work and cleanup. Work has been done using the OVMF BIOS images for Qemu. ### bcm47xx for evbmips Boots multiuser on NFS root, needs more work and cleanup. This project is on hold until there's a miniature userland that fits in 4-8MiB flash storage devices, on a flash-oriented file system. [[!template id=man name="bce" section="4"]] and [[!template id=man name="bwi" section="4"]] would need refactoring to be bus-independent. ### Memory-mapped PCI config access on x86 Needs cleanup, and maybe some more validation of MCFG tables.