6.4.5. virtual-reg property

The virtual-reg property provides a hint on the 32-bit virtual address mapping the first physical base address in the reg property. This is meant to allow the OS to use the boot firmware’s virtual memory mapping to access device resources early in the kernel boot process.

When barebox is compiled with CONFIG_MMU support and the implementation supports remapping, devices with virtual_reg will have all their resources remapped at the physical/virtual address offset calculated by subtracting virtual-reg from the first address in reg.

This is normally used to map I/O memory away from the zero page, so it can be used again to trap null pointer dereferences, while allowing full access to the device memory:

.. code-block:: none
&{/soc} {

#address-cells = <1>; #size-cells = <1>;

flash@0 {

reg = <0 0x10000>; virtual-reg = <0x1000>; /* => memory region remapped from [0x1000, 0x11000] to [0x0000, 0x10000] */

};

};