Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
XN bit support on ARMv7 Cortex A15
Jump...
Cancel
Locked
Locked
Replies
3 replies
Subscribers
118 subscribers
Views
3581 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
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
XN bit support on ARMv7 Cortex A15
taani E
over 12 years ago
Parents
taani E
over 12 years ago
Note: This was originally posted on 10th January 2013 at
http://forums.arm.com
To verify the XN bit support on Cortex A15. I executed the attached c test code.
I followed below steps to test XN bit support.
1. I compiled attached test program i.e exectest with "-z execstack"option (gcc -z execstack -o exectest exectest.c -lpthread)
2. I
removed
XN bit related code in ./arch/arm/mm/mmu.c and burned kernel on target.
Filename : arch/arm/mm/mmu.c
Line: 346
if(cpu_is_xsc3() || (cpu_arch >= CPU_ARCH_ARMv6 && (cr & CR_XP))){
if (!cpu_is_xsc3()) {
#if 0
/* Mark device regions on ARMv6+ asexecute-never
* to prevent speculativeinstruction fetches. */
mem_types[MT_DEVICE].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_NONSHARED].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_WC].prot_sect |= PMD_SECT_XN;
#endif
}
if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
3. Executed test program on target.
4.
I found some times successful execution with correct output and sometimes page fault.
As per my understanding this test program should always execute correctly and give correct output.
If I skip step 2 (means not commenting the XN bit related code) then also I have got the same behavior.
Please let me know how to verify XN bit support.
Thanks & Regards,
Cancel
Vote up
0
Vote down
Cancel
Reply
taani E
over 12 years ago
Note: This was originally posted on 10th January 2013 at
http://forums.arm.com
To verify the XN bit support on Cortex A15. I executed the attached c test code.
I followed below steps to test XN bit support.
1. I compiled attached test program i.e exectest with "-z execstack"option (gcc -z execstack -o exectest exectest.c -lpthread)
2. I
removed
XN bit related code in ./arch/arm/mm/mmu.c and burned kernel on target.
Filename : arch/arm/mm/mmu.c
Line: 346
if(cpu_is_xsc3() || (cpu_arch >= CPU_ARCH_ARMv6 && (cr & CR_XP))){
if (!cpu_is_xsc3()) {
#if 0
/* Mark device regions on ARMv6+ asexecute-never
* to prevent speculativeinstruction fetches. */
mem_types[MT_DEVICE].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_NONSHARED].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_XN;
mem_types[MT_DEVICE_WC].prot_sect |= PMD_SECT_XN;
#endif
}
if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
3. Executed test program on target.
4.
I found some times successful execution with correct output and sometimes page fault.
As per my understanding this test program should always execute correctly and give correct output.
If I skip step 2 (means not commenting the XN bit related code) then also I have got the same behavior.
Please let me know how to verify XN bit support.
Thanks & Regards,
Cancel
Vote up
0
Vote down
Cancel
Children
No data