//\r
// If the input linear address is not 4K align, it should return invalid parameter\r
//\r
- UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask), RETURN_INVALID_PARAMETER);\r
+ UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_INVALID_PARAMETER);\r
\r
//\r
// If the input PageTableBufferSize is not 4K align, it should return invalid parameter\r
//\r
PageTableBufferSize = 10;\r
- UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 0, SIZE_4KB, &MapAttribute, &MapMask), RETURN_INVALID_PARAMETER);\r
+ UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 0, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_INVALID_PARAMETER);\r
\r
//\r
// If the input PagingMode is Paging32bit, it should return invalid parameter\r
//\r
PageTableBufferSize = 0;\r
PagingMode = Paging32bit;\r
- UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask), RETURN_UNSUPPORTED);\r
+ UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_UNSUPPORTED);\r
\r
//\r
// If the input MapMask is NULL, it should return invalid parameter\r
//\r
PagingMode = Paging5Level1GB;\r
- UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, NULL), RETURN_INVALID_PARAMETER);\r
+ UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, NULL, NULL), RETURN_INVALID_PARAMETER);\r
\r
return UNIT_TEST_PASSED;\r
}\r
//\r
// Create page table to cover [0, 10M], it should have 5 PTE\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
if (TestStatus != UNIT_TEST_PASSED) {\r
// We assume the fucntion doesn't need to change page table, return success and output BufferSize is 0\r
//\r
Buffer = NULL;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (PageTableBufferSize, 0);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
//\r
MapMask.Bits.Nx = 0;\r
PageTableBufferSize = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
UT_ASSERT_EQUAL (PageTableBufferSize, 0);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
MapAttribute.Bits.Accessed = 1;\r
MapMask.Bits.Accessed = 1;\r
PageTableBufferSize = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)SIZE_2MB, (UINT64)SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)SIZE_2MB, (UINT64)SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
UT_ASSERT_EQUAL (PageTableBufferSize, 0);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
MapAttribute.Bits.Present = 1;\r
MapMask.Bits.Present = 1;\r
MapMask.Uint64 = MAX_UINT64;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
\r
//\r
//\r
// Create Page table to cover [0,2G], with ReadWrite = 1\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
BackupPageTableBufferSize = PageTableBufferSize;\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
IsPageTableValid (PageTable, PagingMode);\r
\r
// Call library to change ReadWrite to 0 for [0,2M]\r
//\r
MapAttribute.Bits.ReadWrite = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
IsPageTableValid (PageTable, PagingMode);\r
MapCount = 0;\r
//\r
MapAttribute.Bits.ReadWrite = 1;\r
PageTableBufferSize = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
IsPageTableValid (PageTable, PagingMode);\r
MapCount = 0;\r
//\r
// Create Page table to cover [2M-4K, 4M], with ReadWrite = 1\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
IsPageTableValid (PageTable, PagingMode);\r
\r
MapAttribute.Bits.ReadWrite = 1;\r
PageTableBufferSize = 0;\r
MapAttribute.Bits.PageTableBaseAddress = (SIZE_2MB - SIZE_4KB) >> 12;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB * 2, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB * 2, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
return UNIT_TEST_PASSED;\r
}\r
//\r
// Create Page table to cover [0,4M], and [4M, 1G] is not present\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
if (TestStatus != UNIT_TEST_PASSED) {\r
// It looks like the chioce is not bad, but sometime, we need to keep some small entry\r
//\r
PageTableBufferSize = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
if (TestStatus != UNIT_TEST_PASSED) {\r
\r
MapAttribute.Bits.Accessed = 1;\r
PageTableBufferSize = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB, &MapAttribute, &MapMask, NULL);\r
//\r
// If it didn't use a big 1G entry to cover whole range, only change [0,2M] for some attribute won't need extra memory\r
//\r
//\r
// Create Page table to cover [0,2G], with Nx = 0\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
if (TestStatus != UNIT_TEST_PASSED) {\r
//\r
// Call library to change Nx to 0 for [0,1G]\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
TestStatus = IsPageTableValid (PageTable, PagingMode);\r
if (TestStatus != UNIT_TEST_PASSED) {\r
//\r
// Create Page table to cover [0, 2G]. All fields of MapMask should be set.\r
//\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);\r
MapMask.Uint64 = MAX_UINT64;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
\r
//\r
// Update Page table to set [2G - 8K, 2G] from present to non-present. All fields of MapMask except present should not be set.\r
//\r
PageTableBufferSize = 0;\r
- MapAttribute.Uint64 = SIZE_2GB - SIZE_8KB;\r
+ MapAttribute.Uint64 = 0;\r
MapMask.Uint64 = 0;\r
MapMask.Bits.Present = 1;\r
MapMask.Bits.ReadWrite = 1;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);\r
MapMask.Bits.ReadWrite = 0;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);\r
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
\r
//\r
MapAttribute.Uint64 = 0;\r
MapMask.Uint64 = 0;\r
MapMask.Bits.Present = 1;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
MapAttribute.Bits.ReadWrite = 1;\r
MapMask.Bits.ReadWrite = 1;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);\r
\r
//\r
MapMask.Uint64 = 0;\r
MapMask.Bits.ReadWrite = 1;\r
MapMask.Bits.Present = 1;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);\r
MapMask.Uint64 = MAX_UINT64;\r
- Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);\r
+ Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);\r
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);\r
\r
MapCount = 0;\r