Hi Steve, When we have encountered this in the past we typically do one of the following: - Get an earlier stage boot loader to set up the device. Either uboot, or modifying the ELFLoader to set up a static pinmux configuration during initialization that seL4 and userlevel doesn't need to modify. In these scenarios UBoot or the ELFloader already have mechanisms for parsing a device tree and doing platform specific initialization. - Add the initialization to a kernel platform init function. In some cases where a kernel driver such as a timer needs to depend on some additional configuration then this is added to the device's platform initialization functions. The am335x platform already has some of this in am335x-timer.c and plat/am335x/machine/hardware.c. This approach is usually used when there is a reasonably unambiguous configuration requirement that the kernel has such as disabling a reset watchdog timer. - Pick a different platform that doesn't use additional physical memory protection on hardware registers that limits access from unprivileged processor modes. This additional limitation that some platforms have is a bit outside of seL4's assumptions of what mechanisms in the ISA's system architecture are available for it to use. This is similar to how seL4 can't support platforms that don't have a memory management unit. In your case, adding an initialization model to the kernel or to the elfloader would be an option. It would likely be better to target the ELFloader as it's where we try and put most platform initialization that the kernel doesn't have to be aware of. Cheers, Kent.