Fix set access rights when exploding block to finer granule table

If set_access_rights is called with a range which is mapped as a larger
block, Xlat explodes this into a new table with finer granule. The patch
fixes the address calculation for this case.
The patch also fixes setting the first block descriptor after creating
the new table.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: Ibdef2bec191f073380bbe8e77b3f5844a470c257
diff --git a/src/lib.rs b/src/lib.rs
index c939335..496681c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -747,7 +747,7 @@
             }
             DescriptorType::Block => {
                 // Saving current descriptor details
-                let current_va = va.mask_for_level(granule, level);
+                let current_va = va.mask_bits(!(granule.block_size_at_level(level) - 1));
                 let current_pa = descriptor.get_block_output_address(granule, level);
                 let current_attributes = descriptor.get_block_attributes(level);
 
@@ -798,7 +798,7 @@
                 let result = Self::set_block_descriptor_recursively(
                     attributes,
                     pa,
-                    va.mask_for_level(granule, level + 1),
+                    va.mask_for_level(granule, level),
                     block_size,
                     level + 1,
                     next_table,