<font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">Hi:</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;"><span style="white-space:pre">       </span><b>Why rtems arm bsp do not set xn flag when config mmu device region?</b></span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;"><br></span></font></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div style=""><font face="Verdana, Arial, Helvetica, sans-serif" color="#ff0000"><span style="font-size: 12.8px;">#define AARCH64_MMU_FLAGS_BASE \</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif" color="#ff0000"><span style="font-size: 12.8px;">  ( MMU_DESC_VALID | MMU_DESC_SH_INNER | MMU_DESC_AF )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_DATA_RO_CACHED \</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">  ( AARCH64_MMU_FLAGS_BASE | MMU_DESC_MAIR_ATTR( 3 ) | MMU_DESC_WRITE_DISABLE )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_CODE_CACHED AARCH64_MMU_DATA_RO_CACHED</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_CODE_RW_CACHED AARCH64_MMU_DATA_RW_CACHED</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_DATA_RO \</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">  ( AARCH64_MMU_FLAGS_BASE | MMU_DESC_MAIR_ATTR( 1 ) | MMU_DESC_WRITE_DISABLE )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_CODE AARCH64_MMU_DATA_RO</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_CODE_RW AARCH64_MMU_DATA_RW</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">/* RW implied by not ORing in RO */</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_DATA_RW_CACHED \</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">  ( AARCH64_MMU_FLAGS_BASE | MMU_DESC_MAIR_ATTR( 3 ) )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_DATA_RW \</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">  ( AARCH64_MMU_FLAGS_BASE | MMU_DESC_MAIR_ATTR( 1 ) )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">#define AARCH64_MMU_DEVICE (<font color="#ff0000"> AARCH64_MMU_FLAGS_BASE</font> | MMU_DESC_MAIR_ATTR( 0 ) )</span></font></div><div style=""><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;"><br></span></font></div></blockquote><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><b><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">ARM datasheet(</span></font><a href="https://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/Virtual-Memory-System-Architecture--VMSA-/Memory-access-control/The-Execute-Never--XN--attribute-and-instruction-prefetching">ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition</a><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;">):</span></font></b></blockquote><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font face="Verdana, Arial, Helvetica, sans-serif"><div><span style="font-size: 12.8px;">Any region of memory that is read-sensitive must be marked as Execute Never, </span></div></font></div><div><font face="Verdana, Arial, Helvetica, sans-serif"><div><span style="font-size: 12.8px;">to avoid the possibility of a speculative prefetch accessing the memory region. </span></div></font></div><div><font face="Verdana, Arial, Helvetica, sans-serif"><div><span style="font-size: 12.8px;">For example, any memory region that corresponds to a read-sensitive peripheral </span></div></font></div><div><font face="Verdana, Arial, Helvetica, sans-serif"><div><span style="font-size: 12.8px;">must be marked as Execute Never.</span></div><div><span style="font-size: 12.8px;"><br></span></div><div><span style="font-size: 12.8px;"><b>and linux mmu config:</b></span></div><div><span style="font-size: 12.8px;"><b><br></b></span></div><div><div style=""><span style="font-size: 12.8px;"> #define PROT_DEVICE_nGnRnE  (PROT_DEFAULT | <font color="#ff0000">PTE_PXN | PTE_UXN</font> | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRnE))</span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_DEVICE_nGnRE   (PROT_DEFAULT | <font color="#ff0000">PTE_PXN | PTE_UXN</font> | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRE))</span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_NORMAL_NC      (PROT_DEFAULT | <font color="#ff0000">PTE_PXN | PTE_UXN</font> | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_NC))</span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_NORMAL_WT      (PROT_DEFAULT | <font color="#ff0000">PTE_PXN | PTE_UXN</font> | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_WT))</span></div><div style=""><span style="font-size: 12.8px;"> #define <font color="#ff0000">PROT_NORMAL</font>     (PROT_DEFAULT | <font color="#ff0000">PTE_PXN | PTE_UXN</font> | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL))</span></div><div style=""><span style="font-size: 12.8px;"><br></span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_SECT_DEVICE_nGnRE  (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE))</span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_SECT_NORMAL    (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))</span></div><div style=""><span style="font-size: 12.8px;"> #define PROT_SECT_NORMAL_EXEC   (PROT_SECT_DEFAULT | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))</span></div><div style=""><span style="font-size: 12.8px;"><br></span></div><div style=""><span style="font-size: 12.8px;"> #define _PAGE_DEFAULT       (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))</span></div><div style=""><span style="font-size: 12.8px;"> #define _HYP_PAGE_DEFAULT   _PAGE_DEFAULT</span></div><div style=""><span style="font-size: 12.8px;"><br></span></div><div style=""><span style="font-size: 12.8px;"><font color="#ff0000"> #define PAGE_KERNEL     __pgprot(PROT_NORMAL)</font></span></div><div style=""><span style="font-size: 12.8px;"><font color="#ff0000"> #define PAGE_KERNEL_RO      __pgprot((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY)</font></span></div><div style=""><span style="font-size: 12.8px;"><font color="#ff0000"> #define PAGE_KERNEL_ROX     __pgprot((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY)</font></span></div><div style=""><span style="font-size: 12.8px;"> #define PAGE_KERNEL_EXEC    __pgprot(PROT_NORMAL & ~PTE_PXN)</span></div><div style=""><span style="font-size: 12.8px;"><font color="#ff0000"> #define PAGE_KERNEL_EXEC_CONT   __pgprot((PROT_NORMAL & ~PTE_PXN) | PTE_CONT)</font></span></div></div><div style=""><span style="font-size: 12.8px;"><font color="#ff0000"><span style="white-space:pre">                                                                                         </span></font></span></div><div style=""><span style="font-size: 12.8px;"><span style="white-space:pre">                                                                                                                                                </span>Thanks!</span></div></font></div></blockquote><div><div><div><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 12.8px;"><br></span></font></div></div></div><div></div></font>