#define TT_DESCRIPTOR_SECTION_TYPE_IS_PAGE_TABLE(Desc) (((Desc) & 3UL) == TT_DESCRIPTOR_SECTION_TYPE_PAGE_TABLE)\r
\r
// Translation table descriptor types\r
-#define TT_DESCRIPTOR_PAGE_TYPE_MASK (3UL << 0)\r
-#define TT_DESCRIPTOR_PAGE_TYPE_FAULT (0UL << 0)\r
-#define TT_DESCRIPTOR_PAGE_TYPE_PAGE (2UL << 0)\r
-#define TT_DESCRIPTOR_PAGE_TYPE_PAGE_XN (3UL << 0)\r
-#define TT_DESCRIPTOR_PAGE_TYPE_LARGEPAGE (1UL << 0)\r
+#define TT_DESCRIPTOR_PAGE_TYPE_MASK (1UL << 1)\r
+#define TT_DESCRIPTOR_PAGE_TYPE_FAULT (0UL << 1)\r
+#define TT_DESCRIPTOR_PAGE_TYPE_PAGE (1UL << 1)\r
\r
// Section descriptor definitions\r
#define TT_DESCRIPTOR_SECTION_SIZE (0x00100000)\r
\r
// EntryMask: bitmask of values to change (1 = change this value, 0 = leave alone)\r
// EntryValue: values at bit positions specified by EntryMask\r
- EntryMask = TT_DESCRIPTOR_PAGE_TYPE_MASK | TT_DESCRIPTOR_PAGE_AP_MASK;\r
- if ((Attributes & EFI_MEMORY_XP) != 0) {\r
- EntryValue = TT_DESCRIPTOR_PAGE_TYPE_PAGE_XN;\r
- } else {\r
- EntryValue = TT_DESCRIPTOR_PAGE_TYPE_PAGE;\r
- }\r
+ EntryMask = TT_DESCRIPTOR_PAGE_TYPE_MASK | TT_DESCRIPTOR_PAGE_AP_MASK | TT_DESCRIPTOR_PAGE_XN_MASK;\r
+ EntryValue = TT_DESCRIPTOR_PAGE_TYPE_PAGE;\r
\r
// Although the PI spec is unclear on this, the GCD guarantees that only\r
// one Attribute bit is set at a time, so the order of the conditionals below\r
EntryValue |= TT_DESCRIPTOR_PAGE_AP_RW_RW;\r
}\r
\r
+ if ((Attributes & EFI_MEMORY_XP) != 0) {\r
+ EntryValue |= TT_DESCRIPTOR_PAGE_XN_MASK;\r
+ }\r
+\r
// Obtain page table base\r
FirstLevelTable = (ARM_FIRST_LEVEL_DESCRIPTOR *)ArmGetTTBR0BaseAddress ();\r
\r