Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARM A64 Page table

Hi,

I have a question on ARM page table.

I am running a bare metal application on Cortex A72 and i have a failure with my application.

Upon debugging the failure, i found an address which is contributing the failure. our Bare metal application is responsible for creating the VA-PA page tables for the addresses being used.

Here are the snippet.

CPU is executing the following instruction segment(this is only part of the full instructions). Below is the dis-assembly.

0b3:054: 3e:000004 0000_c0000000.0000_05900000=4f03b604 orr Q4.16B,#7000700070007000 dv0=05a ivp:002
0b4:055: 3f:000004 0000_c0000004.0000_05900004=b9000325 str w5,[x25,#0000] L:ff,I:01a+0(fd800070) dv0=05d dv1=05c
0b5:056: 40:000004 0000_c0000008.0000_05900008=922fdb2c and x12,x25,#fefefefefefefefe dv0=05f dv1=05c
0b6:057: 41:000904 0000_c000000c.0000_0590000c=d61f0240 br x18 dv1=060 tinum:058 br:038

In this dis assembly the addresses 0xc0000000 is Virtual address and 0x05900000 is Physical address. Below are the page tables for this address.

Showing page table 05110000, vaddr 0000_00000000-7f_ffffffff, level 1, num:fff

......

1] 05110018 (0000_c0000000) = 0000000005113003^M

....

1] Showing page table 05113000, vaddr 0000_c0000000-ffffffff, level 2, num:003
1] 05113000 (0000_c0000000) = 0000000005114003

.....

1] Showing page table 05114000, vaddr 0000_c0000000-c01fffff, level 3, num:017
1] 05114000 (0000_c0000000) = 0000000005900e7f

as per this page table lookup, physical address 05900000 has attibute_index[4:2] = 111

But i also see another entry where address 05900000 has an entry as Virtual address

31063 1] Showing page table 05115000, vaddr 0000_05800000-059fffff, level 3, num:007^M
....

....
31066 1] 05115800 (0000_05900000) = 0000000005900e67^M

as per this entry physical address 05900000 has attibute_index[4:2] = 001.

so when CPU is trying to access Virtual address 0xc00000000 which mapped to 05900000 which entry CPU considers, which attibute_index values are considered.

are this mappings VALID? if Yes, which mapping CPU considers?

Appreciate your feedback on this.

Thanks