Key: ELF symbol (primary) ELF symbol source (with column ║) frame instruction +variable (range start) -variable (range end) inlining control-flow forwards branch ──> backwards branch ══>Compilation unit 0000a6b8 0000af1c arch/arm64/kvm/hyp/nvhe/mm.c
instructions
header
.debug_abbrev die abbreviation table
.debug_info die tree
.debug_line line number info
.debug_line evaluated line info
simple die tree
simple die tree globals
simple die tree locals
inlined subroutine info
inlined subroutine info by range
**0000a6b8 <__hyp_create_mappings>:
0000a6b8 <$x>:
+ __hyp_create_mappings params:
+start param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x8)
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x10)
+phys param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x18)
+prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x10)
__hyp_create_mappings:29.0 (mm.c) Sbepe ║{
+start param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x8) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:27
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x10) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:27
+phys param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x18) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:28
+prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x10) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:28
+err var int (base type, DW_ATE_signed size:4) 0xa6b8 0xa720 (DW_OP_breg31 0xc) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:30
~ 0000a6b8: d10103ff sub sp, sp, #0x40 <- 0000761c(bl)<__hyp_create_mappings>,0000a91c(bl)<__hyp_create_mappings>,0000a9d4(bl)<__hyp_create_mappings>,0000ae50(bl)<__hyp_create_mappings>
~ 0000a6bc: a9037bfd stp x29, x30, [sp, #48]
0000a6b8 CFA:r31 r29:u r30:u
~ 0000a6c0: 9100c3fd add x29, sp, #0x30
~ 0000a6c4: f81f83a0 stur x0, [x29, #-8]
~ 0000a6c8: f81f03a1 stur x1, [x29, #-16]
~ 0000a6cc: f9000fe2 str x2, [sp, #24]
~ 0000a6d0: f9000be3 str x3, [sp, #16]
__hyp_create_mappings:32.2 (mm.c) SbePe ║hyp_spin_lock(&__hyp_pgd_lock);
~ 0000a6d4: 90000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a6d8: 912dc108 add x8, x8, #0xb70
~ 0000a6dc: aa0803e0 mov x0, x8
~ 0000a6e0: f90003e8 str x8, [sp]
~ 0000a6e4: 9400000f bl a720 <hyp_spin_lock>
__hyp_create_mappings:33.42 (mm.c) Sbepe err = kvm_pgtable_hyp_map(&hyp_pgtable, ║start, size, phys, prot);
~ 0000a6e8: f85f83a1 ldur x1, [x29, #-8] <- 0000a6e4(bl-succ)<return>
__hyp_create_mappings:33.49 (mm.c) sbepe err = kvm_pgtable_hyp_map(&hyp_pgtable, start, ║size, phys, prot);
~ 0000a6ec: f85f03a2 ldur x2, [x29, #-16]
__hyp_create_mappings:33.55 (mm.c) sbepe err = kvm_pgtable_hyp_map(&hyp_pgtable, start, size, ║phys, prot);
~ 0000a6f0: f9400fe3 ldr x3, [sp, #24]
__hyp_create_mappings:33.61 (mm.c) sbepe err = kvm_pgtable_hyp_map(&hyp_pgtable, start, size, phys, ║prot);
~ 0000a6f4: b94013e4 ldr w4, [sp, #16]
__hyp_create_mappings:33.8 (mm.c) sbepe err = ║kvm_pgtable_hyp_map(&hyp_pgtable, start, size, phys, prot);
~ 0000a6f8: 90000080 adrp x0, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a6fc: 912de000 add x0, x0, #0xb78
~ 0000a700: 94002483 bl 1390c <kvm_pgtable_hyp_map>
__hyp_create_mappings:33.6 (mm.c) sbepe err ║= kvm_pgtable_hyp_map(&hyp_pgtable, start, size, phys, prot);
~ 0000a704: b9000fe0 str w0, [sp, #12] <- 0000a700(bl-succ)<return>
~ 0000a708: f94003e0 ldr x0, [sp]
__hyp_create_mappings:34.2 (mm.c) Sbepe ║hyp_spin_unlock(&__hyp_pgd_lock);
~ 0000a70c: 94000019 bl a770 <hyp_spin_unlock>
__hyp_create_mappings:36.9 (mm.c) Sbepe return ║err;
~ 0000a710: b9400fe0 ldr w0, [sp, #12] <- 0000a70c(bl-succ)<return>
__hyp_create_mappings:36.2 (mm.c) sbepe ║return err;
~ 0000a714: a9437bfd ldp x29, x30, [sp, #48]
~ 0000a718: 910103ff add sp, sp, #0x40
0000a6c4 CFA:r29+16 r29:c-16 r30:c-8
~ 0000a71c: d65f03c0 ret
-start param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x8) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:27
-size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_fbreg -0x10) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:27
-phys param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x18) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:28
-prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa6b8 0xa720 (DW_OP_breg31 0x10) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:28
-err var int (base type, DW_ATE_signed size:4) 0xa6b8 0xa720 (DW_OP_breg31 0xc) __hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:30
**0000a720 <hyp_spin_lock>:
+ hyp_spin_lock params:
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa720 0xa770 (DW_OP_fbreg 0x18)
hyp_spin_lock:36.0 (spinlock.h) Sbepe ║{
0000a720 CFA:r31
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa720 0xa770 (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:35
+tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0xa720 0xa770 (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:37
+lockval var typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>) 0xa720 0xa770 (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:38
+newval var typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>) 0xa720 0xa770 (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:38
~ 0000a720: d10083ff sub sp, sp, #0x20 <- 0000a6e4(bl)<hyp_spin_lock>,0000a7b4(bl)<hyp_spin_lock>
~ 0000a724: f9000fe0 str x0, [sp, #24]
hyp_spin_lock:68.57 (spinlock.h) SbePe : "=&r" (lockval), "=&r" (newval), "=&r" (tmp), "+Q" (*║lock)
~ 0000a728: f9400fe8 ldr x8, [sp, #24]
hyp_spin_lock:40.2 (spinlock.h) Sbepe ║asm volatile(
~ 0000a72c: f9800111 prfm pstl1strm, [x8]
~ ╔>0000a730: 885ffd09 ldaxr w9, [x8] <- v0000a73c(b.cc)<hyp_spin_lock+0x10>
~ ║ 0000a734: 1140412a add w10, w9, #0x10, lsl #12
~ ║ 0000a738: 880b7d0a stxr w11, w10, [x8]
~ ╚═0000a73c: 35ffffab cbnz w11, a730 <hyp_spin_lock+0x10>
~ 0000a740: 4ac9412a eor w10, w9, w9, ror #16 <- 0000a73c(b.cc-succ)<fallthrough>
~ ┌──0000a744: 340000ca cbz w10, a75c <hyp_spin_lock+0x3c>
│
~ │ 0000a748: d50320bf sevl <- 0000a744(b.cc-succ)<fallthrough>
│
~ │╔>0000a74c: d503205f wfe <- v0000a758(b.cc)<hyp_spin_lock+0x2c>
~ │║ 0000a750: 485ffd0b ldaxrh w11, [x8]
~ │║ 0000a754: 4a49416a eor w10, w11, w9, lsr #16
~ │╚═0000a758: 35ffffaa cbnz w10, a74c <hyp_spin_lock+0x2c>
│
~ └─>0000a75c: b90013e9 str w9, [sp, #16] <- 0000a744(b.cc)<hyp_spin_lock+0x3c>,0000a758(b.cc-succ)<fallthrough>
~ 0000a760: b9000bea str w10, [sp, #8]
~ 0000a764: b90017eb str w11, [sp, #20]
hyp_spin_lock:71.1 (spinlock.h) Sbepe ║}
~ 0000a768: 910083ff add sp, sp, #0x20
0000a724 CFA:r31+32
~ 0000a76c: d65f03c0 ret
-lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa720 0xa770 (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:35
-tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0xa720 0xa770 (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:37
-lockval var typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>) 0xa720 0xa770 (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:38
-newval var typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>) 0xa720 0xa770 (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/mm.c:38
**0000a770 <hyp_spin_unlock>:
+ hyp_spin_unlock params:
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa770 0xa794 (DW_OP_fbreg 0x8)
hyp_spin_unlock:74.0 (spinlock.h) Sbepe ║{
0000a770 CFA:r31
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa770 0xa794 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/mm.c:73
+tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0xa770 0xa794 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/mm.c:75
~ 0000a770: d10043ff sub sp, sp, #0x10 <- 0000a70c(bl)<hyp_spin_unlock>,0000a880(bl)<hyp_spin_unlock>
~ 0000a774: f90007e0 str x0, [sp, #8]
hyp_spin_unlock:87.10 (spinlock.h) SbePe : "=Q" (║lock->owner), "=&r" (tmp)
~ 0000a778: f94007e8 ldr x8, [sp, #8]
hyp_spin_unlock:77.2 (spinlock.h) Sbepe ║asm volatile(
~ 0000a77c: 79400109 ldrh w9, [x8]
~ 0000a780: 11000529 add w9, w9, #0x1
~ 0000a784: 489ffd09 stlrh w9, [x8]
~ 0000a788: f90003e9 str x9, [sp]
hyp_spin_unlock:90.1 (spinlock.h) Sbepe ║}
~ 0000a78c: 910043ff add sp, sp, #0x10
0000a774 CFA:r31+16
~ 0000a790: d65f03c0 ret
-lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<7b0a4>/<89622>)) 0xa770 0xa794 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/mm.c:73
-tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0xa770 0xa794 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/mm.c:75
**0000a794 <__hyp_create_private_mapping>:
+ __hyp_create_private_mapping params:
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x8)
+size param typedef(size_t=typedef(__kernel_size_t=typedef(__kernel_ulong_t=long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x10)
+prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa794 0xa894 (DW_OP_breg31 0x18)
__hyp_create_private_mapping:41.0 (mm.c) Sbepe ║{
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x8) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:39
+size param typedef(size_t=typedef(__kernel_size_t=typedef(__kernel_ulong_t=long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x10) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:39
+prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa794 0xa894 (DW_OP_breg31 0x18) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:40
+addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa794 0xa894 (DW_OP_breg31 0x10) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:42
+ret var int (base type, DW_ATE_signed size:4) 0xa794 0xa894 (DW_OP_breg31 0xc) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:43
~ 0000a794: d10103ff sub sp, sp, #0x40 <- 0000767c(bl)<__hyp_create_private_mapping>,0000a670(bl)<__hyp_create_private_mapping>,0000ad0c(bl)<__hyp_create_private_mapping>
~ 0000a798: a9037bfd stp x29, x30, [sp, #48]
0000a794 CFA:r31 r29:u r30:u
~ 0000a79c: 9100c3fd add x29, sp, #0x30
~ 0000a7a0: f81f83a0 stur x0, [x29, #-8]
~ 0000a7a4: f81f03a1 stur x1, [x29, #-16]
~ 0000a7a8: f9000fe2 str x2, [sp, #24]
__hyp_create_private_mapping:45.2 (mm.c) SbePe ║hyp_spin_lock(&__hyp_pgd_lock);
~ 0000a7ac: 90000080 adrp x0, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a7b0: 912dc000 add x0, x0, #0xb70
~ 0000a7b4: 97ffffdb bl a720 <hyp_spin_lock>
__hyp_create_private_mapping:47.9 (mm.c) Sbepe size = ║PAGE_ALIGN(size + offset_in_page(phys));
~ 0000a7b8: f85f03a8 ldur x8, [x29, #-16] <- 0000a7b4(bl-succ)<return>
~ 0000a7bc: f85f83a9 ldur x9, [x29, #-8]
~ 0000a7c0: 92402d29 and x9, x9, #0xfff
~ 0000a7c4: 8b090108 add x8, x8, x9
~ 0000a7c8: 913ffd08 add x8, x8, #0xfff
~ 0000a7cc: 9274cd08 and x8, x8, #0xfffffffffffff000
__hyp_create_private_mapping:47.7 (mm.c) sbepe size ║= PAGE_ALIGN(size + offset_in_page(phys));
~ 0000a7d0: f81f03a8 stur x8, [x29, #-16]
__hyp_create_private_mapping:48.9 (mm.c) Sbepe addr = ║__io_map_base;
~ 0000a7d4: 90000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a7d8: f945cd09 ldr x9, [x8, #2968]
__hyp_create_private_mapping:48.7 (mm.c) sbepe addr ║= __io_map_base;
~ 0000a7dc: f9000be9 str x9, [sp, #16]
__hyp_create_private_mapping:49.19 (mm.c) Sbepe __io_map_base += ║size;
~ 0000a7e0: f85f03a9 ldur x9, [x29, #-16]
__hyp_create_private_mapping:49.16 (mm.c) sbepe __io_map_base ║+= size;
~ 0000a7e4: f945cd0a ldr x10, [x8, #2968]
~ 0000a7e8: 8b090149 add x9, x10, x9
~ 0000a7ec: f905cd09 str x9, [x8, #2968]
__hyp_create_private_mapping:52.6 (mm.c) Sbepe if (║__io_map_base > __hyp_vmemmap) {
~ 0000a7f0: f945cd08 ldr x8, [x8, #2968]
__hyp_create_private_mapping:52.22 (mm.c) sbepe if (__io_map_base > ║__hyp_vmemmap) {
~ 0000a7f4: 90000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a7f8: f944c529 ldr x9, [x9, #2440]
__hyp_create_private_mapping:52.6 (mm.c) sbepe if (║__io_map_base > __hyp_vmemmap) {
~ 0000a7fc: eb090108 subs x8, x8, x9
~ ┌──0000a800: 54000149 b.ls a828 <__hyp_create_private_mapping+0x94> // b.plast
│
~ │┌─0000a804: 14000001 b a808 <__hyp_create_private_mapping+0x74> <- 0000a800(b.cc-succ)<fallthrough>
││
││ __hyp_create_private_mapping:53.20 (mm.c) Sbepe __io_map_base -= ║size;
~ │└>0000a808: f85f03a8 ldur x8, [x29, #-16] <- 0000a804(b)<__hyp_create_private_mapping+0x74>
│ __hyp_create_private_mapping:53.17 (mm.c) sbepe __io_map_base ║-= size;
~ │ 0000a80c: 90000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 0000a810: f945cd2a ldr x10, [x9, #2968]
~ │ 0000a814: eb080148 subs x8, x10, x8
~ │ 0000a818: f905cd28 str x8, [x9, #2968]
~ │ 0000a81c: aa1f03e8 mov x8, xzr
│ __hyp_create_private_mapping:54.8 (mm.c) Sbepe addr ║= 0;
~ │ 0000a820: f9000be8 str x8, [sp, #16]
│ __hyp_create_private_mapping:55.3 (mm.c) Sbepe ║goto out;
~ ┌──┼──0000a824: 14000015 b a878 <__hyp_create_private_mapping+0xe4>
│ │
│ │ __hyp_create_private_mapping:58.42 (mm.c) Sbepe ret = kvm_pgtable_hyp_map(&hyp_pgtable, ║addr, size, phys, prot);
~ │ └─>0000a828: f9400be1 ldr x1, [sp, #16] <- 0000a800(b.cc)<__hyp_create_private_mapping+0x94>
│ __hyp_create_private_mapping:58.48 (mm.c) sbepe ret = kvm_pgtable_hyp_map(&hyp_pgtable, addr, ║size, phys, prot);
~ │ 0000a82c: f85f03a2 ldur x2, [x29, #-16]
│ __hyp_create_private_mapping:58.54 (mm.c) sbepe ret = kvm_pgtable_hyp_map(&hyp_pgtable, addr, size, ║phys, prot);
~ │ 0000a830: f85f83a3 ldur x3, [x29, #-8]
│ __hyp_create_private_mapping:58.60 (mm.c) sbepe ret = kvm_pgtable_hyp_map(&hyp_pgtable, addr, size, phys, ║prot);
~ │ 0000a834: b9401be4 ldr w4, [sp, #24]
│ __hyp_create_private_mapping:58.8 (mm.c) sbepe ret = ║kvm_pgtable_hyp_map(&hyp_pgtable, addr, size, phys, prot);
~ │ 0000a838: 90000080 adrp x0, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 0000a83c: 912de000 add x0, x0, #0xb78
~ │ 0000a840: 94002433 bl 1390c <kvm_pgtable_hyp_map>
│
│ __hyp_create_private_mapping:58.6 (mm.c) sbepe ret ║= kvm_pgtable_hyp_map(&hyp_pgtable, addr, size, phys, prot);
~ │ 0000a844: b9000fe0 str w0, [sp, #12] <- 0000a840(bl-succ)<return>
│ __hyp_create_private_mapping:59.6 (mm.c) Sbepe if (║ret) {
~ │ 0000a848: b9400fe8 ldr w8, [sp, #12]
│ __hyp_create_private_mapping:59.6 (mm.c) sbepe if (║ret) {
~ │ ┌──0000a84c: 340000a8 cbz w8, a860 <__hyp_create_private_mapping+0xcc>
│ │
~ │ │┌─0000a850: 14000001 b a854 <__hyp_create_private_mapping+0xc0> <- 0000a84c(b.cc-succ)<fallthrough>
│ ││
~ │ │└>0000a854: aa1f03e8 mov x8, xzr <- 0000a850(b)<__hyp_create_private_mapping+0xc0>
│ │ __hyp_create_private_mapping:60.8 (mm.c) Sbepe addr ║= 0;
~ │ │ 0000a858: f9000be8 str x8, [sp, #16]
│ │ __hyp_create_private_mapping:61.3 (mm.c) Sbepe ║goto out;
~ │ ┌┼──0000a85c: 14000007 b a878 <__hyp_create_private_mapping+0xe4>
│ ││
│ ││ __hyp_create_private_mapping:64.9 (mm.c) Sbepe addr = ║addr + offset_in_page(phys);
~ │ │└─>0000a860: f9400be8 ldr x8, [sp, #16] <- 0000a84c(b.cc)<__hyp_create_private_mapping+0xcc>
│ │ __hyp_create_private_mapping:64.16 (mm.c) sbepe addr = addr + ║offset_in_page(phys);
~ │ │ 0000a864: f85f83a9 ldur x9, [x29, #-8]
~ │ │ 0000a868: 92402d29 and x9, x9, #0xfff
│ │ __hyp_create_private_mapping:64.14 (mm.c) sbepe addr = addr ║+ offset_in_page(phys);
~ │ │ 0000a86c: 8b090108 add x8, x8, x9
│ │ __hyp_create_private_mapping:64.7 (mm.c) sbepe addr ║= addr + offset_in_page(phys);
~ │ │ 0000a870: f9000be8 str x8, [sp, #16]
│ │ __hyp_create_private_mapping:64.2 (mm.c) sbepe ║addr = addr + offset_in_page(phys);
~ │ │ ┌─0000a874: 14000001 b a878 <__hyp_create_private_mapping+0xe4>
│ │ │
│ │ │ __hyp_create_private_mapping:66.2 (mm.c) Sbepe ║hyp_spin_unlock(&__hyp_pgd_lock);
~ └>└>└>0000a878: 90000080 adrp x0, 1a000 <hyp_cpu_logical_map+0xe0> <- 0000a824(b)<__hyp_create_private_mapping+0xe4>,0000a85c(b)<__hyp_create_private_mapping+0xe4>,0000a874(b)<__hyp_create_private_mapping+0xe4>
~ 0000a87c: 912dc000 add x0, x0, #0xb70
~ 0000a880: 97ffffbc bl a770 <hyp_spin_unlock>
__hyp_create_private_mapping:68.9 (mm.c) Sbepe return ║addr;
~ 0000a884: f9400be0 ldr x0, [sp, #16] <- 0000a880(bl-succ)<return>
__hyp_create_private_mapping:68.2 (mm.c) sbepe ║return addr;
~ 0000a888: a9437bfd ldp x29, x30, [sp, #48]
~ 0000a88c: 910103ff add sp, sp, #0x40
0000a7a0 CFA:r29+16 r29:c-16 r30:c-8
~ 0000a890: d65f03c0 ret
-phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x8) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:39
-size param typedef(size_t=typedef(__kernel_size_t=typedef(__kernel_ulong_t=long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa794 0xa894 (DW_OP_fbreg -0x10) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:39
-prot param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa794 0xa894 (DW_OP_breg31 0x18) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:40
-addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa794 0xa894 (DW_OP_breg31 0x10) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:42
-ret var int (base type, DW_ATE_signed size:4) 0xa794 0xa894 (DW_OP_breg31 0xc) __hyp_create_private_mapping:arch/arm64/kvm/hyp/nvhe/mm.c:43
**0000a894 <hyp_create_mappings>:
+ hyp_create_mappings params:
+from param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x10)
+to param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x18)
+prot param enum kvm_pgtable_prot<7b0a4>/<896dd> 0xa894 0xa96c (DW_OP_fbreg -0x1c)
hyp_create_mappings:72.0 (mm.c) Sbepe ║{
+from param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x10) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
+to param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x18) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
+prot param enum kvm_pgtable_prot<7b0a4>/<896dd> 0xa894 0xa96c (DW_OP_fbreg -0x1c) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
+start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x28) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:73
+end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x20) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:74
+virt_addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x18) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:75
+phys var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa894 0xa96c (DW_OP_breg31 0x10) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:76
~ 0000a894: d10183ff sub sp, sp, #0x60 <- 0000a06c(bl)<hyp_create_mappings>,0000a0c0(bl)<hyp_create_mappings>,0000a114(bl)<hyp_create_mappings>,0000a168(bl)<hyp_create_mappings>,0000a1bc(bl)<hyp_create_mappings>,0000a1f4(bl)<hyp_create_mappings>,0000a2a0(bl)<hyp_create_mappings>
~ 0000a898: a9057bfd stp x29, x30, [sp, #80]
0000a894 CFA:r31 r29:u r30:u
~ 0000a89c: 910143fd add x29, sp, #0x50
~ 0000a8a0: f81f03a0 stur x0, [x29, #-16]
~ 0000a8a4: f81e83a1 stur x1, [x29, #-24]
~ 0000a8a8: b81e43a2 stur w2, [x29, #-28]
hyp_create_mappings:73.39 (mm.c) SbePe unsigned long start = (unsigned long)║from;
~ 0000a8ac: f85f03a8 ldur x8, [x29, #-16]
hyp_create_mappings:73.16 (mm.c) sbepe unsigned long ║start = (unsigned long)from;
~ 0000a8b0: f90017e8 str x8, [sp, #40]
hyp_create_mappings:74.37 (mm.c) Sbepe unsigned long end = (unsigned long)║to;
~ 0000a8b4: f85e83a8 ldur x8, [x29, #-24]
hyp_create_mappings:74.16 (mm.c) sbepe unsigned long ║end = (unsigned long)to;
~ 0000a8b8: f90013e8 str x8, [sp, #32]
hyp_create_mappings:78.10 (mm.c) Sbepe start = ║start & PAGE_MASK;
~ 0000a8bc: f94017e8 ldr x8, [sp, #40]
hyp_create_mappings:78.16 (mm.c) sbepe start = start ║& PAGE_MASK;
~ 0000a8c0: 9274cd08 and x8, x8, #0xfffffffffffff000
hyp_create_mappings:78.8 (mm.c) sbepe start ║= start & PAGE_MASK;
~ 0000a8c4: f90017e8 str x8, [sp, #40]
hyp_create_mappings:79.8 (mm.c) Sbepe end = ║PAGE_ALIGN(end);
~ 0000a8c8: f94013e8 ldr x8, [sp, #32]
~ 0000a8cc: 913ffd08 add x8, x8, #0xfff
~ 0000a8d0: 9274cd08 and x8, x8, #0xfffffffffffff000
hyp_create_mappings:79.6 (mm.c) sbepe end ║= PAGE_ALIGN(end);
~ 0000a8d4: f90013e8 str x8, [sp, #32]
hyp_create_mappings:81.19 (mm.c) Sbepe for (virt_addr = ║start; virt_addr < end; virt_addr += PAGE_SIZE) {
~ 0000a8d8: f94017e8 ldr x8, [sp, #40]
hyp_create_mappings:81.17 (mm.c) sbepe for (virt_addr ║= start; virt_addr < end; virt_addr += PAGE_SIZE) {
~ 0000a8dc: f9000fe8 str x8, [sp, #24]
hyp_create_mappings:81.7 (mm.c) sbepe for (║virt_addr = start; virt_addr < end; virt_addr += PAGE_SIZE) {
~ ┌─0000a8e0: 14000001 b a8e4 <hyp_create_mappings+0x50>
│
│ hyp_create_mappings:81.26 (mm.c) sbepe for (virt_addr = start; ║virt_addr < end; virt_addr += PAGE_SIZE) {
~ ╔═══>└>0000a8e4: f9400fe8 ldr x8, [sp, #24] <- 0000a8e0(b)<hyp_create_mappings+0x50>,v0000a94c(b)<hyp_create_mappings+0x50>
║ hyp_create_mappings:81.38 (mm.c) sbepe for (virt_addr = start; virt_addr < ║end; virt_addr += PAGE_SIZE) {
~ ║ 0000a8e8: f94013e9 ldr x9, [sp, #32]
║ hyp_create_mappings:81.2 (mm.c) sbepe ║for (virt_addr = start; virt_addr < end; virt_addr += PAGE_SIZE) {
~ ║ 0000a8ec: eb090108 subs x8, x8, x9
~ ║┌─────0000a8f0: 54000302 b.cs a950 <hyp_create_mappings+0xbc> // b.hs, b.nlast
║│
~ ║│ ┌─0000a8f4: 14000001 b a8f8 <hyp_create_mappings+0x64> <- 0000a8f0(b.cc-succ)<fallthrough>
║│ │
║│ │ hyp_create_mappings:84.35 (mm.c) Sbepe phys = hyp_virt_to_phys((void *)║virt_addr);
+err var int (base type, DW_ATE_signed size:4) 0xa8f8 0xa940 (DW_OP_breg31 0xc) lexblock:hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:82
~ ║│ └>0000a8f8: f9400fe0 ldr x0, [sp, #24] <- 0000a8f4(b)<hyp_create_mappings+0x64>
║│ hyp_create_mappings:84.10 (mm.c) sbepe phys = ║hyp_virt_to_phys((void *)virt_addr);
~ ║│ 0000a8fc: 9400001c bl a96c <hyp_virt_to_phys>
║│
║│ hyp_create_mappings:84.8 (mm.c) sbepe phys ║= hyp_virt_to_phys((void *)virt_addr);
~ ║│ 0000a900: f9000be0 str x0, [sp, #16] <- 0000a8fc(bl-succ)<return>
║│ hyp_create_mappings:85.31 (mm.c) Sbepe err = __hyp_create_mappings(║virt_addr, PAGE_SIZE, phys, prot);
~ ║│ 0000a904: f9400fe0 ldr x0, [sp, #24]
║│ hyp_create_mappings:85.53 (mm.c) sbepe err = __hyp_create_mappings(virt_addr, PAGE_SIZE, ║phys, prot);
~ ║│ 0000a908: f9400be2 ldr x2, [sp, #16]
║│ hyp_create_mappings:85.59 (mm.c) sbepe err = __hyp_create_mappings(virt_addr, PAGE_SIZE, phys, ║prot);
~ ║│ 0000a90c: b85e43a8 ldur w8, [x29, #-28]
~ ║│ 0000a910: 2a0803e3 mov w3, w8
~ ║│ 0000a914: 52820008 mov w8, #0x1000 // #4096
~ ║│ 0000a918: 2a0803e1 mov w1, w8
║│ hyp_create_mappings:85.9 (mm.c) sbepe err = ║__hyp_create_mappings(virt_addr, PAGE_SIZE, phys, prot);
~ ║│ 0000a91c: 97ffff67 bl a6b8 <__hyp_create_mappings>
║│
║│ hyp_create_mappings:85.7 (mm.c) sbepe err ║= __hyp_create_mappings(virt_addr, PAGE_SIZE, phys, prot);
~ ║│ 0000a920: b9000fe0 str w0, [sp, #12] <- 0000a91c(bl-succ)<return>
║│ hyp_create_mappings:86.7 (mm.c) Sbepe if (║err)
~ ║│ 0000a924: b9400fe8 ldr w8, [sp, #12]
║│ hyp_create_mappings:86.7 (mm.c) sbepe if (║err)
~ ║│ ┌───0000a928: 340000a8 cbz w8, a93c <hyp_create_mappings+0xa8>
║│ │
~ ║│ │ ┌─0000a92c: 14000001 b a930 <hyp_create_mappings+0x9c> <- 0000a928(b.cc-succ)<fallthrough>
║│ │ │
║│ │ │ hyp_create_mappings:87.11 (mm.c) Sbepe return ║err;
~ ║│ │ └>0000a930: b9400fe8 ldr w8, [sp, #12] <- 0000a92c(b)<hyp_create_mappings+0x9c>
║│ │ hyp_create_mappings:87.4 (mm.c) sbepe ║return err;
~ ║│ │ 0000a934: b81fc3a8 stur w8, [x29, #-4]
~ ║│┌┼───0000a938: 14000009 b a95c <hyp_create_mappings+0xc8>
║│││
║│││ hyp_create_mappings:88.2 (mm.c) Sbepe }
~ ║││└>┌─0000a93c: 14000001 b a940 <hyp_create_mappings+0xac> <- 0000a928(b.cc)<hyp_create_mappings+0xa8>
-err var int (base type, DW_ATE_signed size:4) 0xa8f8 0xa940 (DW_OP_breg31 0xc) lexblock:hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:82
║││ │
║││ │ hyp_create_mappings:81.53 (mm.c) Sbepe for (virt_addr = start; virt_addr < end; virt_addr ║+= PAGE_SIZE) {
~ ║││ └>0000a940: f9400fe8 ldr x8, [sp, #24] <- 0000a93c(b)<hyp_create_mappings+0xac>
~ ║││ 0000a944: 91400508 add x8, x8, #0x1, lsl #12
~ ║││ 0000a948: f9000fe8 str x8, [sp, #24]
║││ hyp_create_mappings:81.2 (mm.c) sbepe ║for (virt_addr = start; virt_addr < end; virt_addr += PAGE_SIZE) {
~ ╚╪╪════0000a94c: 17ffffe6 b a8e4 <hyp_create_mappings+0x50>
││
~ └┼───>0000a950: 2a1f03e8 mov w8, wzr <- 0000a8f0(b.cc)<hyp_create_mappings+0xbc>
│ hyp_create_mappings:90.2 (mm.c) Sbepe ║return 0;
~ │ 0000a954: b81fc3a8 stur w8, [x29, #-4]
~ │ ┌─0000a958: 14000001 b a95c <hyp_create_mappings+0xc8>
│ │
│ │ hyp_create_mappings:91.1 (mm.c) Sbepe ║}
~ └─>└>0000a95c: b85fc3a0 ldur w0, [x29, #-4] <- 0000a938(b)<hyp_create_mappings+0xc8>,0000a958(b)<hyp_create_mappings+0xc8>
~ 0000a960: a9457bfd ldp x29, x30, [sp, #80]
~ 0000a964: 910183ff add sp, sp, #0x60
0000a8a0 CFA:r29+16 r29:c-16 r30:c-8
~ 0000a968: d65f03c0 ret
-from param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x10) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
-to param pointer(no type) 0xa894 0xa96c (DW_OP_fbreg -0x18) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
-prot param enum kvm_pgtable_prot<7b0a4>/<896dd> 0xa894 0xa96c (DW_OP_fbreg -0x1c) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:71
-start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x28) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:73
-end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x20) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:74
-virt_addr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa894 0xa96c (DW_OP_breg31 0x18) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:75
-phys var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa894 0xa96c (DW_OP_breg31 0x10) hyp_create_mappings:arch/arm64/kvm/hyp/nvhe/mm.c:76
**0000a96c <hyp_virt_to_phys>:
+ hyp_virt_to_phys params:
+addr param pointer(no type) 0xa96c 0xa98c (DW_OP_fbreg 0x8)
hyp_virt_to_phys:36.0 (memory.h) Sbepe ║{
0000a96c CFA:r31
+addr param pointer(no type) 0xa96c 0xa98c (DW_OP_fbreg 0x8) hyp_virt_to_phys:arch/arm64/kvm/hyp/nvhe/mm.c:35
~ 0000a96c: d10043ff sub sp, sp, #0x10 <- 0000a8fc(bl)<hyp_virt_to_phys>,0000ad80(bl)<hyp_virt_to_phys>,0000adb4(bl)<hyp_virt_to_phys>
~ 0000a970: f90007e0 str x0, [sp, #8]
hyp_virt_to_phys:37.9 (memory.h) SbePe return ║__hyp_pa(addr);
~ 0000a974: f94007e8 ldr x8, [sp, #8]
~ 0000a978: 90000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000a97c: f9439d29 ldr x9, [x9, #1848]
~ 0000a980: 8b090100 add x0, x8, x9
hyp_virt_to_phys:37.2 (memory.h) sbepe ║return __hyp_pa(addr);
~ 0000a984: 910043ff add sp, sp, #0x10
0000a970 CFA:r31+16
~ 0000a988: d65f03c0 ret
-addr param pointer(no type) 0xa96c 0xa98c (DW_OP_fbreg 0x8) hyp_virt_to_phys:arch/arm64/kvm/hyp/nvhe/mm.c:35
**0000a98c <hyp_back_vmemmap>:
+ hyp_back_vmemmap params:
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_fbreg -0x8)
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_fbreg -0x10)
+back param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_breg31 0x18)
hyp_back_vmemmap:94.0 (mm.c) Sbepe ║{
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_fbreg -0x8) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_fbreg -0x10) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
+back param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_breg31 0x18) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
+start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_breg31 0x10) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:95
+end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_breg31 0x8) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:95
~ 0000a98c: d10103ff sub sp, sp, #0x40 <- 0000a018(bl)<hyp_back_vmemmap>
~ 0000a990: a9037bfd stp x29, x30, [sp, #48]
0000a98c CFA:r31 r29:u r30:u
~ 0000a994: 9100c3fd add x29, sp, #0x30
~ 0000a998: f81f83a0 stur x0, [x29, #-8]
~ 0000a99c: f81f03a1 stur x1, [x29, #-16]
~ 0000a9a0: f9000fe2 str x2, [sp, #24]
hyp_back_vmemmap:97.20 (mm.c) SbePe hyp_vmemmap_range(║phys, size, &start, &end);
~ 0000a9a4: f85f83a0 ldur x0, [x29, #-8]
hyp_back_vmemmap:97.26 (mm.c) sbepe hyp_vmemmap_range(phys, ║size, &start, &end);
~ 0000a9a8: f85f03a1 ldur x1, [x29, #-16]
~ 0000a9ac: 910043e2 add x2, sp, #0x10
~ 0000a9b0: 910023e3 add x3, sp, #0x8
hyp_back_vmemmap:97.2 (mm.c) sbepe ║hyp_vmemmap_range(phys, size, &start, &end);
~ 0000a9b4: 9400000c bl a9e4 <hyp_vmemmap_range>
hyp_back_vmemmap:99.31 (mm.c) Sbepe return __hyp_create_mappings(║start, end - start, back, PAGE_HYP);
~ 0000a9b8: f9400be8 ldr x8, [sp, #16] <- 0000a9b4(bl-succ)<return>
hyp_back_vmemmap:99.38 (mm.c) sbepe return __hyp_create_mappings(start, ║end - start, back, PAGE_HYP);
~ 0000a9bc: f94007e9 ldr x9, [sp, #8]
hyp_back_vmemmap:99.42 (mm.c) sbepe return __hyp_create_mappings(start, end ║- start, back, PAGE_HYP);
~ 0000a9c0: eb080121 subs x1, x9, x8
hyp_back_vmemmap:99.51 (mm.c) sbepe return __hyp_create_mappings(start, end - start, ║back, PAGE_HYP);
~ 0000a9c4: f9400fe2 ldr x2, [sp, #24]
~ 0000a9c8: 528000ca mov w10, #0x6 // #6
~ 0000a9cc: 2a0a03e3 mov w3, w10
hyp_back_vmemmap:99.9 (mm.c) sbepe return ║__hyp_create_mappings(start, end - start, back, PAGE_HYP);
~ 0000a9d0: aa0803e0 mov x0, x8
~ 0000a9d4: 97ffff39 bl a6b8 <__hyp_create_mappings>
hyp_back_vmemmap:99.2 (mm.c) sbepe ║return __hyp_create_mappings(start, end - start, back, PAGE_HYP);
~ 0000a9d8: a9437bfd ldp x29, x30, [sp, #48] <- 0000a9d4(bl-succ)<return>
~ 0000a9dc: 910103ff add sp, sp, #0x40
0000a998 CFA:r29+16 r29:c-16 r30:c-8
~ 0000a9e0: d65f03c0 ret
-phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_fbreg -0x8) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
-size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_fbreg -0x10) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
-back param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa98c 0xa9e4 (DW_OP_breg31 0x18) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:93
-start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_breg31 0x10) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:95
-end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa98c 0xa9e4 (DW_OP_breg31 0x8) hyp_back_vmemmap:arch/arm64/kvm/hyp/nvhe/mm.c:95
**0000a9e4 <hyp_vmemmap_range>:
+ hyp_vmemmap_range params:
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa9e4 0xaa70 (DW_OP_fbreg 0x28)
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa9e4 0xaa70 (DW_OP_fbreg 0x20)
+start param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x18)
+end param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x10)
hyp_vmemmap_range:32.0 (mm.h) Sbepe ║{
0000a9e4 CFA:r31
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa9e4 0xaa70 (DW_OP_fbreg 0x28) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:30
+size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa9e4 0xaa70 (DW_OP_fbreg 0x20) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:30
+start param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x18) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:31
+end param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x10) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:31
+nr_pages var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa9e4 0xaa70 (DW_OP_fbreg 0x8) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:33
+p var pointer(struct hyp_page<7b0a4>/<89741>) 0xa9e4 0xaa70 (DW_OP_fbreg 0x0) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:34
~ 0000a9e4: d100c3ff sub sp, sp, #0x30 <- 0000a9b4(bl)<hyp_vmemmap_range>
~ 0000a9e8: f90017e0 str x0, [sp, #40]
~ 0000a9ec: f90013e1 str x1, [sp, #32]
~ 0000a9f0: f9000fe2 str x2, [sp, #24]
~ 0000a9f4: f9000be3 str x3, [sp, #16]
hyp_vmemmap_range:33.27 (mm.h) SbePe unsigned long nr_pages = ║size >> PAGE_SHIFT;
~ 0000a9f8: f94013e8 ldr x8, [sp, #32]
hyp_vmemmap_range:33.32 (mm.h) sbepe unsigned long nr_pages = size ║>> PAGE_SHIFT;
~ 0000a9fc: d34cfd08 lsr x8, x8, #12
hyp_vmemmap_range:33.16 (mm.h) sbepe unsigned long ║nr_pages = size >> PAGE_SHIFT;
~ 0000aa00: f90007e8 str x8, [sp, #8]
hyp_vmemmap_range:34.23 (mm.h) Sbepe struct hyp_page *p = ║hyp_phys_to_page(phys);
~ 0000aa04: 90000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000aa08: f944c508 ldr x8, [x8, #2440]
~ 0000aa0c: f94017e9 ldr x9, [sp, #40]
~ 0000aa10: d347fd29 lsr x9, x9, #7
~ 0000aa14: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ 0000aa18: 8b090108 add x8, x8, x9
hyp_vmemmap_range:34.19 (mm.h) sbepe struct hyp_page *║p = hyp_phys_to_page(phys);
~ 0000aa1c: f90003e8 str x8, [sp]
hyp_vmemmap_range:36.26 (mm.h) Sbepe *start = (unsigned long)p;
~ 0000aa20: f94003e8 ldr x8, [sp]
hyp_vmemmap_range:36.3 (mm.h) sbepe *║start = (unsigned long)p;
~ 0000aa24: f9400fe9 ldr x9, [sp, #24]
hyp_vmemmap_range:36.9 (mm.h) sbepe *start ║= (unsigned long)p;
~ 0000aa28: f9000128 str x8, [x9]
hyp_vmemmap_range:37.10 (mm.h) Sbepe *end = *║start + nr_pages * sizeof(struct hyp_page);
~ 0000aa2c: f9400fe8 ldr x8, [sp, #24]
hyp_vmemmap_range:37.9 (mm.h) sbepe *end = ║*start + nr_pages * sizeof(struct hyp_page);
~ 0000aa30: f9400108 ldr x8, [x8]
hyp_vmemmap_range:37.18 (mm.h) sbepe *end = *start + ║nr_pages * sizeof(struct hyp_page);
~ 0000aa34: f94007e9 ldr x9, [sp, #8]
hyp_vmemmap_range:37.16 (mm.h) sbepe *end = *start ║+ nr_pages * sizeof(struct hyp_page);
~ 0000aa38: 8b091508 add x8, x8, x9, lsl #5
hyp_vmemmap_range:37.3 (mm.h) sbepe *║end = *start + nr_pages * sizeof(struct hyp_page);
~ 0000aa3c: f9400be9 ldr x9, [sp, #16]
hyp_vmemmap_range:37.7 (mm.h) sbepe *end ║= *start + nr_pages * sizeof(struct hyp_page);
~ 0000aa40: f9000128 str x8, [x9]
hyp_vmemmap_range:38.11 (mm.h) Sbepe *start = ║ALIGN_DOWN(*start, PAGE_SIZE);
~ 0000aa44: f9400fe8 ldr x8, [sp, #24]
~ 0000aa48: f9400109 ldr x9, [x8]
~ 0000aa4c: 9274cd29 and x9, x9, #0xfffffffffffff000
hyp_vmemmap_range:38.9 (mm.h) sbepe *start ║= ALIGN_DOWN(*start, PAGE_SIZE);
~ 0000aa50: f9000109 str x9, [x8]
hyp_vmemmap_range:39.9 (mm.h) Sbepe *end = ║ALIGN(*end, PAGE_SIZE);
~ 0000aa54: f9400be8 ldr x8, [sp, #16]
~ 0000aa58: f9400109 ldr x9, [x8]
~ 0000aa5c: 913ffd29 add x9, x9, #0xfff
~ 0000aa60: 9274cd29 and x9, x9, #0xfffffffffffff000
hyp_vmemmap_range:39.7 (mm.h) sbepe *end ║= ALIGN(*end, PAGE_SIZE);
~ 0000aa64: f9000109 str x9, [x8]
hyp_vmemmap_range:40.1 (mm.h) Sbepe ║}
~ 0000aa68: 9100c3ff add sp, sp, #0x30
0000a9e8 CFA:r31+48
~ 0000aa6c: d65f03c0 ret
-phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xa9e4 0xaa70 (DW_OP_fbreg 0x28) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:30
-size param long unsigned int (base type, DW_ATE_unsigned size:8) 0xa9e4 0xaa70 (DW_OP_fbreg 0x20) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:30
-start param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x18) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:31
-end param pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0xa9e4 0xaa70 (DW_OP_fbreg 0x10) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:31
-nr_pages var long unsigned int (base type, DW_ATE_unsigned size:8) 0xa9e4 0xaa70 (DW_OP_fbreg 0x8) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:33
-p var pointer(struct hyp_page<7b0a4>/<89741>) 0xa9e4 0xaa70 (DW_OP_fbreg 0x0) hyp_vmemmap_range:arch/arm64/kvm/hyp/nvhe/mm.c:34
**0000aa70 <hyp_cpu_set_vector>:
+ hyp_cpu_set_vector params:
+slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xaa70 0xab90 (DW_OP_fbreg -0x8)
hyp_cpu_set_vector:104.0 (mm.c) Sbepe ║{
+slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xaa70 0xab90 (DW_OP_fbreg -0x8) hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:103
+vector var pointer(no type) 0xaa70 0xab90 (DW_OP_fbreg -0x10) hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:105
~ 0000aa70: d10203ff sub sp, sp, #0x80 <- 000076b4(bl)<hyp_cpu_set_vector>
~ 0000aa74: a9077bfd stp x29, x30, [sp, #112]
0000aa70 CFA:r31 r29:u r30:u
~ 0000aa78: 9101c3fd add x29, sp, #0x70
~ 0000aa7c: b81f83a0 stur w0, [x29, #-8]
hyp_cpu_set_vector:107.10 (mm.c) SbePe switch (║slot) {
~ 0000aa80: b85f83a8 ldur w8, [x29, #-8]
hyp_cpu_set_vector:107.2 (mm.c) sbepe ║switch (slot) {
~ 0000aa84: 2a0803e9 mov w9, w8
~ 0000aa88: b9001fe9 str w9, [sp, #28]
~ ┌──0000aa8c: 34000168 cbz w8, aab8 <hyp_cpu_set_vector+0x48>
│
~ │┌─0000aa90: 14000001 b aa94 <hyp_cpu_set_vector+0x24> <- 0000aa8c(b.cc-succ)<fallthrough>
││
~ │└>0000aa94: b9401fe8 ldr w8, [sp, #28] <- 0000aa90(b)<hyp_cpu_set_vector+0x24>
│ hyp_cpu_set_vector:107.2 (mm.c) sbepe ║switch (slot) {
~ │ 0000aa98: 71000509 subs w9, w8, #0x1
~ ┌┼──0000aa9c: 540001e0 b.eq aad8 <hyp_cpu_set_vector+0x68> // b.none
││
~ ││┌─0000aaa0: 14000001 b aaa4 <hyp_cpu_set_vector+0x34> <- 0000aa9c(b.cc-succ)<fallthrough>
│││
~ ││└>0000aaa4: b9401fe8 ldr w8, [sp, #28] <- 0000aaa0(b)<hyp_cpu_set_vector+0x34>
││ hyp_cpu_set_vector:107.2 (mm.c) sbepe ║switch (slot) {
~ ││ 0000aaa8: 71000909 subs w9, w8, #0x2
~ ││ 0000aaac: 71000929 subs w9, w9, #0x2
~ ││┌─0000aab0: 54000243 b.cc aaf8 <hyp_cpu_set_vector+0x88> // b.lo, b.ul, b.last
│││
~ ┌┼┼┼─0000aab4: 14000015 b ab08 <hyp_cpu_set_vector+0x98> <- 0000aab0(b.cc-succ)<fallthrough>
││││
││││ hyp_cpu_set_vector:109.12 (mm.c) Sbepe vector = ║hyp_symbol_addr(__kvm_hyp_vector);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xaab8 0xaad0 (DW_OP_fbreg -0x18) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:109
~ ││└┼>0000aab8: d0000028 adrp x8, 10000 <el1_sync> <- 0000aa8c(b.cc)<hyp_cpu_set_vector+0x48>
~ ││ │ 0000aabc: 91200108 add x8, x8, #0x800
~ ││ │ 0000aac0: f81e83a8 stur x8, [x29, #-24]
~ ││ │ 0000aac4: f85e83a8 ldur x8, [x29, #-24]
~ ││ │ 0000aac8: f81e03a8 stur x8, [x29, #-32]
~ ││ │ 0000aacc: f85e03a8 ldur x8, [x29, #-32]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xaab8 0xaad0 (DW_OP_fbreg -0x18) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:109
││ │ hyp_cpu_set_vector:109.10 (mm.c) sbepe vector ║= hyp_symbol_addr(__kvm_hyp_vector);
~ ││ │ 0000aad0: f81f03a8 stur x8, [x29, #-16]
││ │ hyp_cpu_set_vector:110.3 (mm.c) Sbepe ║break;
~ ┌┼┼─┼─0000aad4: 14000010 b ab14 <hyp_cpu_set_vector+0xa4>
│││ │
│││ │ hyp_cpu_set_vector:113.12 (mm.c) Sbepe vector = ║hyp_symbol_addr(__bp_harden_hyp_vecs);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xaad8 0xaaf0 (DW_OP_fbreg -0x28) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:113
~ ││└─┼>0000aad8: f0000028 adrp x8, 11000 <__bp_harden_hyp_vecs> <- 0000aa9c(b.cc)<hyp_cpu_set_vector+0x68>
~ ││ │ 0000aadc: 91000108 add x8, x8, #0x0
~ ││ │ 0000aae0: f81d83a8 stur x8, [x29, #-40]
~ ││ │ 0000aae4: f85d83a8 ldur x8, [x29, #-40]
~ ││ │ 0000aae8: f81d03a8 stur x8, [x29, #-48]
~ ││ │ 0000aaec: f85d03a8 ldur x8, [x29, #-48]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xaad8 0xaaf0 (DW_OP_fbreg -0x28) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:113
││ │ hyp_cpu_set_vector:113.10 (mm.c) sbepe vector ║= hyp_symbol_addr(__bp_harden_hyp_vecs);
~ ││ │ 0000aaf0: f81f03a8 stur x8, [x29, #-16]
││ │ hyp_cpu_set_vector:114.3 (mm.c) Sbepe ║break;
~ ││┌─┼─0000aaf4: 14000008 b ab14 <hyp_cpu_set_vector+0xa4>
│││ │
│││ │ hyp_cpu_set_vector:118.20 (mm.c) Sbepe vector = (void *)║__hyp_bp_vect_base;
~ │││ └>0000aaf8: b0000088 adrp x8, 1b000 <hyp_memory+0x460> <- 0000aab0(b.cc)<hyp_cpu_set_vector+0x88>
~ │││ 0000aafc: f941d508 ldr x8, [x8, #936]
│││ hyp_cpu_set_vector:118.10 (mm.c) sbepe vector ║= (void *)__hyp_bp_vect_base;
~ │││ 0000ab00: f81f03a8 stur x8, [x29, #-16]
│││ hyp_cpu_set_vector:119.3 (mm.c) Sbepe ║break;
~ │││ ┌─0000ab04: 14000004 b ab14 <hyp_cpu_set_vector+0xa4>
│││ │
~ │└┼─┼>0000ab08: 128002a8 mov w8, #0xffffffea // #-22 <- 0000aab4(b)<hyp_cpu_set_vector+0x98>
│ │ │ hyp_cpu_set_vector:122.3 (mm.c) Sbepe ║return -EINVAL;
~ │ │ │ 0000ab0c: b81fc3a8 stur w8, [x29, #-4]
~ ┌┼─┼─┼─0000ab10: 1400001c b ab80 <hyp_cpu_set_vector+0x110>
││ │ │
││ │ │ hyp_cpu_set_vector:125.34 (mm.c) Sbepe vector = __kvm_vector_slot2addr(║vector, slot);
~ │└>└>└>0000ab14: f85f03a0 ldur x0, [x29, #-16] <- 0000aad4(b)<hyp_cpu_set_vector+0xa4>,0000aaf4(b)<hyp_cpu_set_vector+0xa4>,0000ab04(b)<hyp_cpu_set_vector+0xa4>
│ hyp_cpu_set_vector:125.42 (mm.c) sbepe vector = __kvm_vector_slot2addr(vector, ║slot);
~ │ 0000ab18: b85f83a1 ldur w1, [x29, #-8]
│ hyp_cpu_set_vector:125.11 (mm.c) sbepe vector = ║__kvm_vector_slot2addr(vector, slot);
~ │ 0000ab1c: 9400001d bl ab90 <__kvm_vector_slot2addr>
│
│ hyp_cpu_set_vector:125.9 (mm.c) sbepe vector ║= __kvm_vector_slot2addr(vector, slot);
~ │ 0000ab20: f81f03a0 stur x0, [x29, #-16] <- 0000ab1c(bl-succ)<return>
│ hyp_cpu_set_vector:126.50 (mm.c) Sbepe *this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)║vector;
~ │ 0000ab24: f85f03a8 ldur x8, [x29, #-16]
~ │ 0000ab28: f9000be8 str x8, [sp, #16]
│ hyp_cpu_set_vector:126.3 (mm.c) sbepe *║this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)vector;
~ │ ┌─0000ab2c: 14000001 b ab30 <hyp_cpu_set_vector+0xc0>
│ │
~ │ └>0000ab30: aa1f03e8 mov x8, xzr <- 0000ab2c(b)<hyp_cpu_set_vector+0xc0>
│ hyp_cpu_set_vector:126.3 (mm.c) sbepe *║this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)vector;
+__vpp_verify var pointer(const(no type)) 0xab34 0xab3c (DW_OP_breg31 0x38) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
~ │ 0000ab34: f9001fe8 str x8, [sp, #56]
~ │ ┌─0000ab38: 14000001 b ab3c <hyp_cpu_set_vector+0xcc>
-__vpp_verify var pointer(const(no type)) 0xab34 0xab3c (DW_OP_breg31 0x38) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
│ │
│ │ hyp_cpu_set_vector:126.3 (mm.c) sbepe *║this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)vector;
+__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xab3c 0xab64 (DW_OP_breg31 0x28) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
~ │ └>0000ab3c: f0000068 adrp x8, 19000 <kvm_host_data> <- 0000ab38(b)<hyp_cpu_set_vector+0xcc>
~ │ 0000ab40: 91384108 add x8, x8, #0xe10
~ │ 0000ab44: f90017e8 str x8, [sp, #40]
~ │ 0000ab48: f94017e8 ldr x8, [sp, #40]
~ │ 0000ab4c: f90007e8 str x8, [sp, #8]
~ │ 0000ab50: 9400001e bl abc8 <__hyp_my_cpu_offset>
│
~ │ 0000ab54: f94007e8 ldr x8, [sp, #8] <- 0000ab50(bl-succ)<return>
~ │ 0000ab58: 8b000108 add x8, x8, x0
~ │ 0000ab5c: f90013e8 str x8, [sp, #32]
~ │ 0000ab60: f94013e8 ldr x8, [sp, #32]
-__ptr var long unsigned int (base type, DW_ATE_unsigned size:8) 0xab3c 0xab64 (DW_OP_breg31 0x28) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
│ hyp_cpu_set_vector:126.3 (mm.c) sbepe *║this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)vector;
+__vpp_verify var pointer(const(no type)) 0xab64 0xab68 (DW_OP_breg31 0x38) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
~ │ 0000ab64: f9001be8 str x8, [sp, #48]
-__vpp_verify var pointer(const(no type)) 0xab64 0xab68 (DW_OP_breg31 0x38) lexblock:hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:126
│ hyp_cpu_set_vector:126.3 (mm.c) sbepe *║this_cpu_ptr(&kvm_hyp_vector) = (unsigned long)vector;
~ │ 0000ab68: f9401be8 ldr x8, [sp, #48]
~ │ 0000ab6c: f9400be9 ldr x9, [sp, #16]
│ hyp_cpu_set_vector:126.33 (mm.c) sbepe *this_cpu_ptr(&kvm_hyp_vector) ║= (unsigned long)vector;
~ │ 0000ab70: f9000109 str x9, [x8]
~ │ 0000ab74: 2a1f03ea mov w10, wzr
│ hyp_cpu_set_vector:128.2 (mm.c) Sbepe ║return 0;
~ │ 0000ab78: b81fc3aa stur w10, [x29, #-4]
~ │ ┌─0000ab7c: 14000001 b ab80 <hyp_cpu_set_vector+0x110>
│ │
│ │ hyp_cpu_set_vector:129.1 (mm.c) Sbepe ║}
~ └───>└>0000ab80: b85fc3a0 ldur w0, [x29, #-4] <- 0000ab10(b)<hyp_cpu_set_vector+0x110>,0000ab7c(b)<hyp_cpu_set_vector+0x110>
~ 0000ab84: a9477bfd ldp x29, x30, [sp, #112]
~ 0000ab88: 910203ff add sp, sp, #0x80
0000aa7c CFA:r29+16 r29:c-16 r30:c-8
~ 0000ab8c: d65f03c0 ret
-slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xaa70 0xab90 (DW_OP_fbreg -0x8) hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:103
-vector var pointer(no type) 0xaa70 0xab90 (DW_OP_fbreg -0x10) hyp_cpu_set_vector:arch/arm64/kvm/hyp/nvhe/mm.c:105
**0000ab90 <__kvm_vector_slot2addr>:
+ __kvm_vector_slot2addr params:
+base param pointer(no type) 0xab90 0xabc8 (DW_OP_fbreg 0x8)
+slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xab90 0xabc8 (DW_OP_fbreg 0x4)
__kvm_vector_slot2addr:200.0 (kvm_mmu.h) Sbepe ║{
0000ab90 CFA:r31
+base param pointer(no type) 0xab90 0xabc8 (DW_OP_fbreg 0x8) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:198
+slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xab90 0xabc8 (DW_OP_fbreg 0x4) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:199
+idx var int (base type, DW_ATE_signed size:4) 0xab90 0xabc8 (DW_OP_fbreg 0x0) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:201
~ 0000ab90: d10043ff sub sp, sp, #0x10 <- 0000ab1c(bl)<__kvm_vector_slot2addr>
~ 0000ab94: f90007e0 str x0, [sp, #8]
~ 0000ab98: b90007e1 str w1, [sp, #4]
__kvm_vector_slot2addr:201.12 (kvm_mmu.h) SbePe int idx = ║slot - (slot != HYP_VECTOR_DIRECT);
~ 0000ab9c: b94007e8 ldr w8, [sp, #4]
__kvm_vector_slot2addr:201.25 (kvm_mmu.h) sbepe int idx = slot - (slot ║!= HYP_VECTOR_DIRECT);
~ 0000aba0: 71000109 subs w9, w8, #0x0
~ 0000aba4: 1a9f07ea cset w10, ne // ne = any
__kvm_vector_slot2addr:201.17 (kvm_mmu.h) sbepe int idx = slot ║- (slot != HYP_VECTOR_DIRECT);
~ 0000aba8: 6b0a0108 subs w8, w8, w10
__kvm_vector_slot2addr:201.6 (kvm_mmu.h) sbepe int ║idx = slot - (slot != HYP_VECTOR_DIRECT);
~ 0000abac: b90003e8 str w8, [sp]
__kvm_vector_slot2addr:203.9 (kvm_mmu.h) Sbepe return ║base + (idx * SZ_2K);
~ 0000abb0: f94007eb ldr x11, [sp, #8]
__kvm_vector_slot2addr:203.17 (kvm_mmu.h) sbepe return base + (║idx * SZ_2K);
~ 0000abb4: b94003e8 ldr w8, [sp]
__kvm_vector_slot2addr:203.21 (kvm_mmu.h) sbepe return base + (idx ║* SZ_2K);
~ 0000abb8: 53155108 lsl w8, w8, #11
__kvm_vector_slot2addr:203.14 (kvm_mmu.h) sbepe return base ║+ (idx * SZ_2K);
~ 0000abbc: 8b28c160 add x0, x11, w8, sxtw
__kvm_vector_slot2addr:203.2 (kvm_mmu.h) sbepe ║return base + (idx * SZ_2K);
~ 0000abc0: 910043ff add sp, sp, #0x10
0000ab94 CFA:r31+16
~ 0000abc4: d65f03c0 ret
-base param pointer(no type) 0xab90 0xabc8 (DW_OP_fbreg 0x8) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:198
-slot param enum arm64_hyp_spectre_vector<7b0a4>/<89702> 0xab90 0xabc8 (DW_OP_fbreg 0x4) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:199
-idx var int (base type, DW_ATE_signed size:4) 0xab90 0xabc8 (DW_OP_fbreg 0x0) __kvm_vector_slot2addr:arch/arm64/kvm/hyp/nvhe/mm.c:201
**0000abc8 <__hyp_my_cpu_offset>:
+ __hyp_my_cpu_offset params: none
__hyp_my_cpu_offset:23.0 (percpu.h) Sbepe ║{
0000abc8 CFA:r31
~ 0000abc8: d10043ff sub sp, sp, #0x10 <- 0000ab50(bl)<__hyp_my_cpu_offset>
__hyp_my_cpu_offset:28.9 (percpu.h) SbePe return ║read_sysreg(tpidr_el2);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0xabcc 0xabe0 (DW_OP_fbreg 0x8) lexblock:__hyp_my_cpu_offset:arch/arm64/kvm/hyp/nvhe/mm.c:28
~ 0000abcc: d53cd048 mrs x8, tpidr_el2
~ 0000abd0: f90007e8 str x8, [sp, #8]
~ 0000abd4: f94007e8 ldr x8, [sp, #8]
~ 0000abd8: f90003e8 str x8, [sp]
~ 0000abdc: f94003e0 ldr x0, [sp]
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0xabcc 0xabe0 (DW_OP_fbreg 0x8) lexblock:__hyp_my_cpu_offset:arch/arm64/kvm/hyp/nvhe/mm.c:28
__hyp_my_cpu_offset:28.2 (percpu.h) sbepe ║return read_sysreg(tpidr_el2);
~ 0000abe0: 910043ff add sp, sp, #0x10
0000abcc CFA:r31+16
~ 0000abe4: d65f03c0 ret
**0000abe8 <hyp_map_vectors>:
+ hyp_map_vectors params: none
hyp_map_vectors:132.0 (mm.c) Sbepe ║{
+bp_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0xabe8 0xad54 (DW_OP_breg31 0x18) hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c:133
~ 0000abe8: d101c3ff sub sp, sp, #0x70 <- 00009fc4(bl)<hyp_map_vectors>
~ 0000abec: a9067bfd stp x29, x30, [sp, #96]
0000abe8 CFA:r31 r29:u r30:u
~ 0000abf0: 910183fd add x29, sp, #0x60
~ 0000abf4: 528001c8 mov w8, #0xe // #14
~ 0000abf8: b9002be8 str w8, [sp, #40]
u: 0xabfc 0xacb4 cpus_have_const_cap inlined from hyp_map_vectors:135 (mm.c) <89c63>:
u cpus_have_const_cap:479.30 (cpufeature.h) SbePe return cpus_have_final_cap(║num);
+num param int (base type, DW_ATE_signed size:4) 0xabfc 0xacb4 (DW_OP_breg31 0x28) cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
~u 0000abfc: b9402be8 ldr w8, [sp, #40]
~u 0000ac00: b90033e8 str w8, [sp, #48]
v: 0xac04 0xacac cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <89c7f>:<89c63>:
w: 0xac04 0xac2c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <89c9c>:<89c7f>:<89c63>:
uvw system_capabilities_finalized:419.9 (cpufeature.h) Sbepe return ║static_branch_likely(&arm64_const_caps_ready);
+num param int (base type, DW_ATE_signed size:4) 0xac04 0xacac (DW_OP_breg31 0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0xac04 0xac2c (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
~uvw 0000ac04: b0000089 adrp x9, 1b000 <hyp_memory+0x460>
~uvw 0000ac08: b9479928 ldr w8, [x9, #1944]
~uvw 0000ac0c: 71000108 subs w8, w8, #0x0
~uvw 0000ac10: 1a9f07ea cset w10, ne // ne = any
~uvw 0000ac14: 381e43aa sturb w10, [x29, #-28]
uvw system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~uvw 0000ac18: 385e43aa ldurb w10, [x29, #-28]
~uvw 0000ac1c: 2a0a03e9 mov w9, w10
~uvw 0000ac20: 92400129 and x9, x9, #0x1
uvw system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~uvw 0000ac24: f81d83a9 stur x9, [x29, #-40]
uvw system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~uvw 0000ac28: f85d83a9 ldur x9, [x29, #-40]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0xac04 0xac2c (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
uv cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~uv ┌────0000ac2c: b4000389 cbz x9, ac9c <hyp_map_vectors+0xb4>
│
~uv │ ┌─0000ac30: 14000001 b ac34 <hyp_map_vectors+0x4c> <- 0000ac2c(b.cc-succ)<fallthrough>
│ │
uv │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~uv │ └>0000ac34: b94033e8 ldr w8, [sp, #48] <- 0000ac30(b)<hyp_map_vectors+0x4c>
~uv │ 0000ac38: b81f83a8 stur w8, [x29, #-8]
x: 0xac3c 0xac9c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <89cc8>:<89c7f>:<89c63>:
uvx │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0xac3c 0xac9c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
~uvx │ 0000ac3c: b85f83a8 ldur w8, [x29, #-8]
uvx │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~uvx │ 0000ac40: 7100f508 subs w8, w8, #0x3d
~uvx │ ┌──0000ac44: 540000ab b.lt ac58 <hyp_map_vectors+0x70> // b.tstop
│ │
~uvx │ │┌─0000ac48: 14000001 b ac4c <hyp_map_vectors+0x64> <- 0000ac44(b.cc-succ)<fallthrough>
│ ││
~uvx │ │└>0000ac4c: 2a1f03e8 mov w8, wzr <- 0000ac48(b)<hyp_map_vectors+0x64>
uvx │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~uvx │ │ 0000ac50: 381ff3a8 sturb w8, [x29, #-1]
~uvx │┌┼──0000ac54: 14000013 b aca0 <hyp_map_vectors+0xb8>
│││
uvx │││ __cpus_have_const_cap:446.9 (cpufeature.h) Sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0xac58 0xac8c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
~uvx ││└─>0000ac58: b89f83a8 ldursw x8, [x29, #-8] <- 0000ac44(b.cc)<hyp_map_vectors+0x70>
~uvx ││ 0000ac5c: d37ced08 lsl x8, x8, #4
~uvx ││ 0000ac60: b0000089 adrp x9, 1b000 <hyp_memory+0x460>
~uvx ││ 0000ac64: 911e8129 add x9, x9, #0x7a0
~uvx ││ 0000ac68: b868692a ldr w10, [x9, x8]
~uvx ││ 0000ac6c: 7100014a subs w10, w10, #0x0
~uvx ││ 0000ac70: 1a9f07eb cset w11, ne // ne = any
~uvx ││ 0000ac74: 381f43ab sturb w11, [x29, #-12]
uvx ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~uvx ││ 0000ac78: 385f43ab ldurb w11, [x29, #-12]
~uvx ││ 0000ac7c: 2a0b03e8 mov w8, w11
~uvx ││ 0000ac80: 92400108 and x8, x8, #0x1
uvx ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~uvx ││ 0000ac84: f81e83a8 stur x8, [x29, #-24]
uvx ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~uvx ││ 0000ac88: f85e83a8 ldur x8, [x29, #-24]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0xac58 0xac8c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
uvx ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~uvx ││ 0000ac8c: f1000108 subs x8, x8, #0x0
~uvx ││ 0000ac90: 1a9f07eb cset w11, ne // ne = any
uvx ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~uvx ││ 0000ac94: 381ff3ab sturb w11, [x29, #-1]
~uvx ││ ┌─0000ac98: 14000002 b aca0 <hyp_map_vectors+0xb8>
-num param int (base type, DW_ATE_signed size:4) 0xac3c 0xac9c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
││ │
uv ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~uv └┼─┼>0000ac9c: d4210000 brk #0x800 <- 0000ac2c(b.cc)<hyp_map_vectors+0xb4>
│ │
y: 0xaca0 0xaca4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <89cc8>:<89c7f>:<89c63>:
uvy │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0xaca0 0xaca4 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
~uvy └>└>0000aca0: 385ff3a8 ldurb w8, [x29, #-1] <- 0000ac54(b)<hyp_map_vectors+0xb8>,0000ac98(b)<hyp_map_vectors+0xb8>
-num param int (base type, DW_ATE_signed size:4) 0xaca0 0xaca4 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
uv cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~uv 0000aca4: 381d73a8 sturb w8, [x29, #-41]
uv cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~uv 0000aca8: 385d73a8 ldurb w8, [x29, #-41]
-num param int (base type, DW_ATE_signed size:4) 0xac04 0xacac (DW_OP_breg31 0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
u cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num);
~u 0000acac: 3900bfe8 strb w8, [sp, #47]
u cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║}
~u 0000acb0: 3940bfe8 ldrb w8, [sp, #47]
-num param int (base type, DW_ATE_signed size:4) 0xabfc 0xacb4 (DW_OP_breg31 0x28) cpus_have_const_cap(inlined):hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c
hyp_map_vectors:135.6 (mm.c) Sbepe if (║!cpus_have_const_cap(ARM64_SPECTRE_V3A))
~ ┌──0000acb4: 370000a8 tbnz w8, #0, acc8 <hyp_map_vectors+0xe0>
│
~ │┌─0000acb8: 14000001 b acbc <hyp_map_vectors+0xd4> <- 0000acb4(b.cc-succ)<fallthrough>
││
~ │└>0000acbc: 2a1f03e8 mov w8, wzr <- 0000acb8(b)<hyp_map_vectors+0xd4>
│ hyp_map_vectors:136.3 (mm.c) Sbepe ║return 0;
~ │ 0000acc0: b90027e8 str w8, [sp, #36]
~ ┌──┼──0000acc4: 14000020 b ad44 <hyp_map_vectors+0x15c>
│ │
│ │ hyp_map_vectors:138.27 (mm.c) Sbepe bp_base = (unsigned long)║hyp_symbol_addr(__bp_harden_hyp_vecs);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xacc8 0xace0 (DW_OP_breg31 0x10) lexblock:hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c:138
~ │ └─>0000acc8: f0000028 adrp x8, 11000 <__bp_harden_hyp_vecs> <- 0000acb4(b.cc)<hyp_map_vectors+0xe0>
~ │ 0000accc: 91000108 add x8, x8, #0x0
~ │ 0000acd0: f9000be8 str x8, [sp, #16]
~ │ 0000acd4: f9400be8 ldr x8, [sp, #16]
~ │ 0000acd8: f90007e8 str x8, [sp, #8]
~ │ 0000acdc: f94007e8 ldr x8, [sp, #8]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xacc8 0xace0 (DW_OP_breg31 0x10) lexblock:hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c:138
│ hyp_map_vectors:138.10 (mm.c) sbepe bp_base ║= (unsigned long)hyp_symbol_addr(__bp_harden_hyp_vecs);
~ │ 0000ace0: f9000fe8 str x8, [sp, #24]
│ hyp_map_vectors:139.12 (mm.c) Sbepe bp_base = ║__hyp_pa(bp_base);
~ │ 0000ace4: f9400fe8 ldr x8, [sp, #24]
~ │ 0000ace8: 90000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 0000acec: f9439d29 ldr x9, [x9, #1848]
~ │ 0000acf0: 8b090108 add x8, x8, x9
│ hyp_map_vectors:139.10 (mm.c) sbepe bp_base ║= __hyp_pa(bp_base);
~ │ 0000acf4: f9000fe8 str x8, [sp, #24]
│ hyp_map_vectors:140.41 (mm.c) Sbepe bp_base = __hyp_create_private_mapping(║bp_base, __BP_HARDEN_HYP_VECS_SZ,
~ │ 0000acf8: f9400fe0 ldr x0, [sp, #24]
~ │ 0000acfc: 5283000a mov w10, #0x1800 // #6144
~ │ 0000ad00: 2a0a03e1 mov w1, w10
~ │ 0000ad04: 528000aa mov w10, #0x5 // #5
~ │ 0000ad08: 2a0a03e2 mov w2, w10
│ hyp_map_vectors:140.12 (mm.c) sbepe bp_base = ║__hyp_create_private_mapping(bp_base, __BP_HARDEN_HYP_VECS_SZ,
~ │ 0000ad0c: 97fffea2 bl a794 <__hyp_create_private_mapping>
│
│ hyp_map_vectors:140.10 (mm.c) sbepe bp_base ║= __hyp_create_private_mapping(bp_base, __BP_HARDEN_HYP_VECS_SZ,
~ │ 0000ad10: f9000fe0 str x0, [sp, #24] <- 0000ad0c(bl-succ)<return>
│ hyp_map_vectors:142.7 (mm.c) Sbepe if (!║bp_base)
~ │ 0000ad14: f9400fe8 ldr x8, [sp, #24]
│ hyp_map_vectors:142.6 (mm.c) sbepe if (║!bp_base)
~ │ ┌──0000ad18: b50000a8 cbnz x8, ad2c <hyp_map_vectors+0x144>
│ │
~ │ │┌─0000ad1c: 14000001 b ad20 <hyp_map_vectors+0x138> <- 0000ad18(b.cc-succ)<fallthrough>
│ ││
~ │ │└>0000ad20: 12800008 mov w8, #0xffffffff // #-1 <- 0000ad1c(b)<hyp_map_vectors+0x138>
│ │ hyp_map_vectors:143.3 (mm.c) Sbepe ║return -1;
~ │ │ 0000ad24: b90027e8 str w8, [sp, #36]
~ │ ┌┼──0000ad28: 14000007 b ad44 <hyp_map_vectors+0x15c>
│ ││
│ ││ hyp_map_vectors:145.31 (mm.c) Sbepe __hyp_bp_vect_base = (void *)║bp_base;
~ │ │└─>0000ad2c: f9400fe8 ldr x8, [sp, #24] <- 0000ad18(b.cc)<hyp_map_vectors+0x144>
│ │ hyp_map_vectors:145.21 (mm.c) sbepe __hyp_bp_vect_base ║= (void *)bp_base;
~ │ │ 0000ad30: b0000089 adrp x9, 1b000 <hyp_memory+0x460>
~ │ │ 0000ad34: f901d528 str x8, [x9, #936]
~ │ │ 0000ad38: 2a1f03ea mov w10, wzr
│ │ hyp_map_vectors:147.2 (mm.c) Sbepe ║return 0;
~ │ │ 0000ad3c: b90027ea str w10, [sp, #36]
~ │ │ ┌─0000ad40: 14000001 b ad44 <hyp_map_vectors+0x15c>
│ │ │
│ │ │ hyp_map_vectors:148.1 (mm.c) Sbepe ║}
~ └>└>└>0000ad44: b94027e0 ldr w0, [sp, #36] <- 0000acc4(b)<hyp_map_vectors+0x15c>,0000ad28(b)<hyp_map_vectors+0x15c>,0000ad40(b)<hyp_map_vectors+0x15c>
~ 0000ad48: a9467bfd ldp x29, x30, [sp, #96]
~ 0000ad4c: 9101c3ff add sp, sp, #0x70
0000abf4 CFA:r29+16 r29:c-16 r30:c-8
~ 0000ad50: d65f03c0 ret
-bp_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0xabe8 0xad54 (DW_OP_breg31 0x18) hyp_map_vectors:arch/arm64/kvm/hyp/nvhe/mm.c:133
**0000ad54 <hyp_create_idmap>:
+ hyp_create_idmap params: none
hyp_create_idmap:151.0 (mm.c) Sbepe ║{
+start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xad54 0xae60 (DW_OP_fbreg -0x8) hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:152
+end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xad54 0xae60 (DW_OP_fbreg -0x10) hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:152
~ 0000ad54: d10103ff sub sp, sp, #0x40 <- 00009fa4(bl)<hyp_create_idmap>
~ 0000ad58: a9037bfd stp x29, x30, [sp, #48]
0000ad54 CFA:r31 r29:u r30:u
~ 0000ad5c: 9100c3fd add x29, sp, #0x30
hyp_create_idmap:154.25 (mm.c) SbePe start = (unsigned long)║hyp_symbol_addr(__hyp_idmap_text_start);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xad60 0xad78 (DW_OP_breg31 0x18) lexblock:hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:154
~ 0000ad60: b0000088 adrp x8, 1b000 <hyp_memory+0x460>
~ 0000ad64: 91200108 add x8, x8, #0x800
~ 0000ad68: f9000fe8 str x8, [sp, #24]
~ 0000ad6c: f9400fe8 ldr x8, [sp, #24]
~ 0000ad70: f9000be8 str x8, [sp, #16]
~ 0000ad74: f9400be8 ldr x8, [sp, #16]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xad60 0xad78 (DW_OP_breg31 0x18) lexblock:hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:154
hyp_create_idmap:154.8 (mm.c) sbepe start ║= (unsigned long)hyp_symbol_addr(__hyp_idmap_text_start);
~ 0000ad78: f81f83a8 stur x8, [x29, #-8]
hyp_create_idmap:155.35 (mm.c) Sbepe start = hyp_virt_to_phys((void *)║start);
~ 0000ad7c: f85f83a0 ldur x0, [x29, #-8]
hyp_create_idmap:155.10 (mm.c) sbepe start = ║hyp_virt_to_phys((void *)start);
~ 0000ad80: 97fffefb bl a96c <hyp_virt_to_phys>
hyp_create_idmap:155.8 (mm.c) sbepe start ║= hyp_virt_to_phys((void *)start);
~ 0000ad84: f81f83a0 stur x0, [x29, #-8] <- 0000ad80(bl-succ)<return>
hyp_create_idmap:156.10 (mm.c) Sbepe start = ║ALIGN_DOWN(start, PAGE_SIZE);
~ 0000ad88: f85f83a8 ldur x8, [x29, #-8]
~ 0000ad8c: 9274cd08 and x8, x8, #0xfffffffffffff000
hyp_create_idmap:156.8 (mm.c) sbepe start ║= ALIGN_DOWN(start, PAGE_SIZE);
~ 0000ad90: f81f83a8 stur x8, [x29, #-8]
hyp_create_idmap:158.23 (mm.c) Sbepe end = (unsigned long)║hyp_symbol_addr(__hyp_idmap_text_end);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xad94 0xadac (DW_OP_breg31 0x8) lexblock:hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:158
~ 0000ad94: b0000088 adrp x8, 1b000 <hyp_memory+0x460>
~ 0000ad98: 91202108 add x8, x8, #0x808
~ 0000ad9c: f90007e8 str x8, [sp, #8]
~ 0000ada0: f94007e8 ldr x8, [sp, #8]
~ 0000ada4: f90003e8 str x8, [sp]
~ 0000ada8: f94003e8 ldr x8, [sp]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0xad94 0xadac (DW_OP_breg31 0x8) lexblock:hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:158
hyp_create_idmap:158.6 (mm.c) sbepe end ║= (unsigned long)hyp_symbol_addr(__hyp_idmap_text_end);
~ 0000adac: f81f03a8 stur x8, [x29, #-16]
hyp_create_idmap:159.33 (mm.c) Sbepe end = hyp_virt_to_phys((void *)║end);
~ 0000adb0: f85f03a0 ldur x0, [x29, #-16]
hyp_create_idmap:159.8 (mm.c) sbepe end = ║hyp_virt_to_phys((void *)end);
~ 0000adb4: 97fffeee bl a96c <hyp_virt_to_phys>
hyp_create_idmap:159.6 (mm.c) sbepe end ║= hyp_virt_to_phys((void *)end);
~ 0000adb8: f81f03a0 stur x0, [x29, #-16] <- 0000adb4(bl-succ)<return>
hyp_create_idmap:160.8 (mm.c) Sbepe end = ║ALIGN(end, PAGE_SIZE);
~ 0000adbc: f85f03a8 ldur x8, [x29, #-16]
~ 0000adc0: 913ffd08 add x8, x8, #0xfff
~ 0000adc4: 9274cd08 and x8, x8, #0xfffffffffffff000
hyp_create_idmap:160.6 (mm.c) sbepe end ║= ALIGN(end, PAGE_SIZE);
~ 0000adc8: f81f03a8 stur x8, [x29, #-16]
hyp_create_idmap:170.18 (mm.c) Sbepe __io_map_base = ║start & BIT(hyp_va_bits - 2);
~ 0000adcc: f85f83a8 ldur x8, [x29, #-8]
hyp_create_idmap:170.26 (mm.c) sbepe __io_map_base = start & ║BIT(hyp_va_bits - 2);
~ 0000add0: b0000089 adrp x9, 1b000 <hyp_memory+0x460>
~ 0000add4: b947d92a ldr w10, [x9, #2008]
~ 0000add8: 7100094a subs w10, w10, #0x2
~ 0000addc: 2a0a03eb mov w11, w10
~ 0000ade0: 5280002a mov w10, #0x1 // #1
~ 0000ade4: 2a0a03ec mov w12, w10
~ 0000ade8: 9acb218b lsl x11, x12, x11
hyp_create_idmap:170.24 (mm.c) sbepe __io_map_base = start ║& BIT(hyp_va_bits - 2);
~ 0000adec: 8a0b0108 and x8, x8, x11
hyp_create_idmap:170.16 (mm.c) sbepe __io_map_base ║= start & BIT(hyp_va_bits - 2);
~ 0000adf0: 9000008b adrp x11, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000adf4: f905cd68 str x8, [x11, #2968]
hyp_create_idmap:171.19 (mm.c) Sbepe __io_map_base ^= ║BIT(hyp_va_bits - 2);
~ 0000adf8: b947d92a ldr w10, [x9, #2008]
~ 0000adfc: 7100094a subs w10, w10, #0x2
~ 0000ae00: 2a0a03e8 mov w8, w10
~ 0000ae04: 9ac82188 lsl x8, x12, x8
hyp_create_idmap:171.16 (mm.c) sbepe __io_map_base ║^= BIT(hyp_va_bits - 2);
~ 0000ae08: f945cd6d ldr x13, [x11, #2968]
~ 0000ae0c: ca0801a8 eor x8, x13, x8
~ 0000ae10: f905cd68 str x8, [x11, #2968]
hyp_create_idmap:172.18 (mm.c) Sbepe __hyp_vmemmap = ║__io_map_base | BIT(hyp_va_bits - 3);
~ 0000ae14: f945cd68 ldr x8, [x11, #2968]
hyp_create_idmap:172.34 (mm.c) sbepe __hyp_vmemmap = __io_map_base | ║BIT(hyp_va_bits - 3);
~ 0000ae18: b947d92a ldr w10, [x9, #2008]
~ 0000ae1c: 71000d4a subs w10, w10, #0x3
~ 0000ae20: 2a0a03e9 mov w9, w10
~ 0000ae24: 9ac92189 lsl x9, x12, x9
hyp_create_idmap:172.32 (mm.c) sbepe __hyp_vmemmap = __io_map_base ║| BIT(hyp_va_bits - 3);
~ 0000ae28: aa090108 orr x8, x8, x9
hyp_create_idmap:172.16 (mm.c) sbepe __hyp_vmemmap ║= __io_map_base | BIT(hyp_va_bits - 3);
~ 0000ae2c: 90000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000ae30: f904c528 str x8, [x9, #2440]
hyp_create_idmap:174.31 (mm.c) Sbepe return __hyp_create_mappings(║start, end - start, start, PAGE_HYP_EXEC);
~ 0000ae34: f85f83a8 ldur x8, [x29, #-8]
hyp_create_idmap:174.38 (mm.c) sbepe return __hyp_create_mappings(start, ║end - start, start, PAGE_HYP_EXEC);
~ 0000ae38: f85f03a9 ldur x9, [x29, #-16]
hyp_create_idmap:174.42 (mm.c) sbepe return __hyp_create_mappings(start, end ║- start, start, PAGE_HYP_EXEC);
~ 0000ae3c: eb080121 subs x1, x9, x8
~ 0000ae40: 528000aa mov w10, #0x5 // #5
~ 0000ae44: 2a0a03e3 mov w3, w10
hyp_create_idmap:174.9 (mm.c) sbepe return ║__hyp_create_mappings(start, end - start, start, PAGE_HYP_EXEC);
~ 0000ae48: aa0803e0 mov x0, x8
~ 0000ae4c: aa0803e2 mov x2, x8
~ 0000ae50: 97fffe1a bl a6b8 <__hyp_create_mappings>
hyp_create_idmap:174.2 (mm.c) sbepe ║return __hyp_create_mappings(start, end - start, start, PAGE_HYP_EXEC);
~ 0000ae54: a9437bfd ldp x29, x30, [sp, #48] <- 0000ae50(bl-succ)<return>
~ 0000ae58: 910103ff add sp, sp, #0x40
0000ad60 CFA:r29+16 r29:c-16 r30:c-8
~ 0000ae5c: d65f03c0 ret
-start var long unsigned int (base type, DW_ATE_unsigned size:8) 0xad54 0xae60 (DW_OP_fbreg -0x8) hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:152
-end var long unsigned int (base type, DW_ATE_unsigned size:8) 0xad54 0xae60 (DW_OP_fbreg -0x10) hyp_create_idmap:arch/arm64/kvm/hyp/nvhe/mm.c:152
**0000ae60 <cpus_have_cap>:
+ cpus_have_cap params:
+num param unsigned int (base type, DW_ATE_unsigned size:4) 0xae60 0xaebc (DW_OP_breg31 0x8)
cpus_have_cap:428.0 (cpufeature.h) Sbepe ║{
+num param unsigned int (base type, DW_ATE_unsigned size:4) 0xae60 0xaebc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/mm.c:427
~ 0000ae60: d10083ff sub sp, sp, #0x20
~ 0000ae64: a9017bfd stp x29, x30, [sp, #16]
0000ae60 CFA:r31 r29:u r30:u
~ 0000ae68: 910043fd add x29, sp, #0x10
~ 0000ae6c: b9000be0 str w0, [sp, #8]
cpus_have_cap:429.6 (cpufeature.h) SbePe if (║num >= ARM64_NCAPS)
~ 0000ae70: b9400be8 ldr w8, [sp, #8]
cpus_have_cap:429.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~ 0000ae74: 7100f508 subs w8, w8, #0x3d
~ ┌──0000ae78: 540000a3 b.cc ae8c <cpus_have_cap+0x2c> // b.lo, b.ul, b.last
│
~ │┌─0000ae7c: 14000001 b ae80 <cpus_have_cap+0x20> <- 0000ae78(b.cc-succ)<fallthrough>
││
~ │└>0000ae80: 2a1f03e8 mov w8, wzr <- 0000ae7c(b)<cpus_have_cap+0x20>
│ cpus_have_cap:430.3 (cpufeature.h) Sbepe ║return false;
~ │ 0000ae84: 381ff3a8 sturb w8, [x29, #-1]
~ ┌┼──0000ae88: 14000009 b aeac <cpus_have_cap+0x4c>
││
││ cpus_have_cap:431.18 (cpufeature.h) Sbepe return test_bit(║num, cpu_hwcaps);
~ │└─>0000ae8c: b9400be0 ldr w0, [sp, #8] <- 0000ae78(b.cc)<cpus_have_cap+0x2c>
│ cpus_have_cap:431.9 (cpufeature.h) sbepe return ║test_bit(num, cpu_hwcaps);
~ │ 0000ae90: b0000081 adrp x1, 1b000 <hyp_memory+0x460>
~ │ 0000ae94: 91218021 add x1, x1, #0x860
~ │ 0000ae98: 94000009 bl aebc <test_bit>
│
~ │ 0000ae9c: 71000008 subs w8, w0, #0x0 <- 0000ae98(bl-succ)<return>
~ │ 0000aea0: 1a9f07e9 cset w9, ne // ne = any
│ cpus_have_cap:431.2 (cpufeature.h) sbepe ║return test_bit(num, cpu_hwcaps);
~ │ 0000aea4: 381ff3a9 sturb w9, [x29, #-1]
~ │ ┌─0000aea8: 14000001 b aeac <cpus_have_cap+0x4c>
│ │
│ │ cpus_have_cap:432.1 (cpufeature.h) Sbepe ║}
~ └>└>0000aeac: 385ff3a0 ldurb w0, [x29, #-1] <- 0000ae88(b)<cpus_have_cap+0x4c>,0000aea8(b)<cpus_have_cap+0x4c>
~ 0000aeb0: a9417bfd ldp x29, x30, [sp, #16]
~ 0000aeb4: 910083ff add sp, sp, #0x20
0000ae6c CFA:r29+16 r29:c-16 r30:c-8
~ 0000aeb8: d65f03c0 ret
-num param unsigned int (base type, DW_ATE_unsigned size:4) 0xae60 0xaebc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/mm.c:427
**0000aebc <test_bit>:
+ test_bit params:
+nr param int (base type, DW_ATE_signed size:4) 0xaebc 0xaefc (DW_OP_fbreg 0xc)
+addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xaebc 0xaefc (DW_OP_fbreg 0x0)
test_bit:105.0 (non-atomic.h) Sbepe ║{
0000aebc CFA:r31
+nr param int (base type, DW_ATE_signed size:4) 0xaebc 0xaefc (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/mm.c:104
+addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xaebc 0xaefc (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/mm.c:104
~ 0000aebc: d10043ff sub sp, sp, #0x10 <- 0000ae98(bl)<test_bit>
~ 0000aec0: b9000fe0 str w0, [sp, #12]
~ 0000aec4: f90003e1 str x1, [sp]
test_bit:106.16 (non-atomic.h) SbePe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 0000aec8: f94003e8 ldr x8, [sp]
test_bit:106.21 (non-atomic.h) sbepe return 1UL & (addr[║BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 0000aecc: b9400fe9 ldr w9, [sp, #12]
~ 0000aed0: 1100fd2a add w10, w9, #0x3f
~ 0000aed4: 7100012b subs w11, w9, #0x0
~ 0000aed8: 1a89b149 csel w9, w10, w9, lt // lt = tstop
~ 0000aedc: 13067d29 asr w9, w9, #6
test_bit:106.16 (non-atomic.h) sbepe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 0000aee0: f869d908 ldr x8, [x8, w9, sxtw #3]
test_bit:106.39 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] >> (║nr & (BITS_PER_LONG-1)));
~ 0000aee4: b9400fe9 ldr w9, [sp, #12]
~ 0000aee8: 2a0903ec mov w12, w9
test_bit:106.35 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] ║>> (nr & (BITS_PER_LONG-1)));
~ 0000aeec: 9acc2508 lsr x8, x8, x12
test_bit:106.13 (non-atomic.h) sbepe return 1UL ║& (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 0000aef0: 12000100 and w0, w8, #0x1
test_bit:106.2 (non-atomic.h) sbepe ║return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 0000aef4: 910043ff add sp, sp, #0x10
~ 0000aef8: d65f03c0 ret
-nr param int (base type, DW_ATE_signed size:4) 0xaebc 0xaefc (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/mm.c:104
-addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0xaebc 0xaefc (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/mm.c:104
~ 0000aefc: 52a0002b mov w11, #0x10000 // #65536
~ 0000af00: b8ab0109 ldadda w11, w9, [x8]
~ 0000af04: d503201f nop
~ 0000af08: d503201f nop
~ 0000af0c: d503201f nop
~ 0000af10: 52800029 mov w9, #0x1 // #1
~ 0000af14: 7869011f staddlh w9, [x8]
0000aec0 CFA:r31+16
~ 0000af18: d503201f nop