refactor(mm): use typedefs

* Add typedefs for memory modes and attrs
* Add typedef for page table levels
* Add typedef for the ptable ASID
* Rewrite `MM_MODE_` macros to use shifts instead of writing the
  value manually.

Change-Id: I783825777b4897692d48287fc689026a04ecba50
Signed-off-by: Karl Meakin <karl.meakin@arm.com>
diff --git a/inc/hf/mm.h b/inc/hf/mm.h
index 8f2d5d8..6023817 100644
--- a/inc/hf/mm.h
+++ b/inc/hf/mm.h
@@ -13,12 +13,15 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "hf/arch/mm.h"
-
 #include "hf/addr.h"
 #include "hf/mpool.h"
 #include "hf/static_assert.h"
 
+typedef uint32_t mm_mode_t;
+typedef uint64_t mm_attr_t;
+typedef uint8_t mm_level_t;
+typedef uint16_t mm_asid_t;
+
 /* Keep macro alignment */
 /* clang-format off */
 
@@ -26,10 +29,10 @@
 #define MM_PTE_PER_PAGE (PAGE_SIZE / sizeof(pte_t))
 
 /* The following are arch-independent page mapping modes. */
-#define MM_MODE_R UINT32_C(0x0001) /* read */
-#define MM_MODE_W UINT32_C(0x0002) /* write */
-#define MM_MODE_X UINT32_C(0x0004) /* execute */
-#define MM_MODE_D UINT32_C(0x0008) /* device */
+#define MM_MODE_R (1U << 0) /* read */
+#define MM_MODE_W (1U << 1) /* write */
+#define MM_MODE_X (1U << 2) /* execute */
+#define MM_MODE_D (1U << 3) /* device */
 
 /*
  * Memory in stage-1 is either valid (present) or invalid (absent).
@@ -59,15 +62,15 @@
  *
  *  Modes are selected so that owner of exclusive memory is the default.
  */
-#define MM_MODE_INVALID UINT32_C(0x0010)
-#define MM_MODE_UNOWNED UINT32_C(0x0020)
-#define MM_MODE_SHARED  UINT32_C(0x0040)
-
-/* Specifies if a mapping will be a user mapping(EL0). */
-#define MM_MODE_USER    UINT32_C(0x0200)
+#define MM_MODE_INVALID (1U << 4)
+#define MM_MODE_UNOWNED (1U << 5)
+#define MM_MODE_SHARED  (1U << 6)
 
 /* Map page as non-global. */
-#define MM_MODE_NG UINT32_C(0x0100) /* non-global */
+#define MM_MODE_NG (1U << 8)
+
+/* Specifies if a mapping will be a user mapping(EL0). */
+#define MM_MODE_USER    (1U << 9)
 
 /* The mask for a mode that is considered unmapped. */
 #define MM_MODE_UNMAPPED_MASK (MM_MODE_INVALID | MM_MODE_UNOWNED)
@@ -95,7 +98,7 @@
 	 * VMID/ASID associated with a page table. ASID 0 is reserved for use by
 	 * the hypervisor.
 	 */
-	uint16_t id;
+	mm_asid_t id;
 	/** Address of the root of the page table. */
 	paddr_t root;
 };
@@ -110,24 +113,24 @@
 
 void mm_vm_enable_invalidation(void);
 
-bool mm_ptable_init(struct mm_ptable *ptable, uint16_t id,
+bool mm_ptable_init(struct mm_ptable *ptable, mm_asid_t id,
 		    struct mm_flags flags, struct mpool *ppool);
 ptable_addr_t mm_ptable_addr_space_end(struct mm_flags flags);
 
-bool mm_vm_init(struct mm_ptable *ptable, uint16_t id, struct mpool *ppool);
+bool mm_vm_init(struct mm_ptable *ptable, mm_asid_t id, struct mpool *ppool);
 void mm_vm_fini(const struct mm_ptable *ptable, struct mpool *ppool);
 
 bool mm_identity_prepare(struct mm_ptable *ptable, paddr_t begin, paddr_t end,
-			 uint32_t mode, struct mpool *ppool);
+			 mm_mode_t mode, struct mpool *ppool);
 void *mm_identity_commit(struct mm_ptable *ptable, paddr_t begin, paddr_t end,
-			 uint32_t mode, struct mpool *ppool);
+			 mm_mode_t mode, struct mpool *ppool);
 
 bool mm_vm_identity_map(struct mm_ptable *ptable, paddr_t begin, paddr_t end,
-			uint32_t mode, struct mpool *ppool, ipaddr_t *ipa);
+			mm_mode_t mode, struct mpool *ppool, ipaddr_t *ipa);
 bool mm_vm_identity_prepare(struct mm_ptable *ptable, paddr_t begin,
-			    paddr_t end, uint32_t mode, struct mpool *ppool);
+			    paddr_t end, mm_mode_t mode, struct mpool *ppool);
 void mm_vm_identity_commit(struct mm_ptable *ptable, paddr_t begin, paddr_t end,
-			   uint32_t mode, struct mpool *ppool, ipaddr_t *ipa);
+			   mm_mode_t mode, struct mpool *ppool, ipaddr_t *ipa);
 bool mm_vm_unmap(struct mm_ptable *ptable, paddr_t begin, paddr_t end,
 		 struct mpool *ppool);
 void mm_stage1_defrag(struct mm_ptable *ptable, struct mpool *ppool);
@@ -135,15 +138,15 @@
 		  bool non_secure);
 void mm_vm_dump(const struct mm_ptable *ptable);
 bool mm_vm_get_mode(const struct mm_ptable *ptable, ipaddr_t begin,
-		    ipaddr_t end, uint32_t *mode);
+		    ipaddr_t end, mm_mode_t *mode);
 bool mm_get_mode(const struct mm_ptable *ptable, vaddr_t begin, vaddr_t end,
-		 uint32_t *mode);
+		 mm_mode_t *mode);
 
 struct mm_stage1_locked mm_lock_ptable_unsafe(struct mm_ptable *ptable);
 struct mm_stage1_locked mm_lock_stage1(void);
 void mm_unlock_stage1(struct mm_stage1_locked *lock);
 void *mm_identity_map(struct mm_stage1_locked stage1_locked, paddr_t begin,
-		      paddr_t end, uint32_t mode, struct mpool *ppool);
+		      paddr_t end, mm_mode_t mode, struct mpool *ppool);
 bool mm_unmap(struct mm_stage1_locked stage1_locked, paddr_t begin, paddr_t end,
 	      struct mpool *ppool);
 void mm_defrag(struct mm_stage1_locked stage1_locked, struct mpool *ppool);