Four 32-bit storage registers are available for general use. Their values are not preserved across after software reboots.
For ZynqMP:
Device file | MMIO Register | MMIO Access | Valid Value Range |
<firmware-node>/ggs0 | GLOBAL_GEN_STORAGE0 | 0xFFD80030 | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs1 | GLOBAL_GEN_STORAGE1 | 0xFFD80034 | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs2 | GLOBAL_GEN_STORAGE2 | 0xFFD80038 | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs3 | GLOBAL_GEN_STORAGE3 | 0xFFD8003C | 0x00000000 - 0xFFFFFFFF |
For Versal:
Note: PLM uses PMC RAM for storing GGS values as Life of GGS registers and PMC RAM is same. So there is no fixed hardware register is involved.
Device file | MMIO Register | MMIO Access | Valid Value Range |
<firmware-node>/ggs0 | NA | NA | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs1 | NA | NA | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs2 | NA | NA | 0x00000000 - 0xFFFFFFFF |
<firmware-node>/ggs3 | NA | NA | 0x00000000 - 0xFFFFFFFF |
Read the value of a global storage register:
$ cat /sys/devices/platform/firmware:zynqmp-firmware/ggs0 # Note: For version before 2022.1 # cat /sys/firmware-zynqmp/ggs0
Write the mask and value of a global storage register:
$ echo 0xFFFFFFFF 0x1234ABCD > /sys/devices/platform/firmware:zynqmp-firmware/ggs0 # Note: For version before 2022.1 # echo 0xFFFFFFFF 0x1234ABCD > /sys/firmware-zynqmp/ggs0