Index: lib/libfdt/Makefile =================================================================== --- /dev/null +++ lib/libfdt/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +LIBFDTDIR= ${.CURDIR:H:H}/contrib/dtc/libfdt + +LIB= fdt +SHLIB_MAJOR= 1 + +.PATH: ${LIBFDTDIR} + +SRCS= \ + fdt.c \ + fdt_empty_tree.c \ + fdt_ro.c \ + fdt_rw.c \ + fdt_strerror.c \ + fdt_sw.c \ + fdt_wip.c + +INCS= \ + fdt.h \ + libfdt.h \ + libfdt_env.h + +CFLAGS+= -I${LIBFDTDIR} + +WARNS?= 2 + +MAN= + +.include Index: share/mk/bsd.libnames.mk =================================================================== --- share/mk/bsd.libnames.mk +++ share/mk/bsd.libnames.mk @@ -61,6 +61,7 @@ LIBEDIT?= ${DESTDIR}${LIBDIR}/libedit.a LIBELF?= ${DESTDIR}${LIBDIR}/libelf.a LIBEXECINFO?= ${DESTDIR}${LIBDIR}/libexecinfo.a +LIBFDT?= ${DESTDIR}${LIBDIR}/libfdt.a LIBFETCH?= ${DESTDIR}${LIBDIR}/libfetch.a LIBFIGPAR?= ${DESTDIR}${LIBDIR}/libfigpar.a LIBFL?= "don't use LIBFL, use LIBL" Index: sys/arm/arm/machdep.c =================================================================== --- sys/arm/arm/machdep.c +++ sys/arm/arm/machdep.c @@ -261,6 +261,19 @@ SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD, &vfp_exists, 0, "Floating point support enabled"); +static void *dtb_ptr; +static uint32_t dtb_size; + +static int +sysctl_handle_dtb_info(SYSCTL_HANDLER_ARGS) +{ + + return (sysctl_handle_opaque(oidp, dtb_ptr, dtb_size, req)); +} + +SYSCTL_PROC(_hw, OID_AUTO, dtb_info, CTLTYPE_OPAQUE | CTLFLAG_RD, + NULL, 0, sysctl_handle_dtb_info, "", "Device Tree Blob Info"); + void board_set_serial(uint64_t serial) { @@ -1737,6 +1750,10 @@ debugf(" arg1 kmdp = 0x%08x\n", (uint32_t)kmdp); debugf(" boothowto = 0x%08x\n", boothowto); debugf(" dtbp = 0x%08x\n", (uint32_t)dtbp); + + dtb_ptr = (void *)dtbp; + dtb_size = fdt_totalsize((void *)dtbp); + print_kenv(); env = kern_getenv("kernelname");