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/src/mm_test.cc b/src/mm_test.cc
index 34c72a4..5e4b31b 100644
--- a/src/mm_test.cc
+++ b/src/mm_test.cc
@@ -37,7 +37,7 @@
using ::mm_test::get_ptable;
constexpr size_t TEST_HEAP_SIZE = PAGE_SIZE * 16;
-const int TOP_LEVEL = arch_mm_stage2_max_level();
+const mm_level_t TOP_LEVEL = arch_mm_stage2_max_level();
const paddr_t VM_MEM_END = pa_init(0x200'0000'0000);
/**
@@ -54,7 +54,7 @@
*/
bool mm_vm_is_mapped(struct mm_ptable *ptable, ipaddr_t ipa)
{
- uint32_t mode;
+ mm_mode_t mode;
return mm_vm_get_mode(ptable, ipa, ipa_add(ipa, 1), &mode) &&
(mode & MM_MODE_INVALID) == 0;
}
@@ -121,7 +121,7 @@
*/
TEST_F(mm, map_first_page)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(0);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
@@ -160,7 +160,7 @@
*/
TEST_F(mm, map_round_to_page)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t map_begin = pa_init(0x200'0000'0000 - PAGE_SIZE + 23);
const paddr_t map_end = pa_add(map_begin, 268);
ipaddr_t ipa = ipa_init(-1);
@@ -202,7 +202,7 @@
*/
TEST_F(mm, map_across_tables)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t map_begin = pa_init(0x80'0000'0000 - PAGE_SIZE);
const paddr_t map_end = pa_add(map_begin, 2 * PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
@@ -261,7 +261,7 @@
*/
TEST_F(mm, map_all_at_top_level)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
auto tables = get_ptable(ptable);
@@ -286,7 +286,7 @@
*/
TEST_F(mm, map_already_mapped)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ipaddr_t ipa = ipa_init(-1);
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
@@ -305,7 +305,7 @@
*/
TEST_F(mm, map_reverse_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ipaddr_t ipa = ipa_init(-1);
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0x1234'5678),
pa_init(0x5000), mode, &ppool, &ipa));
@@ -324,7 +324,7 @@
*/
TEST_F(mm, map_reverse_range_quirk)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ipaddr_t ipa = ipa_init(-1);
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(20), pa_init(10), mode,
&ppool, &ipa));
@@ -342,7 +342,7 @@
*/
TEST_F(mm, map_last_address_quirk)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ipaddr_t ipa = ipa_init(-1);
ASSERT_TRUE(mm_vm_identity_map(
&ptable, pa_init(0),
@@ -360,7 +360,7 @@
*/
TEST_F(mm, map_clamp_to_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0),
pa_init(0xf32'0000'0000'0000), mode,
&ppool, nullptr));
@@ -376,7 +376,7 @@
*/
TEST_F(mm, map_ignore_out_of_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ipaddr_t ipa = ipa_init(-1);
ASSERT_TRUE(mm_vm_identity_map(&ptable, VM_MEM_END,
pa_init(0xf0'0000'0000'0000), mode,
@@ -393,7 +393,7 @@
*/
TEST_F(mm, map_block_replaces_table)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(34567 * PAGE_SIZE);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
@@ -412,7 +412,7 @@
*/
TEST_F(mm, map_does_not_defrag)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(12000 * PAGE_SIZE);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
@@ -436,7 +436,7 @@
*/
TEST_F(mm, map_to_unmap)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t l0_begin = pa_init(uintpaddr_t(524421) * PAGE_SIZE);
const paddr_t l0_end = pa_add(l0_begin, 17 * PAGE_SIZE);
const paddr_t l1_begin = pa_init(3 * mm_entry_size(1));
@@ -457,7 +457,7 @@
*/
TEST_F(mm, prepare_and_commit_first_page)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(0);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_prepare(&ptable, page_begin, page_end, mode,
@@ -497,7 +497,7 @@
*/
TEST_F(mm, prepare_and_commit_disjoint_regions)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t first_begin = pa_init(0);
const paddr_t first_end = pa_add(first_begin, PAGE_SIZE);
const paddr_t last_begin = pa_init(pa_addr(VM_MEM_END) - PAGE_SIZE);
@@ -566,7 +566,7 @@
*/
TEST_F(mm, prepare_and_commit_overlapping_regions)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t low_begin = pa_init(0x80'0000'0000 - PAGE_SIZE);
const paddr_t high_begin = pa_add(low_begin, PAGE_SIZE);
const paddr_t map_end = pa_add(high_begin, PAGE_SIZE);
@@ -644,7 +644,7 @@
*/
TEST_F(mm, unmap_all)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t l0_begin = pa_init(uintpaddr_t(524421) * PAGE_SIZE);
const paddr_t l0_end = pa_add(l0_begin, 17 * PAGE_SIZE);
const paddr_t l1_begin = pa_init(3 * mm_entry_size(1));
@@ -664,7 +664,7 @@
*/
TEST_F(mm, unmap_round_to_page)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t map_begin = pa_init(0x160'0000'0000 + PAGE_SIZE);
const paddr_t map_end = pa_add(map_begin, PAGE_SIZE);
@@ -707,7 +707,7 @@
*/
TEST_F(mm, unmap_across_tables)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t map_begin = pa_init(0x180'0000'0000 - PAGE_SIZE);
const paddr_t map_end = pa_add(map_begin, 2 * PAGE_SIZE);
@@ -758,7 +758,7 @@
*/
TEST_F(mm, unmap_out_of_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
ASSERT_TRUE(mm_vm_unmap(&ptable, VM_MEM_END, pa_init(0x4000'0000'0000),
@@ -775,7 +775,7 @@
*/
TEST_F(mm, unmap_reverse_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
ASSERT_TRUE(mm_vm_unmap(&ptable, pa_init(0x80'a000'0000), pa_init(27),
@@ -795,7 +795,7 @@
*/
TEST_F(mm, unmap_reverse_range_quirk)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(0x180'0000'0000);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
@@ -835,7 +835,7 @@
*/
TEST_F(mm, unmap_last_address_quirk)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
ASSERT_TRUE(mm_vm_unmap(
@@ -852,7 +852,7 @@
*/
TEST_F(mm, unmap_does_not_defrag)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t l0_begin = pa_init(5555 * PAGE_SIZE);
const paddr_t l0_end = pa_add(l0_begin, 13 * PAGE_SIZE);
const paddr_t l1_begin = pa_init(666 * mm_entry_size(1));
@@ -883,7 +883,7 @@
*/
TEST_F(mm, is_mapped_all)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa_init(0)));
@@ -896,7 +896,7 @@
*/
TEST_F(mm, is_mapped_page)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t page_begin = pa_init(0x100'0000'0000);
const paddr_t page_end = pa_add(page_begin, PAGE_SIZE);
ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
@@ -912,7 +912,7 @@
*/
TEST_F(mm, is_mapped_out_of_range)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
EXPECT_FALSE(mm_vm_is_mapped(&ptable, ipa_from_pa(VM_MEM_END)));
@@ -929,7 +929,7 @@
{
constexpr int default_mode =
MM_MODE_INVALID | MM_MODE_UNOWNED | MM_MODE_SHARED;
- uint32_t read_mode;
+ mm_mode_t read_mode;
read_mode = 0;
EXPECT_TRUE(
@@ -953,10 +953,10 @@
*/
TEST_F(mm, get_mode_pages_across_tables)
{
- constexpr uint32_t mode = MM_MODE_INVALID | MM_MODE_SHARED;
+ constexpr mm_mode_t mode = MM_MODE_INVALID | MM_MODE_SHARED;
const paddr_t map_begin = pa_init(0x180'0000'0000 - PAGE_SIZE);
const paddr_t map_end = pa_add(map_begin, 2 * PAGE_SIZE);
- uint32_t read_mode;
+ mm_mode_t read_mode;
ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
&ppool, nullptr));
@@ -981,8 +981,8 @@
*/
TEST_F(mm, get_mode_out_of_range)
{
- constexpr uint32_t mode = MM_MODE_UNOWNED;
- uint32_t read_mode;
+ constexpr mm_mode_t mode = MM_MODE_UNOWNED;
+ mm_mode_t read_mode;
ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
&ppool, nullptr));
EXPECT_FALSE(mm_vm_get_mode(&ptable, ipa_init(0),
@@ -1012,7 +1012,7 @@
*/
TEST_F(mm, defrag_empty_subtables)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t l0_begin = pa_init(120000 * PAGE_SIZE);
const paddr_t l0_end = pa_add(l0_begin, PAGE_SIZE);
const paddr_t l1_begin = pa_init(3 * mm_entry_size(1));
@@ -1035,7 +1035,7 @@
*/
TEST_F(mm, defrag_block_subtables)
{
- constexpr uint32_t mode = 0;
+ constexpr mm_mode_t mode = 0;
const paddr_t begin = pa_init(39456 * mm_entry_size(1));
const paddr_t middle = pa_add(begin, 67 * PAGE_SIZE);
const paddr_t end = pa_add(begin, 4 * mm_entry_size(1));