First: Apology if this has been asked here before. I am still not proficient searching the new forum. Google has not been tremendously helpful either.
I am playing with a ATZB-S1-256-S-0-C (Zigbit module built around an ATMEGA256RFR2). Per the data sheet for the module, every module has a unique MAC address programmed into its user signature data (page 1). The data sheet actually calls it "Persistence Memory" and references quite a lot of information stored in there (see Table 5-1 on p. 17).
I would like to be able to read this data out from within my program -- specifically, I would like to be able to read it out in C (not assembly). The only example I was able to find in the ATMEGA256RFR2 data sheet was in assembly -- on p. 494. Even this example seems like not exactly what I want, because it is actually reading the Signature Bytes (not the "User Signature Data").
Can anyone point me in the right direction for doing this? Is it even possible to do in C (w/o inline assembly)?
The note in the Zigbit module data sheet is less than helpful:
Special commands are available to erase and write data to user signature pages via the JTAG interface (see section on
"Programming via the JTAG Interface” in Atmega256RFR2 datasheet  for details). User signature rows can be read
from software in the same way as the device and JTAG identifiers (see section "Reading the Signature Row from
Software" of Atmega256RFR2 datasheet).
I do NOT need to erase/write to these pages -- just read... Everything I can find online is for Xmegas, not AVRs.