Andriy Gapon wrote:
I wonder what the following means (on my machine): 0x54: 0x00000000 (FREG0)
All 0s value is confusing at the first sight. However, if you would like to read the explanation once more and pay attention to the detail, I believe you will get a different conclusion.
The value 0x0(23f)0(00b) means, ... ... to 0x00(23f)fff ...
You probably have got it.
The explanation contains minor error, though. To be exact, bits 28 .. 16 of FREGn represent bits 24 .. 12 of the region's limit. That is one bit more than my parentheses show. Bits 11 .. 0 of the region's limit, I believe, is 0xfff, which is not clearly stated in the datasheet. Bits 12 .. 0 of FREGn represent bits 24 .. 12 of the region's base. The other (lower) bits of the region's base should be 0.
Therefore, 0x00000000 should mean a region from 0x0000000 to 0x0000fff.
BTW: 0x50: 0x00000a0b (FRAP)
According to the datasheet, the bit n in bits 7 .. 0 indicates software read access to FREGn (n is in [0, 4]). Similarly, the bit n in bits 15 .. 8 indicates software write access to FREG(n-8) ((n-8) is in [0, 4]). So the value means software can write to FREG1 and FREG3, while it can read FREG0, 1 and 3. However, iirc, there is other protection mechanism, so software may still be banned to write on part of FREG1 or FREG3.
If you would like to get information from the source, dig into Chap 22 of the ICH9 datasheet. You may need multiple parses to find out what you need. Besides, there are some mistakes in the datasheet, but that should not affect if you are not reading it very carefully.
yu ning