]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Include/Chipset/ArmV7Mmu.h
ArmPkg/ArmMmuLib: use correct return type for exported functions
[mirror_edk2.git] / ArmPkg / Include / Chipset / ArmV7Mmu.h
index 581cd9572ca92aa41027ed6a3391f9066350ec6e..549a5cd7d45a07d3650d9149e2f565003d9075f3 100644 (file)
@@ -1,14 +1,14 @@
 /** @file\r
 *\r
-*  Copyright (c) 2011, ARM Limited. All rights reserved.\r
-*  \r
-*  This program and the accompanying materials                          \r
-*  are licensed and made available under the terms and conditions of the BSD License         \r
-*  which accompanies this distribution.  The full text of the license may be found at        \r
-*  http://opensource.org/licenses/bsd-license.php                                            \r
+*  Copyright (c) 2011-2013, ARM Limited. All rights reserved.\r
 *\r
-*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+*  This program and the accompanying materials\r
+*  are licensed and made available under the terms and conditions of the BSD License\r
+*  which accompanies this distribution.  The full text of the license may be found at\r
+*  http://opensource.org/licenses/bsd-license.php\r
+*\r
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 *\r
 **/\r
 \r
 #define TTBR_SHAREABLE                       BIT1\r
 #define TTBR_NON_SHAREABLE                   0\r
 #define TTBR_INNER_CACHEABLE                 BIT0\r
-#define TTBR_NON_INNER_CACHEABLE             BIT0\r
+#define TTBR_INNER_NON_CACHEABLE             0\r
 #define TTBR_RGN_INNER_NON_CACHEABLE         0\r
 #define TTBR_RGN_INNER_WRITE_BACK_ALLOC      BIT6\r
 #define TTBR_RGN_INNER_WRITE_THROUGH         BIT0\r
 #define TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC   (BIT0|BIT6)\r
 \r
-#define TTBR_WRITE_THROUGH_NO_ALLOC     ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC )\r
-#define TTBR_WRITE_BACK_NO_ALLOC        ( TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC | TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC )\r
-#define TTBR_NON_CACHEABLE              ( TTBR_RGN_OUTER_NON_CACHEABLE | TTBR_RGN_INNER_NON_CACHEABLE )\r
-#define TTBR_WRITE_BACK_ALLOC           ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC )\r
+#define TTBR_WRITE_THROUGH              ( TTBR_RGN_OUTER_WRITE_THROUGH | TTBR_INNER_CACHEABLE | TTBR_SHAREABLE)\r
+#define TTBR_WRITE_BACK_NO_ALLOC        ( TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC | TTBR_INNER_CACHEABLE | TTBR_SHAREABLE)\r
+#define TTBR_NON_CACHEABLE              ( TTBR_RGN_OUTER_NON_CACHEABLE | TTBR_INNER_NON_CACHEABLE )\r
+#define TTBR_WRITE_BACK_ALLOC           ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_INNER_CACHEABLE | TTBR_SHAREABLE)\r
+\r
+#define TTBR_MP_WRITE_THROUGH           ( TTBR_RGN_OUTER_WRITE_THROUGH | TTBR_RGN_INNER_WRITE_THROUGH | TTBR_SHAREABLE)\r
+#define TTBR_MP_WRITE_BACK_NO_ALLOC     ( TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC | TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC | TTBR_SHAREABLE)\r
+#define TTBR_MP_NON_CACHEABLE           ( TTBR_RGN_OUTER_NON_CACHEABLE | TTBR_RGN_INNER_NON_CACHEABLE )\r
+#define TTBR_MP_WRITE_BACK_ALLOC        ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC | TTBR_SHAREABLE)\r
 \r
 \r
 #define TRANSLATION_TABLE_SECTION_COUNT                 4096\r
@@ -66,8 +71,7 @@
 #define TT_DESCRIPTOR_SECTION_SIZE                              (0x00100000)\r
 \r
 #define TT_DESCRIPTOR_SECTION_NS_MASK                           (1UL << 19)\r
-#define TT_DESCRIPTOR_SECTION_NS_SECURE                         (0UL << 19)\r
-#define TT_DESCRIPTOR_SECTION_NS_NON_SECURE                     (1UL << 19)\r
+#define TT_DESCRIPTOR_SECTION_NS                                (1UL << 19)\r
 \r
 #define TT_DESCRIPTOR_SECTION_NG_MASK                           (1UL << 17)\r
 #define TT_DESCRIPTOR_SECTION_NG_GLOBAL                         (0UL << 17)\r
 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_NG(Desc)                  ((((Desc) & TT_DESCRIPTOR_SECTION_NG_MASK) >> 6) & TT_DESCRIPTOR_PAGE_NG_MASK)\r
 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_S(Desc)                  ((((Desc) & TT_DESCRIPTOR_SECTION_S_MASK) >> 6) & TT_DESCRIPTOR_PAGE_S_MASK)\r
 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_XN(Desc,IsLargePage)      ((IsLargePage)? \\r
-                                                                    ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) >> 4) & TT_DESCRIPTOR_LARGEPAGE_XN_MASK):    \\r
-                                                                    ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) << 11) & TT_DESCRIPTOR_PAGE_XN_MASK))\r
+                                                                    ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) << 11) & TT_DESCRIPTOR_LARGEPAGE_XN_MASK):    \\r
+                                                                    ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) >> 4) & TT_DESCRIPTOR_PAGE_XN_MASK))\r
 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_CACHE_POLICY(Desc,IsLargePage)      (IsLargePage? \\r
                                                                     (((Desc) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK): \\r
                                                                     (((((Desc) & (0x3 << 12)) >> 6) | (Desc & (0x3 << 2)))))\r
                                                                     (((Desc) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK): \\r
                                                                     (((((Desc) & (0x3 << 6)) << 6) | (Desc & (0x3 << 2)))))\r
 \r
+#define TT_DESCRIPTOR_SECTION_ATTRIBUTE_MASK                (TT_DESCRIPTOR_SECTION_NS_MASK | TT_DESCRIPTOR_SECTION_NG_MASK | \\r
+                                                             TT_DESCRIPTOR_SECTION_S_MASK | TT_DESCRIPTOR_SECTION_AP_MASK | \\r
+                                                             TT_DESCRIPTOR_SECTION_XN_MASK | TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK)\r
+\r
+#define TT_DESCRIPTOR_PAGE_ATTRIBUTE_MASK                   (TT_DESCRIPTOR_PAGE_NG_MASK | TT_DESCRIPTOR_PAGE_S_MASK | \\r
+                                                             TT_DESCRIPTOR_PAGE_AP_MASK | TT_DESCRIPTOR_PAGE_XN_MASK | \\r
+                                                             TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK)\r
 \r
 #define TT_DESCRIPTOR_SECTION_DOMAIN_MASK                       (0x0FUL << 5)\r
 #define TT_DESCRIPTOR_SECTION_DOMAIN(a)                         (((a) & 0x0FUL) << 5)\r
 #define TT_DESCRIPTOR_PAGE_BASE_ADDRESS(a)                   ((a) & TT_DESCRIPTOR_PAGE_BASE_ADDRESS_MASK)\r
 #define TT_DESCRIPTOR_PAGE_BASE_SHIFT                        12\r
 \r
-#define TT_DESCRIPTOR_SECTION_WRITE_BACK(Secure)       (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
-                                                        ((Secure) ?  TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE )    | \\r
-                                                                     TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
-                                                                     TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
-                                                                     TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC)\r
-#define TT_DESCRIPTOR_SECTION_WRITE_THROUGH(Secure)    (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
-                                                        ((Secure) ?  TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE )    | \\r
-                                                                     TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
-                                                                     TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
-                                                                     TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC)\r
-#define TT_DESCRIPTOR_SECTION_DEVICE(Secure)           (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
-                                                        ((Secure) ?  TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE )    | \\r
-                                                                     TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
-                                                                     TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
-                                                                     TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE)\r
-#define TT_DESCRIPTOR_SECTION_UNCACHED(Secure)         (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
-                                                        ((Secure) ?  TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE )    | \\r
-                                                                     TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
-                                                                     TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
-                                                                     TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
-                                                                     TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE)\r
+#define TT_DESCRIPTOR_SECTION_WRITE_BACK(NonSecure)         (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
+                                                            ((NonSecure) ?  TT_DESCRIPTOR_SECTION_NS : 0)    | \\r
+                                                            TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_S_SHARED                          | \\r
+                                                            TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
+                                                            TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC)\r
+#define TT_DESCRIPTOR_SECTION_WRITE_THROUGH(NonSecure)      (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
+                                                            ((NonSecure) ?  TT_DESCRIPTOR_SECTION_NS : 0)    | \\r
+                                                            TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_S_SHARED                          | \\r
+                                                            TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
+                                                            TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC)\r
+#define TT_DESCRIPTOR_SECTION_DEVICE(NonSecure)             (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
+                                                            ((NonSecure) ?  TT_DESCRIPTOR_SECTION_NS : 0)    | \\r
+                                                            TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
+                                                            TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
+                                                            TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
+                                                            TT_DESCRIPTOR_SECTION_XN_MASK                           | \\r
+                                                            TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE)\r
+#define TT_DESCRIPTOR_SECTION_UNCACHED(NonSecure)          (TT_DESCRIPTOR_SECTION_TYPE_SECTION                                                           | \\r
+                                                           ((NonSecure) ?  TT_DESCRIPTOR_SECTION_NS : 0)    | \\r
+                                                           TT_DESCRIPTOR_SECTION_NG_GLOBAL                         | \\r
+                                                           TT_DESCRIPTOR_SECTION_S_NOT_SHARED                      | \\r
+                                                           TT_DESCRIPTOR_SECTION_DOMAIN(0)                         | \\r
+                                                           TT_DESCRIPTOR_SECTION_AP_RW_RW                          | \\r
+                                                           TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE)\r
 \r
 #define TT_DESCRIPTOR_PAGE_WRITE_BACK              (TT_DESCRIPTOR_PAGE_TYPE_PAGE                                                           | \\r
                                                         TT_DESCRIPTOR_PAGE_NG_GLOBAL                                                      | \\r
-                                                        TT_DESCRIPTOR_PAGE_S_NOT_SHARED                                                   | \\r
+                                                        TT_DESCRIPTOR_PAGE_S_SHARED                                                       | \\r
                                                         TT_DESCRIPTOR_PAGE_AP_RW_RW                                                       | \\r
                                                         TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_ALLOC)\r
 #define TT_DESCRIPTOR_PAGE_WRITE_THROUGH           (TT_DESCRIPTOR_PAGE_TYPE_PAGE                                                           | \\r
                                                         TT_DESCRIPTOR_PAGE_NG_GLOBAL                                                      | \\r
-                                                        TT_DESCRIPTOR_PAGE_S_NOT_SHARED                                                   | \\r
+                                                        TT_DESCRIPTOR_PAGE_S_SHARED                                                       | \\r
                                                         TT_DESCRIPTOR_PAGE_AP_RW_RW                                                       | \\r
                                                         TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC)\r
 #define TT_DESCRIPTOR_PAGE_DEVICE                  (TT_DESCRIPTOR_PAGE_TYPE_PAGE                                                           | \\r
                                                         TT_DESCRIPTOR_PAGE_NG_GLOBAL                                                      | \\r
                                                         TT_DESCRIPTOR_PAGE_S_NOT_SHARED                                                   | \\r
                                                         TT_DESCRIPTOR_PAGE_AP_RW_RW                                                       | \\r
+                                                        TT_DESCRIPTOR_PAGE_XN_MASK                                                        | \\r
                                                         TT_DESCRIPTOR_PAGE_CACHE_POLICY_SHAREABLE_DEVICE)\r
 #define TT_DESCRIPTOR_PAGE_UNCACHED                (TT_DESCRIPTOR_PAGE_TYPE_PAGE                                                           | \\r
                                                         TT_DESCRIPTOR_PAGE_NG_GLOBAL                                                      | \\r
                                                         TT_DESCRIPTOR_PAGE_AP_RW_RW                                                       | \\r
                                                         TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE)\r
 \r
+UINT32\r
+ConvertSectionAttributesToPageAttributes (\r
+  IN UINT32   SectionAttributes,\r
+  IN BOOLEAN  IsLargePage\r
+  );\r
+\r
 #endif\r