[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv2 21/25] plat/kvm: arm64: Support build L3 table for large image size
We have updated the L3 table build function to support large memory range. In this case, we can support build L3 tables for images exceeded 2MB. Signed-off-by: Wei Chen <wei.chen@xxxxxxx> --- plat/kvm/arm/pagetable64.S | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/plat/kvm/arm/pagetable64.S b/plat/kvm/arm/pagetable64.S index 212f8e0..8d9e923 100644 --- a/plat/kvm/arm/pagetable64.S +++ b/plat/kvm/arm/pagetable64.S @@ -62,6 +62,7 @@ virt_bits: /* * We will use a direct map for physical address and virtual address * (PA = VA 1:1 mapping) + * x15 = image size (trashed) */ ENTRY(create_pagetables) /* Save link address */ @@ -134,20 +135,30 @@ ENTRY(create_pagetables) add x9, x14, #L2_TABLE_OFFSET; bl link_l1_pagetable - /* 3rd: Build a L3 pagetable for 0~2MB*/ - add x6, x14, #L3_TABLE_OFFSET; + /* 3rd: Build a L3 pagetable for image occupied memory */ + add x16, x14, #L3_TABLE_OFFSET + mov x17, #RAM_ADDR_START + + mov x6, x16 ldr x7, =SECT_ATTR_NORMAL - mov x8, #RAM_ADDR_START - mov x9, x8 - mov x10, 512 + mov x8, x17 + mov x9, x17 + lsr x10, x15, L3_SHIFT bl build_l3_pagetable /* 4th: Link this L3 pagetable to L2 entry */ - add x6, x14, #L2_TABLE_OFFSET; - mov x8, #RAM_ADDR_START - add x9, x14, #L3_TABLE_OFFSET; + add x6, x14, #L2_TABLE_OFFSET +1: + mov x8, x17 + mov x9, x16 bl link_l2_pagetable + /* Check whether the image mapping has been done */ + add x16, x16, #__PAGE_SIZE + add x17, x17, #L2_SIZE + sub x15, x15, #L2_SIZE + cbnz x15, 1b + /* 5th: Update dtb section to readonly */ ldr x8, =_dtb ldr x9, =_text -- 2.17.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |