Hi Georgi,
It turns out as follows
The BootROM reads the reset manager stat register, then clears it. This is why when you read it is always zero.
However, the BootROM keeps a copy into an internal data structure, and passes a pointer to that data structure to the Preloader (typically U-Boot SPL) in register r0.
Then the Preloader can read the value from r0 + 0x38.
See the following excerpts from
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-v/cv_54001.pdf
Slave Interface and Status Register
The reset manager slave interface is used to control and monitor the reset states.
The status register (stat) in the reset manager contains the status of the reset requester. The register
contains a bit for each monitored reset request. The stat register captures all reset requests that have
occurred. Software is responsible for clearing the bits.
During the boot process, the Boot ROM copies the stat register value into memory before clearing it.
After booting, you can read the value of the reset status register at memory address (r0 + 0x0038). For
more information, refer to the "Shared Memory" section of the Booting and Configuration appendix.
Shared Memory
The shared memory contains information that the boot ROM code passes to the preloader. The boot ROM
code passes the location of shared memory to the preloader in register r0, as described in the HPS State on
Entry to Preloader section.
The shared memory holds the last value of the stat register in the Reset Manager Module and a version
number that is passed by the boot ROM. The value of the stat register in shared memory is only valid if
the version number passed by the boot ROM is 0x00000000. The table below shows where the stat
register value and version number reside in the shared memory as an offset from the address stored in
register r0.
So you would need to save it from initialization of SPL from offset 0x38 added to register r0 as it is passed by BootROM
Regards
Anil