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 00004eb4 00006000 arch/arm64/kvm/hyp/nvhe/tlb.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
**00004eb4 <__kvm_tlb_flush_vmid_ipa>:
00004eb4 <$x>:
+ __kvm_tlb_flush_vmid_ipa params:
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38)
+ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30)
+level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c)
__kvm_tlb_flush_vmid_ipa:60.0 (tlb.c) Sbepe ║{
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:58
+ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59
+level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59
+cxt var struct tlb_inv_context<3df69>/<4cded> 0x4eb4 0x5178 (DW_OP_breg31 0x20) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:61
~ 00004eb4: d10303ff sub sp, sp, #0xc0 <- 000072c0(bl)<__kvm_tlb_flush_vmid_ipa>,000144a8(bl)<__kvm_tlb_flush_vmid_ipa>,0001485c(bl)<__kvm_tlb_flush_vmid_ipa>,00015910(bl)<__kvm_tlb_flush_vmid_ipa>,00015b60(bl)<__kvm_tlb_flush_vmid_ipa>
~ 00004eb8: a90b7bfd stp x29, x30, [sp, #176]
00004eb4 CFA:r31 r29:u r30:u
~ 00004ebc: 9102c3fd add x29, sp, #0xb0
~ 00004ec0: f9001fe0 str x0, [sp, #56]
~ 00004ec4: f9001be1 str x1, [sp, #48]
~ 00004ec8: b9002fe2 str w2, [sp, #44]
__kvm_tlb_flush_vmid_ipa:63.2 (tlb.c) SbePe ║dsb(ishst);
~ 00004ecc: d5033a9f dsb ishst
__kvm_tlb_flush_vmid_ipa:66.24 (tlb.c) Sbepe __tlb_switch_to_guest(║mmu, &cxt);
~ 00004ed0: f9401fe0 ldr x0, [sp, #56]
~ 00004ed4: 910083e1 add x1, sp, #0x20
__kvm_tlb_flush_vmid_ipa:66.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt);
~ 00004ed8: 940000a8 bl 5178 <__tlb_switch_to_guest>
__kvm_tlb_flush_vmid_ipa:73.6 (tlb.c) Sbepe ipa ║>>= 12;
~ 00004edc: f9401be8 ldr x8, [sp, #48] <- 00004ed8(bl-succ)<return>
~ 00004ee0: d34cfd08 lsr x8, x8, #12
~ 00004ee4: f9001be8 str x8, [sp, #48]
__kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) Sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─00004ee8: 14000001 b 4eec <__kvm_tlb_flush_vmid_ipa+0x38>
│
│ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
+arg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4eec 0x5054 (DW_OP_breg31 0x18) lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74
~ └>00004eec: f9401be8 ldr x8, [sp, #48] <- 00004ee8(b)<__kvm_tlb_flush_vmid_ipa+0x38>
~ 00004ef0: f9000fe8 str x8, [sp, #24]
~ 00004ef4: 528006e9 mov w9, #0x37 // #55
~ 00004ef8: b90043e9 str w9, [sp, #64]
g: 0x4efc 0x4fb4 cpus_have_const_cap inlined from __kvm_tlb_flush_vmid_ipa:74 (tlb.c) <4c5c8>:<lexical_block>:
g 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) 0x4efc 0x4fb4 (DW_OP_breg31 0x40) cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~g 00004efc: b94043e9 ldr w9, [sp, #64]
~g 00004f00: b9004be9 str w9, [sp, #72]
h: 0x4f04 0x4fac cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4c5e5>:<4c5c8>:<lexical_block>:
i: 0x4f04 0x4f2c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c603>:<4c5e5>:<4c5c8>:<lexical_block>:
ghi 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) 0x4f04 0x4fac (DW_OP_breg31 0x48) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f04 0x4f2c (DW_OP_fbreg -0x54) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghi 00004f04: f00000a8 adrp x8, 1b000 <hyp_memory+0x460>
~ghi 00004f08: b9479909 ldr w9, [x8, #1944]
~ghi 00004f0c: 71000129 subs w9, w9, #0x0
~ghi 00004f10: 1a9f07ea cset w10, ne // ne = any
~ghi 00004f14: 381ac3aa sturb w10, [x29, #-84]
ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghi 00004f18: 385ac3aa ldurb w10, [x29, #-84]
~ghi 00004f1c: 2a0a03e8 mov w8, w10
~ghi 00004f20: 92400108 and x8, x8, #0x1
ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghi 00004f24: f9002be8 str x8, [sp, #80]
ghi system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghi 00004f28: f9402be8 ldr x8, [sp, #80]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f04 0x4f2c (DW_OP_fbreg -0x54) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
gh cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~gh ┌────00004f2c: b4000388 cbz x8, 4f9c <__kvm_tlb_flush_vmid_ipa+0xe8>
│
~gh │ ┌─00004f30: 14000001 b 4f34 <__kvm_tlb_flush_vmid_ipa+0x80> <- 00004f2c(b.cc-succ)<fallthrough>
│ │
gh │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~gh │ └>00004f34: b9404be8 ldr w8, [sp, #72] <- 00004f30(b)<__kvm_tlb_flush_vmid_ipa+0x80>
~gh │ 00004f38: b81c03a8 stur w8, [x29, #-64]
j: 0x4f3c 0x4f9c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c630>:<4c5e5>:<4c5c8>:<lexical_block>:
ghj │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x4f3c 0x4f9c (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghj │ 00004f3c: b85c03a8 ldur w8, [x29, #-64]
ghj │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~ghj │ 00004f40: 7100f508 subs w8, w8, #0x3d
~ghj │ ┌──00004f44: 540000ab b.lt 4f58 <__kvm_tlb_flush_vmid_ipa+0xa4> // b.tstop
│ │
~ghj │ │┌─00004f48: 14000001 b 4f4c <__kvm_tlb_flush_vmid_ipa+0x98> <- 00004f44(b.cc-succ)<fallthrough>
│ ││
~ghj │ │└>00004f4c: 2a1f03e8 mov w8, wzr <- 00004f48(b)<__kvm_tlb_flush_vmid_ipa+0x98>
ghj │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~ghj │ │ 00004f50: 381c73a8 sturb w8, [x29, #-57]
~ghj │┌┼──00004f54: 14000013 b 4fa0 <__kvm_tlb_flush_vmid_ipa+0xec>
│││
ghj │││ __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)) 0x4f58 0x4f8c (DW_OP_fbreg -0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghj ││└─>00004f58: b89c03a8 ldursw x8, [x29, #-64] <- 00004f44(b.cc)<__kvm_tlb_flush_vmid_ipa+0xa4>
~ghj ││ 00004f5c: d37ced08 lsl x8, x8, #4
~ghj ││ 00004f60: f00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~ghj ││ 00004f64: 911e8129 add x9, x9, #0x7a0
~ghj ││ 00004f68: b868692a ldr w10, [x9, x8]
~ghj ││ 00004f6c: 7100014a subs w10, w10, #0x0
~ghj ││ 00004f70: 1a9f07eb cset w11, ne // ne = any
~ghj ││ 00004f74: 381bc3ab sturb w11, [x29, #-68]
ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghj ││ 00004f78: 385bc3ab ldurb w11, [x29, #-68]
~ghj ││ 00004f7c: 2a0b03e8 mov w8, w11
~ghj ││ 00004f80: 92400108 and x8, x8, #0x1
ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghj ││ 00004f84: f81b03a8 stur x8, [x29, #-80]
ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghj ││ 00004f88: f85b03a8 ldur x8, [x29, #-80]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x4f58 0x4f8c (DW_OP_fbreg -0x44) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
ghj ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghj ││ 00004f8c: f1000108 subs x8, x8, #0x0
~ghj ││ 00004f90: 1a9f07eb cset w11, ne // ne = any
ghj ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghj ││ 00004f94: 381c73ab sturb w11, [x29, #-57]
~ghj ││ ┌─00004f98: 14000002 b 4fa0 <__kvm_tlb_flush_vmid_ipa+0xec>
-num param int (base type, DW_ATE_signed size:4) 0x4f3c 0x4f9c (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
││ │
gh ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~gh └┼─┼>00004f9c: d4210000 brk #0x800 <- 00004f2c(b.cc)<__kvm_tlb_flush_vmid_ipa+0xe8>
│ │
k: 0x4fa0 0x4fa4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c630>:<4c5e5>:<4c5c8>:<lexical_block>:
ghk │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x4fa0 0x4fa4 (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghk └>└>00004fa0: 385c73a8 ldurb w8, [x29, #-57] <- 00004f54(b)<__kvm_tlb_flush_vmid_ipa+0xec>,00004f98(b)<__kvm_tlb_flush_vmid_ipa+0xec>
-num param int (base type, DW_ATE_signed size:4) 0x4fa0 0x4fa4 (DW_OP_fbreg -0x40) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
gh cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~gh 00004fa4: 39013fe8 strb w8, [sp, #79]
gh cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~gh 00004fa8: 39413fe8 ldrb w8, [sp, #79]
-num param int (base type, DW_ATE_signed size:4) 0x4f04 0x4fac (DW_OP_breg31 0x48) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
g cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num);
~g 00004fac: 39011fe8 strb w8, [sp, #71]
g cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║}
~g 00004fb0: 39411fe8 ldrb w8, [sp, #71]
-num param int (base type, DW_ATE_signed size:4) 0x4efc 0x4fb4 (DW_OP_breg31 0x40) cpus_have_const_cap(inlined):lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
__kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) Sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ 00004fb4: 71000508 subs w8, w8, #0x1
~ ┌──────00004fb8: 54000441 b.ne 5040 <__kvm_tlb_flush_vmid_ipa+0x18c> // b.any
│
~ │ ┌─00004fbc: 14000001 b 4fc0 <__kvm_tlb_flush_vmid_ipa+0x10c> <- 00004fb8(b.cc-succ)<fallthrough>
│ │
~ │ └>00004fc0: b9402fe8 ldr w8, [sp, #44] <- 00004fbc(b)<__kvm_tlb_flush_vmid_ipa+0x10c>
│ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ │ ┌────00004fc4: 340003e8 cbz w8, 5040 <__kvm_tlb_flush_vmid_ipa+0x18c>
│ │
~ │ │ ┌─00004fc8: 14000001 b 4fcc <__kvm_tlb_flush_vmid_ipa+0x118> <- 00004fc4(b.cc-succ)<fallthrough>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
+ttl var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4fcc 0x5040 (DW_OP_breg31 0x10) lexblock:lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74
~ │ │ └>00004fcc: b9402fe8 ldr w8, [sp, #44] <- 00004fc8(b)<__kvm_tlb_flush_vmid_ipa+0x118>
~ │ │ 00004fd0: 2a0803e9 mov w9, w8
~ │ │ 00004fd4: 92400529 and x9, x9, #0x3
~ │ │ 00004fd8: f9000be9 str x9, [sp, #16]
~ │ │ 00004fdc: 9400010c bl 540c <get_trans_granule>
│ │
~ │ │ 00004fe0: f9400be9 ldr x9, [sp, #16] <- 00004fdc(bl-succ)<return>
~ │ │ 00004fe4: aa000929 orr x9, x9, x0, lsl #2
~ │ │ 00004fe8: f9000be9 str x9, [sp, #16]
~ │ │ 00004fec: f9400fe9 ldr x9, [sp, #24]
~ │ │ 00004ff0: 9250ed29 and x9, x9, #0xffff0fffffffffff
~ │ │ 00004ff4: f9000fe9 str x9, [sp, #24]
│ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ │ │ ┌─00004ff8: 14000001 b 4ffc <__kvm_tlb_flush_vmid_ipa+0x148>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ │ │┌─└>00004ffc: 14000001 b 5000 <__kvm_tlb_flush_vmid_ipa+0x14c> <- 00004ff8(b)<__kvm_tlb_flush_vmid_ipa+0x148>
│ ││
│ ││ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ │┌┼└──>00005000: 14000001 b 5004 <__kvm_tlb_flush_vmid_ipa+0x150> <- 00004ffc(b)<__kvm_tlb_flush_vmid_ipa+0x14c>
│││
│││ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌┼└┼───>00005004: 14000001 b 5008 <__kvm_tlb_flush_vmid_ipa+0x154> <- 00005000(b)<__kvm_tlb_flush_vmid_ipa+0x150>
││ │
││ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└┼─┼───>00005008: 14000001 b 500c <__kvm_tlb_flush_vmid_ipa+0x158> <- 00005004(b)<__kvm_tlb_flush_vmid_ipa+0x154>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└──┼─┼───>0000500c: 14000001 b 5010 <__kvm_tlb_flush_vmid_ipa+0x15c> <- 00005008(b)<__kvm_tlb_flush_vmid_ipa+0x158>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└────┼─┼───>00005010: 14000001 b 5014 <__kvm_tlb_flush_vmid_ipa+0x160> <- 0000500c(b)<__kvm_tlb_flush_vmid_ipa+0x15c>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└──────┼─┼───>00005014: 14000001 b 5018 <__kvm_tlb_flush_vmid_ipa+0x164> <- 00005010(b)<__kvm_tlb_flush_vmid_ipa+0x160>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└────────┼─┼───>00005018: 14000001 b 501c <__kvm_tlb_flush_vmid_ipa+0x168> <- 00005014(b)<__kvm_tlb_flush_vmid_ipa+0x164>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ ┌─└──────────┼─┼───>0000501c: 14000001 b 5020 <__kvm_tlb_flush_vmid_ipa+0x16c> <- 00005018(b)<__kvm_tlb_flush_vmid_ipa+0x168>
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ └────────────┼─┼───>00005020: f9400be8 ldr x8, [sp, #16] <- 0000501c(b)<__kvm_tlb_flush_vmid_ipa+0x16c>
~ │ │ 00005024: d3540d08 ubfiz x8, x8, #44, #4
~ │ │ 00005028: f90007e8 str x8, [sp, #8]
~ │ │ 0000502c: f94007e8 ldr x8, [sp, #8]
│ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ │ │ 00005030: f9400fe9 ldr x9, [sp, #24]
~ │ │ 00005034: aa080128 orr x8, x9, x8
~ │ │ 00005038: f9000fe8 str x8, [sp, #24]
~ │ │ ┌─0000503c: 14000001 b 5040 <__kvm_tlb_flush_vmid_ipa+0x18c>
-ttl var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4fcc 0x5040 (DW_OP_breg31 0x10) lexblock:lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74
│ │ │
│ │ │ __kvm_tlb_flush_vmid_ipa:74.2 (tlb.c) sbepe ║__tlbi_level(ipas2e1is, ipa, level);
~ └>└─>└>00005040: f9400fe8 ldr x8, [sp, #24] <- 00004fb8(b.cc)<__kvm_tlb_flush_vmid_ipa+0x18c>,00004fc4(b.cc)<__kvm_tlb_flush_vmid_ipa+0x18c>,0000503c(b)<__kvm_tlb_flush_vmid_ipa+0x18c>
~ 00005044: d50c8028 tlbi ipas2e1is, x8
~ 00005048: d503201f nop
~ 0000504c: d503201f nop
~ ┌─00005050: 14000001 b 5054 <__kvm_tlb_flush_vmid_ipa+0x1a0>
-arg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x4eec 0x5054 (DW_OP_breg31 0x18) lexblock:__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:74
│
│ __kvm_tlb_flush_vmid_ipa:82.2 (tlb.c) Sbepe ║dsb(ish);
~ └>00005054: d5033b9f dsb ish <- 00005050(b)<__kvm_tlb_flush_vmid_ipa+0x1a0>
__kvm_tlb_flush_vmid_ipa:83.2 (tlb.c) Sbepe ║__tlbi(vmalle1is);
~ 00005058: d508831f tlbi vmalle1is
~ 0000505c: d503201f nop
~ 00005060: d503201f nop
__kvm_tlb_flush_vmid_ipa:84.2 (tlb.c) Sbepe ║dsb(ish);
~ 00005064: d5033b9f dsb ish
__kvm_tlb_flush_vmid_ipa:85.2 (tlb.c) Sbepe ║isb();
~ 00005068: d5033fdf isb
l: 0x506c 0x507c icache_is_vpipt inlined from __kvm_tlb_flush_vmid_ipa:106 (tlb.c) <4c67c>:
l icache_is_vpipt:78.9 (cache.h) Sbepe return ║test_bit(ICACHEF_VPIPT, &__icache_flags);
~l 0000506c: d00000a1 adrp x1, 1b000 <hyp_memory+0x460>
~l 00005070: 911e4021 add x1, x1, #0x790
~l 00005074: 52800020 mov w0, #0x1 // #1
~l 00005078: 940001d5 bl 57cc <test_bit>
__kvm_tlb_flush_vmid_ipa:106.6 (tlb.c) Sbepe if (║icache_is_vpipt())
~ ┌──────0000507c: 34000740 cbz w0, 5164 <__kvm_tlb_flush_vmid_ipa+0x2b0> <- 00005078(bl-succ)<return>
│
~ │ ┌─00005080: 14000001 b 5084 <__kvm_tlb_flush_vmid_ipa+0x1d0> <- 0000507c(b.cc-succ)<fallthrough>
│ │
~ │ └>00005084: 52800388 mov w8, #0x1c // #28 <- 00005080(b)<__kvm_tlb_flush_vmid_ipa+0x1d0>
~ │ 00005088: b81c83a8 stur w8, [x29, #-56]
m: 0x508c 0x5160 __flush_icache_all inlined from __kvm_tlb_flush_vmid_ipa:107 (tlb.c) <4c690>:
n: 0x508c 0x5144 cpus_have_const_cap inlined from __flush_icache_all:132 (cacheflush.h) <4c6a4>:<4c690>:
mn │ 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) 0x508c 0x5144 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~mn │ 0000508c: b85c83a8 ldur w8, [x29, #-56]
~mn │ 00005090: b81d03a8 stur w8, [x29, #-48]
o: 0x5094 0x513c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4c6c0>:<4c6a4>:<4c690>:
p: 0x5094 0x50bc system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c6dd>:<4c6c0>:<4c6a4>:<4c690>:
mnop │ 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) 0x5094 0x513c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5094 0x50bc (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~mnop │ 00005094: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~mnop │ 00005098: b9479928 ldr w8, [x9, #1944]
~mnop │ 0000509c: 71000108 subs w8, w8, #0x0
~mnop │ 000050a0: 1a9f07ea cset w10, ne // ne = any
~mnop │ 000050a4: 381e43aa sturb w10, [x29, #-28]
mnop │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~mnop │ 000050a8: 385e43aa ldurb w10, [x29, #-28]
~mnop │ 000050ac: 2a0a03e9 mov w9, w10
~mnop │ 000050b0: 92400129 and x9, x9, #0x1
mnop │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~mnop │ 000050b4: f81d83a9 stur x9, [x29, #-40]
mnop │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~mnop │ 000050b8: f85d83a9 ldur x9, [x29, #-40]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5094 0x50bc (DW_OP_fbreg -0x1c) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
mno │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~mno │ ┌────000050bc: b4000389 cbz x9, 512c <__kvm_tlb_flush_vmid_ipa+0x278>
│ │
~mno │ │ ┌─000050c0: 14000001 b 50c4 <__kvm_tlb_flush_vmid_ipa+0x210> <- 000050bc(b.cc-succ)<fallthrough>
│ │ │
mno │ │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~mno │ │ └>000050c4: b85d03a8 ldur w8, [x29, #-48] <- 000050c0(b)<__kvm_tlb_flush_vmid_ipa+0x210>
~mno │ │ 000050c8: b81f83a8 stur w8, [x29, #-8]
q: 0x50cc 0x512c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c709>:<4c6c0>:<4c6a4>:<4c690>:
mnoq │ │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x50cc 0x512c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~mnoq │ │ 000050cc: b85f83a8 ldur w8, [x29, #-8]
mnoq │ │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~mnoq │ │ 000050d0: 7100f508 subs w8, w8, #0x3d
~mnoq │ │ ┌──000050d4: 540000ab b.lt 50e8 <__kvm_tlb_flush_vmid_ipa+0x234> // b.tstop
│ │ │
~mnoq │ │ │┌─000050d8: 14000001 b 50dc <__kvm_tlb_flush_vmid_ipa+0x228> <- 000050d4(b.cc-succ)<fallthrough>
│ │ ││
~mnoq │ │ │└>000050dc: 2a1f03e8 mov w8, wzr <- 000050d8(b)<__kvm_tlb_flush_vmid_ipa+0x228>
mnoq │ │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~mnoq │ │ │ 000050e0: 381ff3a8 sturb w8, [x29, #-1]
~mnoq │ │┌┼──000050e4: 14000013 b 5130 <__kvm_tlb_flush_vmid_ipa+0x27c>
│ │││
mnoq │ │││ __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)) 0x50e8 0x511c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~mnoq │ ││└─>000050e8: b89f83a8 ldursw x8, [x29, #-8] <- 000050d4(b.cc)<__kvm_tlb_flush_vmid_ipa+0x234>
~mnoq │ ││ 000050ec: d37ced08 lsl x8, x8, #4
~mnoq │ ││ 000050f0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~mnoq │ ││ 000050f4: 911e8129 add x9, x9, #0x7a0
~mnoq │ ││ 000050f8: b868692a ldr w10, [x9, x8]
~mnoq │ ││ 000050fc: 7100014a subs w10, w10, #0x0
~mnoq │ ││ 00005100: 1a9f07eb cset w11, ne // ne = any
~mnoq │ ││ 00005104: 381f43ab sturb w11, [x29, #-12]
mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~mnoq │ ││ 00005108: 385f43ab ldurb w11, [x29, #-12]
~mnoq │ ││ 0000510c: 2a0b03e8 mov w8, w11
~mnoq │ ││ 00005110: 92400108 and x8, x8, #0x1
mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~mnoq │ ││ 00005114: f81e83a8 stur x8, [x29, #-24]
mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~mnoq │ ││ 00005118: f85e83a8 ldur x8, [x29, #-24]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x50e8 0x511c (DW_OP_fbreg -0xc) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
mnoq │ ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~mnoq │ ││ 0000511c: f1000108 subs x8, x8, #0x0
~mnoq │ ││ 00005120: 1a9f07eb cset w11, ne // ne = any
mnoq │ ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~mnoq │ ││ 00005124: 381ff3ab sturb w11, [x29, #-1]
~mnoq │ ││ ┌─00005128: 14000002 b 5130 <__kvm_tlb_flush_vmid_ipa+0x27c>
-num param int (base type, DW_ATE_signed size:4) 0x50cc 0x512c (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
│ ││ │
mno │ ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~mno │ └┼─┼>0000512c: d4210000 brk #0x800 <- 000050bc(b.cc)<__kvm_tlb_flush_vmid_ipa+0x278>
│ │ │
r: 0x5130 0x5134 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c709>:<4c6c0>:<4c6a4>:<4c690>:
mnor │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x5130 0x5134 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
~mnor │ └>└>00005130: 385ff3a8 ldurb w8, [x29, #-1] <- 000050e4(b)<__kvm_tlb_flush_vmid_ipa+0x27c>,00005128(b)<__kvm_tlb_flush_vmid_ipa+0x27c>
-num param int (base type, DW_ATE_signed size:4) 0x5130 0x5134 (DW_OP_fbreg -0x8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
mno │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~mno │ 00005134: 381d73a8 sturb w8, [x29, #-41]
mno │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~mno │ 00005138: 385d73a8 ldurb w8, [x29, #-41]
-num param int (base type, DW_ATE_signed size:4) 0x5094 0x513c (DW_OP_fbreg -0x30) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
mn │ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num);
~mn │ 0000513c: 381cf3a8 sturb w8, [x29, #-49]
mn │ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║}
~mn │ 00005140: 385cf3a8 ldurb w8, [x29, #-49]
-num param int (base type, DW_ATE_signed size:4) 0x508c 0x5144 (DW_OP_fbreg -0x38) cpus_have_const_cap(inlined):__flush_icache_all(inlined):__kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c
m │ __flush_icache_all:132.6 (cacheflush.h) Sbepe if (║cpus_have_const_cap(ARM64_HAS_CACHE_DIC))
~m │ 00005144: 71000508 subs w8, w8, #0x1
~m │ ┌──00005148: 54000061 b.ne 5154 <__kvm_tlb_flush_vmid_ipa+0x2a0> // b.any
│ │
~m │ │┌─0000514c: 14000001 b 5150 <__kvm_tlb_flush_vmid_ipa+0x29c> <- 00005148(b.cc-succ)<fallthrough>
│ ││
m │ ││ __flush_icache_all:133.3 (cacheflush.h) Sbepe ║return;
~m │┌──┼└>00005150: 14000004 b 5160 <__kvm_tlb_flush_vmid_ipa+0x2ac> <- 0000514c(b)<__kvm_tlb_flush_vmid_ipa+0x29c>
││ │
m ││ │ __flush_icache_all:135.2 (cacheflush.h) Sbepe ║asm("ic ialluis");
~m ││ └─>00005154: d508711f ic ialluis <- 00005148(b.cc)<__kvm_tlb_flush_vmid_ipa+0x2a0>
m ││ __flush_icache_all:136.2 (cacheflush.h) Sbepe ║dsb(ish);
~m ││ 00005158: d5033b9f dsb ish
m ││ __flush_icache_all:137.1 (cacheflush.h) Sbepe ║}
~m ││ ┌─0000515c: 14000001 b 5160 <__kvm_tlb_flush_vmid_ipa+0x2ac>
││ │
││ │ __kvm_tlb_flush_vmid_ipa:107.3 (tlb.c) Sbepe ║__flush_icache_all();
~ │└>┌─└>00005160: 14000001 b 5164 <__kvm_tlb_flush_vmid_ipa+0x2b0> <- 00005150(b)<__kvm_tlb_flush_vmid_ipa+0x2ac>,0000515c(b)<__kvm_tlb_flush_vmid_ipa+0x2ac>
│ │
~ └─>└──>00005164: 910083e0 add x0, sp, #0x20 <- 0000507c(b.cc)<__kvm_tlb_flush_vmid_ipa+0x2b0>,00005160(b)<__kvm_tlb_flush_vmid_ipa+0x2b0>
__kvm_tlb_flush_vmid_ipa:109.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt);
~ 00005168: 940000ac bl 5418 <__tlb_switch_to_host>
__kvm_tlb_flush_vmid_ipa:110.1 (tlb.c) Sbepe ║}
~ 0000516c: a94b7bfd ldp x29, x30, [sp, #176] <- 00005168(bl-succ)<return>
~ 00005170: 910303ff add sp, sp, #0xc0
00004ec0 CFA:r29+16 r29:c-16 r30:c-8
~ 00005174: d65f03c0 ret
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x4eb4 0x5178 (DW_OP_breg31 0x38) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:58
-ipa param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x4eb4 0x5178 (DW_OP_breg31 0x30) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59
-level param int (base type, DW_ATE_signed size:4) 0x4eb4 0x5178 (DW_OP_breg31 0x2c) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:59
-cxt var struct tlb_inv_context<3df69>/<4cded> 0x4eb4 0x5178 (DW_OP_breg31 0x20) __kvm_tlb_flush_vmid_ipa:arch/arm64/kvm/hyp/nvhe/tlb.c:61
**00005178 <__tlb_switch_to_guest>:
+ __tlb_switch_to_guest params:
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28)
+cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20)
__tlb_switch_to_guest:19.0 (tlb.c) Sbepe ║{
00005178 CFA:r31
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:17
+cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:18
~ 00005178: d103c3ff sub sp, sp, #0xf0 <- 00004ed8(bl)<__tlb_switch_to_guest>,000056b4(bl)<__tlb_switch_to_guest>,00005700(bl)<__tlb_switch_to_guest>
~ 0000517c: f90017e0 str x0, [sp, #40]
~ 00005180: f90013e1 str x1, [sp, #32]
~ 00005184: 528004a8 mov w8, #0x25 // #37
~ 00005188: b90033e8 str w8, [sp, #48]
s: 0x518c 0x5234 cpus_have_final_cap inlined from __tlb_switch_to_guest:20 (tlb.c) <4c832>:
t: 0x518c 0x51b4 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4c84e>:<4c832>:
st 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) 0x518c 0x5234 (DW_OP_fbreg 0x30) cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x518c 0x51b4 (DW_OP_fbreg 0x44) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~st 0000518c: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~st 00005190: b9479928 ldr w8, [x9, #1944]
~st 00005194: 71000108 subs w8, w8, #0x0
~st 00005198: 1a9f07ea cset w10, ne // ne = any
~st 0000519c: 390113ea strb w10, [sp, #68]
st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~st 000051a0: 394113ea ldrb w10, [sp, #68]
~st 000051a4: 2a0a03e9 mov w9, w10
~st 000051a8: 92400129 and x9, x9, #0x1
st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~st 000051ac: f9001fe9 str x9, [sp, #56]
st system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~st 000051b0: f9401fe9 ldr x9, [sp, #56]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x518c 0x51b4 (DW_OP_fbreg 0x44) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
s cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~s ┌────000051b4: b4000389 cbz x9, 5224 <__tlb_switch_to_guest+0xac>
│
~s │ ┌─000051b8: 14000001 b 51bc <__tlb_switch_to_guest+0x44> <- 000051b4(b.cc-succ)<fallthrough>
│ │
s │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~s │ └>000051bc: b94033e8 ldr w8, [sp, #48] <- 000051b8(b)<__tlb_switch_to_guest+0x44>
~s │ 000051c0: b9005be8 str w8, [sp, #88]
u: 0x51c4 0x5224 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c87b>:<4c832>:
su │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x51c4 0x5224 (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~su │ 000051c4: b9405be8 ldr w8, [sp, #88]
su │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~su │ 000051c8: 7100f508 subs w8, w8, #0x3d
~su │ ┌──000051cc: 540000ab b.lt 51e0 <__tlb_switch_to_guest+0x68> // b.tstop
│ │
~su │ │┌─000051d0: 14000001 b 51d4 <__tlb_switch_to_guest+0x5c> <- 000051cc(b.cc-succ)<fallthrough>
│ ││
~su │ │└>000051d4: 2a1f03e8 mov w8, wzr <- 000051d0(b)<__tlb_switch_to_guest+0x5c>
su │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~su │ │ 000051d8: 39017fe8 strb w8, [sp, #95]
~su │┌┼──000051dc: 14000013 b 5228 <__tlb_switch_to_guest+0xb0>
│││
su │││ __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)) 0x51e0 0x5214 (DW_OP_fbreg 0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~su ││└─>000051e0: b9805be8 ldrsw x8, [sp, #88] <- 000051cc(b.cc)<__tlb_switch_to_guest+0x68>
~su ││ 000051e4: d37ced08 lsl x8, x8, #4
~su ││ 000051e8: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~su ││ 000051ec: 911e8129 add x9, x9, #0x7a0
~su ││ 000051f0: b868692a ldr w10, [x9, x8]
~su ││ 000051f4: 7100014a subs w10, w10, #0x0
~su ││ 000051f8: 1a9f07eb cset w11, ne // ne = any
~su ││ 000051fc: 390153eb strb w11, [sp, #84]
su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~su ││ 00005200: 394153eb ldrb w11, [sp, #84]
~su ││ 00005204: 2a0b03e8 mov w8, w11
~su ││ 00005208: 92400108 and x8, x8, #0x1
su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~su ││ 0000520c: f90027e8 str x8, [sp, #72]
su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~su ││ 00005210: f94027e8 ldr x8, [sp, #72]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x51e0 0x5214 (DW_OP_fbreg 0x54) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
su ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~su ││ 00005214: f1000108 subs x8, x8, #0x0
~su ││ 00005218: 1a9f07eb cset w11, ne // ne = any
su ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~su ││ 0000521c: 39017feb strb w11, [sp, #95]
~su ││ ┌─00005220: 14000002 b 5228 <__tlb_switch_to_guest+0xb0>
-num param int (base type, DW_ATE_signed size:4) 0x51c4 0x5224 (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
││ │
s ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~s └┼─┼>00005224: d4210000 brk #0x800 <- 000051b4(b.cc)<__tlb_switch_to_guest+0xac>
│ │
v: 0x5228 0x522c (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4c87b>:<4c832>:
sv │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x5228 0x522c (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~sv └>└>00005228: 39417fe8 ldrb w8, [sp, #95] <- 000051dc(b)<__tlb_switch_to_guest+0xb0>,00005220(b)<__tlb_switch_to_guest+0xb0>
-num param int (base type, DW_ATE_signed size:4) 0x5228 0x522c (DW_OP_fbreg 0x58) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
s cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~s 0000522c: 3900dfe8 strb w8, [sp, #55]
s cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~s 00005230: 3940dfe8 ldrb w8, [sp, #55]
-num param int (base type, DW_ATE_signed size:4) 0x518c 0x5234 (DW_OP_fbreg 0x30) cpus_have_final_cap(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
__tlb_switch_to_guest:20.6 (tlb.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
~ 00005234: 71000508 subs w8, w8, #0x1
~ ┌───00005238: 540002e1 b.ne 5294 <__tlb_switch_to_guest+0x11c> // b.any
│
~ │ ┌─0000523c: 14000001 b 5240 <__tlb_switch_to_guest+0xc8> <- 00005238(b.cc-succ)<fallthrough>
│ │
+val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5294 (DW_OP_fbreg 0x18) lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:21
+reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5254 (DW_OP_fbreg 0x10) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:30
~ │ └>00005240: d5382048 mrs x8, tcr_el1 <- 0000523c(b)<__tlb_switch_to_guest+0xc8>
│ __tlb_switch_to_guest:30.20 (tlb.c) Sbepe val = cxt->tcr = ║read_sysreg_el1(SYS_TCR);
~ │ 00005244: f9000be8 str x8, [sp, #16]
~ │ 00005248: f9400be8 ldr x8, [sp, #16]
~ │ 0000524c: f90007e8 str x8, [sp, #8]
~ │ 00005250: f94007e8 ldr x8, [sp, #8]
-reg var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5254 (DW_OP_fbreg 0x10) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:30
│ __tlb_switch_to_guest:30.9 (tlb.c) sbepe val = ║cxt->tcr = read_sysreg_el1(SYS_TCR);
~ │ 00005254: f94013e9 ldr x9, [sp, #32]
│ __tlb_switch_to_guest:30.18 (tlb.c) sbepe val = cxt->tcr ║= read_sysreg_el1(SYS_TCR);
~ │ 00005258: f9000128 str x8, [x9]
│ __tlb_switch_to_guest:30.7 (tlb.c) sbepe val ║= cxt->tcr = read_sysreg_el1(SYS_TCR);
~ │ 0000525c: f9000fe8 str x8, [sp, #24]
│ __tlb_switch_to_guest:31.7 (tlb.c) Sbepe val ║|= TCR_EPD1_MASK | TCR_EPD0_MASK;
~ │ 00005260: f9400fe8 ldr x8, [sp, #24]
~ │ 00005264: 320983ea mov w10, #0x800080 // #8388736
~ │ 00005268: 2a0a03e9 mov w9, w10
~ │ 0000526c: aa090108 orr x8, x8, x9
~ │ 00005270: f9000fe8 str x8, [sp, #24]
│ __tlb_switch_to_guest:32.3 (tlb.c) Sbepe ║write_sysreg_el1(val, SYS_TCR);
~ │ ┌─00005274: 14000001 b 5278 <__tlb_switch_to_guest+0x100>
│ │
│ │ __tlb_switch_to_guest:32.3 (tlb.c) sbepe ║write_sysreg_el1(val, SYS_TCR);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5278 0x528c (DW_OP_fbreg 0x0) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:32
~ │ └>00005278: f9400fe8 ldr x8, [sp, #24] <- 00005274(b)<__tlb_switch_to_guest+0x100>
~ │ 0000527c: f90003e8 str x8, [sp]
~ │ 00005280: f94003e8 ldr x8, [sp]
~ │ 00005284: d5182048 msr tcr_el1, x8
~ │ ┌─00005288: 14000001 b 528c <__tlb_switch_to_guest+0x114>
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5278 0x528c (DW_OP_fbreg 0x0) lexblock:lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:32
│ │
│ │ __tlb_switch_to_guest:33.3 (tlb.c) Sbepe ║isb();
~ │ └>0000528c: d5033fdf isb <- 00005288(b)<__tlb_switch_to_guest+0x114>
│ __tlb_switch_to_guest:34.2 (tlb.c) Sbepe }
~ │ ┌─00005290: 14000001 b 5294 <__tlb_switch_to_guest+0x11c>
-val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5240 0x5294 (DW_OP_fbreg 0x18) lexblock:__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:21
│ │
│ │ __tlb_switch_to_guest:42.22 (tlb.c) Sbepe __load_guest_stage2(║mmu);
~ └>└>00005294: f94017e8 ldr x8, [sp, #40] <- 00005238(b.cc)<__tlb_switch_to_guest+0x11c>,00005290(b)<__tlb_switch_to_guest+0x11c>
~ 00005298: f90033e8 str x8, [sp, #96]
w: 0x529c 0x5400 __load_guest_stage2 inlined from __tlb_switch_to_guest:42 (tlb.c) <4c8fe>:
w __load_guest_stage2:363.16 (kvm_mmu.h) Sbepe __load_stage2(║mmu, kern_hyp_va(mmu->arch)->vtcr);
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x529c 0x5400 (DW_OP_fbreg 0x60) __load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~w 0000529c: f94033e8 ldr x8, [sp, #96]
w __load_guest_stage2:363.21 (kvm_mmu.h) sbepe __load_stage2(mmu, ║kern_hyp_va(mmu->arch)->vtcr);
~w 000052a0: f9401509 ldr x9, [x8, #40]
~w 000052a4: f90037e9 str x9, [sp, #104]
x: 0x52a8 0x52c8 __kern_hyp_va inlined from __load_guest_stage2:363 (kvm_mmu.h) <4c91b>:<4c8fe>:
wx __kern_hyp_va:135.2 (kvm_mmu.h) Sbepe ║asm volatile(ALTERNATIVE_CB("and %0, %0, #1\n"
+v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52a8 0x52c8 (DW_OP_fbreg 0x68) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wx 000052a8: f94037e9 ldr x9, [sp, #104]
~wx 000052ac: 92400129 and x9, x9, #0x1
~wx 000052b0: 93c90529 ror x9, x9, #1
~wx 000052b4: 91000129 add x9, x9, #0x0
~wx 000052b8: 91400129 add x9, x9, #0x0, lsl #12
~wx 000052bc: 93c9fd29 ror x9, x9, #63
~wx 000052c0: f90037e9 str x9, [sp, #104]
wx __kern_hyp_va:142.9 (kvm_mmu.h) Sbepe return v;
~wx 000052c4: f94037e9 ldr x9, [sp, #104]
-v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52a8 0x52c8 (DW_OP_fbreg 0x68) __kern_hyp_va(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
w __load_guest_stage2:363.45 (kvm_mmu.h) Sbepe __load_stage2(mmu, kern_hyp_va(mmu->arch)->║vtcr);
~w 000052c8: f9401929 ldr x9, [x9, #48]
~w 000052cc: f90047e8 str x8, [sp, #136]
~w 000052d0: f90043e9 str x9, [sp, #128]
y: 0x52d4 0x5400 __load_stage2 inlined from __load_guest_stage2:363 (kvm_mmu.h) <4c93a>:<4c8fe>:
wy __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2);
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52d4 0x5400 (DW_OP_fbreg 0x88) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52d4 0x5400 (DW_OP_fbreg 0x80) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52d4 0x52e4 (DW_OP_fbreg 0x78) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wy 000052d4: f94043e8 ldr x8, [sp, #128]
~wy 000052d8: f9003fe8 str x8, [sp, #120]
~wy 000052dc: f9403fe8 ldr x8, [sp, #120]
~wy 000052e0: d51c2148 msr vtcr_el2, x8
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52d4 0x52e4 (DW_OP_fbreg 0x78) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wy __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52e4 0x53fc (DW_OP_fbreg 0x70) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wy 000052e4: f94047e8 ldr x8, [sp, #136]
~wy 000052e8: f9005be8 str x8, [sp, #176]
z: 0x52ec 0x53f0 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
wyz kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid;
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52ec 0x53f0 (DW_OP_fbreg 0xb0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x52ec 0x53f0 (DW_OP_fbreg 0xa8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0xa0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x98) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x90) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyz 000052ec: f9405be8 ldr x8, [sp, #176]
wyz kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid;
~wyz 000052f0: f90057e8 str x8, [sp, #168]
~wyz 000052f4: 528001ea mov w10, #0xf // #15
~wyz 000052f8: b900bbea str w10, [sp, #184]
a: 0x52fc 0x53b8 cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
b: 0x52fc 0x53b8 system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
wyzab 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) 0x52fc 0x53b8 (DW_OP_fbreg 0xb8) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyzab 000052fc: b940bbea ldr w10, [sp, #184]
~wyzab 00005300: b900c3ea str w10, [sp, #192]
c: 0x5304 0x53ac cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
d: 0x5304 0x532c system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4ca21>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
wyzabcd 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) 0x5304 0x53ac (DW_OP_fbreg 0xc0) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5304 0x532c (DW_OP_fbreg 0xd4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyzabcd 00005304: d00000a8 adrp x8, 1b000 <hyp_memory+0x460>
~wyzabcd 00005308: b947990a ldr w10, [x8, #1944]
~wyzabcd 0000530c: 7100014a subs w10, w10, #0x0
~wyzabcd 00005310: 1a9f07eb cset w11, ne // ne = any
~wyzabcd 00005314: 390353eb strb w11, [sp, #212]
wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~wyzabcd 00005318: 394353eb ldrb w11, [sp, #212]
~wyzabcd 0000531c: 2a0b03e8 mov w8, w11
~wyzabcd 00005320: 92400108 and x8, x8, #0x1
wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~wyzabcd 00005324: f90067e8 str x8, [sp, #200]
wyzabcd system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~wyzabcd 00005328: f94067e8 ldr x8, [sp, #200]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5304 0x532c (DW_OP_fbreg 0xd4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wyzabc cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~wyzabc ┌────0000532c: b4000388 cbz x8, 539c <__tlb_switch_to_guest+0x224>
│
~wyzabc │ ┌─00005330: 14000001 b 5334 <__tlb_switch_to_guest+0x1bc> <- 0000532c(b.cc-succ)<fallthrough>
│ │
wyzabc │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~wyzabc │ └>00005334: b940c3e8 ldr w8, [sp, #192] <- 00005330(b)<__tlb_switch_to_guest+0x1bc>
~wyzabc │ 00005338: b900ebe8 str w8, [sp, #232]
e: 0x533c 0x539c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ca4e>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
wyzabce │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x533c 0x539c (DW_OP_fbreg 0xe8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyzabce │ 0000533c: b940ebe8 ldr w8, [sp, #232]
wyzabce │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~wyzabce │ 00005340: 7100f508 subs w8, w8, #0x3d
~wyzabce │ ┌──00005344: 540000ab b.lt 5358 <__tlb_switch_to_guest+0x1e0> // b.tstop
│ │
~wyzabce │ │┌─00005348: 14000001 b 534c <__tlb_switch_to_guest+0x1d4> <- 00005344(b.cc-succ)<fallthrough>
│ ││
~wyzabce │ │└>0000534c: 2a1f03e8 mov w8, wzr <- 00005348(b)<__tlb_switch_to_guest+0x1d4>
wyzabce │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~wyzabce │ │ 00005350: 3903bfe8 strb w8, [sp, #239]
~wyzabce │┌┼──00005354: 14000013 b 53a0 <__tlb_switch_to_guest+0x228>
│││
wyzabce │││ __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)) 0x5358 0x538c (DW_OP_fbreg 0xe4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyzabce ││└─>00005358: b980ebe8 ldrsw x8, [sp, #232] <- 00005344(b.cc)<__tlb_switch_to_guest+0x1e0>
~wyzabce ││ 0000535c: d37ced08 lsl x8, x8, #4
~wyzabce ││ 00005360: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~wyzabce ││ 00005364: 911e8129 add x9, x9, #0x7a0
~wyzabce ││ 00005368: b868692a ldr w10, [x9, x8]
~wyzabce ││ 0000536c: 7100014a subs w10, w10, #0x0
~wyzabce ││ 00005370: 1a9f07eb cset w11, ne // ne = any
~wyzabce ││ 00005374: 390393eb strb w11, [sp, #228]
wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~wyzabce ││ 00005378: 394393eb ldrb w11, [sp, #228]
~wyzabce ││ 0000537c: 2a0b03e8 mov w8, w11
~wyzabce ││ 00005380: 92400108 and x8, x8, #0x1
wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~wyzabce ││ 00005384: f9006fe8 str x8, [sp, #216]
wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~wyzabce ││ 00005388: f9406fe8 ldr x8, [sp, #216]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5358 0x538c (DW_OP_fbreg 0xe4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wyzabce ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~wyzabce ││ 0000538c: f1000108 subs x8, x8, #0x0
~wyzabce ││ 00005390: 1a9f07eb cset w11, ne // ne = any
wyzabce ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~wyzabce ││ 00005394: 3903bfeb strb w11, [sp, #239]
~wyzabce ││ ┌─00005398: 14000002 b 53a0 <__tlb_switch_to_guest+0x228>
-num param int (base type, DW_ATE_signed size:4) 0x533c 0x539c (DW_OP_fbreg 0xe8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
││ │
wyzabc ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~wyzabc └┼─┼>0000539c: d4210000 brk #0x800 <- 0000532c(b.cc)<__tlb_switch_to_guest+0x224>
│ │
f: 0x53a0 0x53a4 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ca4e>:<4ca03>:<4c9e5>:<4c9d0>:<4c98e>:<lexical_block>:<4c93a>:<4c8fe>:
wyzabcf │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x53a0 0x53a4 (DW_OP_fbreg 0xe8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
~wyzabcf └>└>000053a0: 3943bfe8 ldrb w8, [sp, #239] <- 00005354(b)<__tlb_switch_to_guest+0x228>,00005398(b)<__tlb_switch_to_guest+0x228>
-num param int (base type, DW_ATE_signed size:4) 0x53a0 0x53a4 (DW_OP_fbreg 0xe8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wyzabc cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~wyzabc 000053a4: 39031fe8 strb w8, [sp, #199]
wyzabc cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~wyzabc 000053a8: 39431fe8 ldrb w8, [sp, #199]
-num param int (base type, DW_ATE_signed size:4) 0x5304 0x53ac (DW_OP_fbreg 0xc0) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wyzab cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num);
~wyzab 000053ac: 3902ffe8 strb w8, [sp, #191]
wyzab cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║}
~wyzab 000053b0: 3942ffe8 ldrb w8, [sp, #191]
~wyzab 000053b4: 2a0803e9 mov w9, w8
-num param int (base type, DW_ATE_signed size:4) 0x52fc 0x53b8 (DW_OP_fbreg 0xb8) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wyz kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0;
~wyz 000053b8: f9004be9 str x9, [sp, #144]
wyz kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys;
~wyz 000053bc: f9405be9 ldr x9, [sp, #176]
wyz kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys;
~wyz 000053c0: f9400929 ldr x9, [x9, #16]
wyz kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys;
~wyz 000053c4: f9004fe9 str x9, [sp, #152]
wyz kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT;
~wyz 000053c8: f94057e9 ldr x9, [sp, #168]
wyz kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT;
~wyz 000053cc: b9400928 ldr w8, [x9, #8]
~wyz 000053d0: 2a0803e9 mov w9, w8
wyz kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT;
~wyz 000053d4: d3503d29 lsl x9, x9, #48
wyz kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT;
~wyz 000053d8: f90053e9 str x9, [sp, #160]
wyz kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp;
~wyz 000053dc: f9404fe9 ldr x9, [sp, #152]
wyz kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp;
~wyz 000053e0: f94053ea ldr x10, [sp, #160]
wyz kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp;
~wyz 000053e4: aa0a0129 orr x9, x9, x10
wyz kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp;
~wyz 000053e8: f9404bea ldr x10, [sp, #144]
wyz kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp;
~wyz 000053ec: aa0a0129 orr x9, x9, x10
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52ec 0x53f0 (DW_OP_fbreg 0xb0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x52ec 0x53f0 (DW_OP_fbreg 0xa8) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0xa0) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x98) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52ec 0x53f0 (DW_OP_fbreg 0x90) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wy __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
~wy 000053f0: f9003be9 str x9, [sp, #112]
~wy 000053f4: f9403be9 ldr x9, [sp, #112]
~wy 000053f8: d51c2109 msr vttbr_el2, x9
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x52e4 0x53fc (DW_OP_fbreg 0x70) lexblock:__load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
wy __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
~wy 000053fc: d503201f nop
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x529c 0x5400 (DW_OP_fbreg 0x60) __load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x52d4 0x5400 (DW_OP_fbreg 0x88) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
-vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x52d4 0x5400 (DW_OP_fbreg 0x80) __load_stage2(inlined):__load_guest_stage2(inlined):__tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c
__tlb_switch_to_guest:43.2 (tlb.c) Sbepe ║asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT));
~ 00005400: d5033fdf isb
__tlb_switch_to_guest:44.1 (tlb.c) Sbepe ║}
~ 00005404: 9103c3ff add sp, sp, #0xf0
0000517c CFA:r31+240
~ 00005408: d65f03c0 ret
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5178 0x540c (DW_OP_fbreg 0x28) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:17
-cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5178 0x540c (DW_OP_fbreg 0x20) __tlb_switch_to_guest:arch/arm64/kvm/hyp/nvhe/tlb.c:18
**0000540c <get_trans_granule>:
+ get_trans_granule params: none
get_trans_granule:77.0 (tlbflush.h) Sbepe ║{
~ 0000540c: 52800028 mov w8, #0x1 // #1 <- 00004fdc(bl)<get_trans_granule>
~ 00005410: 2a0803e0 mov w0, w8
get_trans_granule:80.3 (tlbflush.h) SbePe ║return TLBI_TTL_TG_4K;
0000540c CFA:r31
~ 00005414: d65f03c0 ret
**00005418 <__tlb_switch_to_host>:
+ __tlb_switch_to_host params:
+cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10)
__tlb_switch_to_host:47.0 (tlb.c) Sbepe ║{
00005418 CFA:r31
+cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10) __tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:46
~ 00005418: d10383ff sub sp, sp, #0xe0 <- 00005168(bl)<__tlb_switch_to_host>,000056d0(bl)<__tlb_switch_to_host>,0000571c(bl)<__tlb_switch_to_host>
~ 0000541c: f9000be0 str x0, [sp, #16]
g: 0x5420 0x55a8 __load_host_stage2 inlined from __tlb_switch_to_host:48 (tlb.c) <4cae3>:
g __load_host_stage2:28.6 (mem_protect.h) SbePe if (║static_branch_likely(&kvm_protected_mode_initialized))
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5420 0x5448 (DW_OP_fbreg 0x2c) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~g 00005420: d00000a8 adrp x8, 1b000 <hyp_memory+0x460>
~g 00005424: b9484109 ldr w9, [x8, #2112]
~g 00005428: 71000129 subs w9, w9, #0x0
~g 0000542c: 1a9f07ea cset w10, ne // ne = any
~g 00005430: 3900b3ea strb w10, [sp, #44]
g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized))
~g 00005434: 3940b3ea ldrb w10, [sp, #44]
~g 00005438: 2a0a03e8 mov w8, w10
~g 0000543c: 92400108 and x8, x8, #0x1
g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized))
~g 00005440: f90013e8 str x8, [sp, #32]
g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized))
~g 00005444: f94013e8 ldr x8, [sp, #32]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5420 0x5448 (DW_OP_fbreg 0x2c) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
g __load_host_stage2:28.6 (mem_protect.h) sbepe if (║static_branch_likely(&kvm_protected_mode_initialized))
~g ┌─────00005448: b4000a68 cbz x8, 5594 <__tlb_switch_to_host+0x17c>
│
~g │ ┌─0000544c: 14000001 b 5450 <__tlb_switch_to_host+0x38> <- 00005448(b.cc-succ)<fallthrough>
│ │
g │ │ __load_host_stage2:29.51 (mem_protect.h) Sbepe __load_stage2(&host_kvm.arch.mmu, host_kvm.arch.║vtcr);
~g │ └>00005450: d00000a8 adrp x8, 1b000 <hyp_memory+0x460> <- 0000544c(b)<__tlb_switch_to_host+0x38>
~g │ 00005454: 910ec108 add x8, x8, #0x3b0
~g │ 00005458: f9401909 ldr x9, [x8, #48]
~g │ 0000545c: f90027e8 str x8, [sp, #72]
~g │ 00005460: f90023e9 str x9, [sp, #64]
h: 0x5464 0x5590 __load_stage2 inlined from __load_host_stage2:29 (mem_protect.h) <4cb0d>:<4cae3>:
gh │ __load_stage2:350.2 (kvm_mmu.h) Sbepe ║write_sysreg(vtcr, vtcr_el2);
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5464 0x5590 (DW_OP_fbreg 0x48) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x5464 0x5590 (DW_OP_fbreg 0x40) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5464 0x5474 (DW_OP_fbreg 0x38) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~gh │ 00005464: f94023e8 ldr x8, [sp, #64]
~gh │ 00005468: f9001fe8 str x8, [sp, #56]
~gh │ 0000546c: f9401fe8 ldr x8, [sp, #56]
~gh │ 00005470: d51c2148 msr vtcr_el2, x8
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5464 0x5474 (DW_OP_fbreg 0x38) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
gh │ __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5474 0x558c (DW_OP_fbreg 0x30) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~gh │ 00005474: f94027e8 ldr x8, [sp, #72]
~gh │ 00005478: f9003be8 str x8, [sp, #112]
i: 0x547c 0x5580 kvm_get_vttbr inlined from __load_stage2:351 (kvm_mmu.h) <4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
ghi │ kvm_get_vttbr:335.27 (kvm_mmu.h) Sbepe struct kvm_vmid *vmid = &║mmu->vmid;
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x547c 0x5580 (DW_OP_fbreg 0x70) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x547c 0x5580 (DW_OP_fbreg 0x68) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghi │ 0000547c: f9403be8 ldr x8, [sp, #112]
ghi │ kvm_get_vttbr:335.19 (kvm_mmu.h) sbepe struct kvm_vmid *║vmid = &mmu->vmid;
~ghi │ 00005480: f90037e8 str x8, [sp, #104]
~ghi │ 00005484: 528001ea mov w10, #0xf // #15
~ghi │ 00005488: b9007bea str w10, [sp, #120]
j: 0x548c 0x5548 cpus_have_const_cap inlined from system_supports_cnp:694 (cpufeature.h) <4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
k: 0x548c 0x5548 system_supports_cnp inlined from kvm_get_vttbr:337 (kvm_mmu.h) <4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
ghijk │ 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) 0x548c 0x5548 (DW_OP_fbreg 0x78) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghijk │ 0000548c: b9407bea ldr w10, [sp, #120]
~ghijk │ 00005490: b90083ea str w10, [sp, #128]
l: 0x5494 0x553c cpus_have_final_cap inlined from cpus_have_const_cap:479 (cpufeature.h) <4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
m: 0x5494 0x54bc system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4cbf1>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
ghijklm │ 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) 0x5494 0x553c (DW_OP_fbreg 0x80) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5494 0x54bc (DW_OP_fbreg 0x94) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghijklm │ 00005494: d00000a8 adrp x8, 1b000 <hyp_memory+0x460>
~ghijklm │ 00005498: b947990a ldr w10, [x8, #1944]
~ghijklm │ 0000549c: 7100014a subs w10, w10, #0x0
~ghijklm │ 000054a0: 1a9f07eb cset w11, ne // ne = any
~ghijklm │ 000054a4: 390253eb strb w11, [sp, #148]
ghijklm │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghijklm │ 000054a8: 394253eb ldrb w11, [sp, #148]
~ghijklm │ 000054ac: 2a0b03e8 mov w8, w11
~ghijklm │ 000054b0: 92400108 and x8, x8, #0x1
ghijklm │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghijklm │ 000054b4: f90047e8 str x8, [sp, #136]
ghijklm │ system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~ghijklm │ 000054b8: f94047e8 ldr x8, [sp, #136]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5494 0x54bc (DW_OP_fbreg 0x94) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
ghijkl │ cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~ghijkl │┌────000054bc: b4000388 cbz x8, 552c <__tlb_switch_to_host+0x114>
││
~ghijkl ││ ┌─000054c0: 14000001 b 54c4 <__tlb_switch_to_host+0xac> <- 000054bc(b.cc-succ)<fallthrough>
││ │
ghijkl ││ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~ghijkl ││ └>000054c4: b94083e8 ldr w8, [sp, #128] <- 000054c0(b)<__tlb_switch_to_host+0xac>
~ghijkl ││ 000054c8: b900abe8 str w8, [sp, #168]
n: 0x54cc 0x552c (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4cc1e>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
ghijkln ││ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x54cc 0x552c (DW_OP_fbreg 0xa8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghijkln ││ 000054cc: b940abe8 ldr w8, [sp, #168]
ghijkln ││ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~ghijkln ││ 000054d0: 7100f508 subs w8, w8, #0x3d
~ghijkln ││ ┌──000054d4: 540000ab b.lt 54e8 <__tlb_switch_to_host+0xd0> // b.tstop
││ │
~ghijkln ││ │┌─000054d8: 14000001 b 54dc <__tlb_switch_to_host+0xc4> <- 000054d4(b.cc-succ)<fallthrough>
││ ││
~ghijkln ││ │└>000054dc: 2a1f03e8 mov w8, wzr <- 000054d8(b)<__tlb_switch_to_host+0xc4>
ghijkln ││ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~ghijkln ││ │ 000054e0: 3902bfe8 strb w8, [sp, #175]
~ghijkln ││┌┼──000054e4: 14000013 b 5530 <__tlb_switch_to_host+0x118>
││││
ghijkln ││││ __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)) 0x54e8 0x551c (DW_OP_fbreg 0xa4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghijkln │││└─>000054e8: b980abe8 ldrsw x8, [sp, #168] <- 000054d4(b.cc)<__tlb_switch_to_host+0xd0>
~ghijkln │││ 000054ec: d37ced08 lsl x8, x8, #4
~ghijkln │││ 000054f0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~ghijkln │││ 000054f4: 911e8129 add x9, x9, #0x7a0
~ghijkln │││ 000054f8: b868692a ldr w10, [x9, x8]
~ghijkln │││ 000054fc: 7100014a subs w10, w10, #0x0
~ghijkln │││ 00005500: 1a9f07eb cset w11, ne // ne = any
~ghijkln │││ 00005504: 390293eb strb w11, [sp, #164]
ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghijkln │││ 00005508: 394293eb ldrb w11, [sp, #164]
~ghijkln │││ 0000550c: 2a0b03e8 mov w8, w11
~ghijkln │││ 00005510: 92400108 and x8, x8, #0x1
ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghijkln │││ 00005514: f9004fe8 str x8, [sp, #152]
ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghijkln │││ 00005518: f9404fe8 ldr x8, [sp, #152]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x54e8 0x551c (DW_OP_fbreg 0xa4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
ghijkln │││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghijkln │││ 0000551c: f1000108 subs x8, x8, #0x0
~ghijkln │││ 00005520: 1a9f07eb cset w11, ne // ne = any
ghijkln │││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~ghijkln │││ 00005524: 3902bfeb strb w11, [sp, #175]
~ghijkln │││ ┌─00005528: 14000002 b 5530 <__tlb_switch_to_host+0x118>
-num param int (base type, DW_ATE_signed size:4) 0x54cc 0x552c (DW_OP_fbreg 0xa8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
│││ │
ghijkl │││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~ghijkl │└┼─┼>0000552c: d4210000 brk #0x800 <- 000054bc(b.cc)<__tlb_switch_to_host+0x114>
│ │ │
o: 0x5530 0x5534 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4cc1e>:<4cbd3>:<4cbb5>:<4cba0>:<4cb5e>:<lexical_block>:<4cb0d>:<4cae3>:
ghijklo │ │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x5530 0x5534 (DW_OP_fbreg 0xa8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ghijklo │ └>└>00005530: 3942bfe8 ldrb w8, [sp, #175] <- 000054e4(b)<__tlb_switch_to_host+0x118>,00005528(b)<__tlb_switch_to_host+0x118>
-num param int (base type, DW_ATE_signed size:4) 0x5530 0x5534 (DW_OP_fbreg 0xa8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
ghijkl │ cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~ghijkl │ 00005534: 39021fe8 strb w8, [sp, #135]
ghijkl │ cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~ghijkl │ 00005538: 39421fe8 ldrb w8, [sp, #135]
-num param int (base type, DW_ATE_signed size:4) 0x5494 0x553c (DW_OP_fbreg 0x80) cpus_have_final_cap(inlined):cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
ghijk │ cpus_have_const_cap:479.3 (cpufeature.h) Sbepe ║return cpus_have_final_cap(num);
~ghijk │ 0000553c: 3901ffe8 strb w8, [sp, #127]
ghijk │ cpus_have_const_cap:484.1 (cpufeature.h) Sbepe ║}
~ghijk │ 00005540: 3941ffe8 ldrb w8, [sp, #127]
~ghijk │ 00005544: 2a0803e9 mov w9, w8
-num param int (base type, DW_ATE_signed size:4) 0x548c 0x5548 (DW_OP_fbreg 0x78) cpus_have_const_cap(inlined):system_supports_cnp(inlined):kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
ghi │ kvm_get_vttbr:337.6 (kvm_mmu.h) Sbepe u64 ║cnp = system_supports_cnp() ? VTTBR_CNP_BIT : 0;
~ghi │ 00005548: f9002be9 str x9, [sp, #80]
ghi │ kvm_get_vttbr:339.10 (kvm_mmu.h) Sbepe baddr = ║mmu->pgd_phys;
~ghi │ 0000554c: f9403be9 ldr x9, [sp, #112]
ghi │ kvm_get_vttbr:339.15 (kvm_mmu.h) sbepe baddr = mmu->║pgd_phys;
~ghi │ 00005550: f9400929 ldr x9, [x9, #16]
ghi │ kvm_get_vttbr:339.8 (kvm_mmu.h) sbepe baddr ║= mmu->pgd_phys;
~ghi │ 00005554: f9002fe9 str x9, [sp, #88]
ghi │ kvm_get_vttbr:340.20 (kvm_mmu.h) Sbepe vmid_field = (u64)║vmid->vmid << VTTBR_VMID_SHIFT;
~ghi │ 00005558: f94037e9 ldr x9, [sp, #104]
ghi │ kvm_get_vttbr:340.15 (kvm_mmu.h) sbepe vmid_field = ║(u64)vmid->vmid << VTTBR_VMID_SHIFT;
~ghi │ 0000555c: b9400928 ldr w8, [x9, #8]
~ghi │ 00005560: 2a0803e9 mov w9, w8
ghi │ kvm_get_vttbr:340.31 (kvm_mmu.h) sbepe vmid_field = (u64)vmid->vmid ║<< VTTBR_VMID_SHIFT;
~ghi │ 00005564: d3503d29 lsl x9, x9, #48
ghi │ kvm_get_vttbr:340.13 (kvm_mmu.h) sbepe vmid_field ║= (u64)vmid->vmid << VTTBR_VMID_SHIFT;
~ghi │ 00005568: f90033e9 str x9, [sp, #96]
ghi │ kvm_get_vttbr:341.9 (kvm_mmu.h) Sbepe return ║kvm_phys_to_vttbr(baddr) | vmid_field | cnp;
~ghi │ 0000556c: f9402fe9 ldr x9, [sp, #88]
ghi │ kvm_get_vttbr:341.36 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | ║vmid_field | cnp;
~ghi │ 00005570: f94033ea ldr x10, [sp, #96]
ghi │ kvm_get_vttbr:341.34 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) ║| vmid_field | cnp;
~ghi │ 00005574: aa0a0129 orr x9, x9, x10
ghi │ kvm_get_vttbr:341.49 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field | ║cnp;
~ghi │ 00005578: f9402bea ldr x10, [sp, #80]
ghi │ kvm_get_vttbr:341.47 (kvm_mmu.h) sbepe return kvm_phys_to_vttbr(baddr) | vmid_field ║| cnp;
~ghi │ 0000557c: aa0a0129 orr x9, x9, x10
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x547c 0x5580 (DW_OP_fbreg 0x70) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
-vmid var pointer(struct kvm_vmid<3df69>/<3e36f>) 0x547c 0x5580 (DW_OP_fbreg 0x68) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
-vmid_field var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x60) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
-baddr var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x58) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
-cnp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x547c 0x5580 (DW_OP_fbreg 0x50) kvm_get_vttbr(inlined):lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
gh │ __load_stage2:351.2 (kvm_mmu.h) Sbepe ║write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
~gh │ 00005580: f9001be9 str x9, [sp, #48]
~gh │ 00005584: f9401be9 ldr x9, [sp, #48]
~gh │ 00005588: d51c2109 msr vttbr_el2, x9
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5474 0x558c (DW_OP_fbreg 0x30) lexblock:__load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
gh │ __load_stage2:358.2 (kvm_mmu.h) Sbepe ║asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
~gh │ 0000558c: d503201f nop
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5464 0x5590 (DW_OP_fbreg 0x48) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
-vtcr param long unsigned int (base type, DW_ATE_unsigned size:8) 0x5464 0x5590 (DW_OP_fbreg 0x40) __load_stage2(inlined):__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
g │ __load_host_stage2:29.3 (mem_protect.h) Sbepe ║__load_stage2(&host_kvm.arch.mmu, host_kvm.arch.vtcr);
~g │ ┌───00005590: 14000006 b 55a8 <__tlb_switch_to_host+0x190>
│ │
~g └─┼──>00005594: aa1f03e8 mov x8, xzr <- 00005448(b.cc)<__tlb_switch_to_host+0x17c>
g │ __load_host_stage2:31.3 (mem_protect.h) Sbepe ║write_sysreg(0, vttbr_el2);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5598 0x55a8 (DW_OP_fbreg 0x18) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~g │ 00005598: f9000fe8 str x8, [sp, #24]
~g │ 0000559c: f9400fe8 ldr x8, [sp, #24]
~g │ 000055a0: d51c2108 msr vttbr_el2, x8
~g │ ┌─000055a4: 14000001 b 55a8 <__tlb_switch_to_host+0x190>
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x5598 0x55a8 (DW_OP_fbreg 0x18) lexblock:__load_host_stage2(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
│ │
~ └>└>000055a8: 528004a8 mov w8, #0x25 // #37 <- 00005590(b)<__tlb_switch_to_host+0x190>,000055a4(b)<__tlb_switch_to_host+0x190>
~ 000055ac: b900b3e8 str w8, [sp, #176]
p: 0x55b0 0x5658 cpus_have_final_cap inlined from __tlb_switch_to_host:50 (tlb.c) <4cc69>:
q: 0x55b0 0x55d8 system_capabilities_finalized inlined from cpus_have_final_cap:459 (cpufeature.h) <4cc86>:<4cc69>:
pq 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) 0x55b0 0x5658 (DW_OP_fbreg 0xb0) cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
+branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x55b0 0x55d8 (DW_OP_fbreg 0xc4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~pq 000055b0: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~pq 000055b4: b9479928 ldr w8, [x9, #1944]
~pq 000055b8: 71000108 subs w8, w8, #0x0
~pq 000055bc: 1a9f07ea cset w10, ne // ne = any
~pq 000055c0: 390313ea strb w10, [sp, #196]
pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~pq 000055c4: 394313ea ldrb w10, [sp, #196]
~pq 000055c8: 2a0a03e9 mov w9, w10
~pq 000055cc: 92400129 and x9, x9, #0x1
pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~pq 000055d0: f9005fe9 str x9, [sp, #184]
pq system_capabilities_finalized:419.9 (cpufeature.h) sbepe return ║static_branch_likely(&arm64_const_caps_ready);
~pq 000055d4: f9405fe9 ldr x9, [sp, #184]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x55b0 0x55d8 (DW_OP_fbreg 0xc4) lexblock:system_capabilities_finalized(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
p cpus_have_final_cap:459.6 (cpufeature.h) Sbepe if (║system_capabilities_finalized())
~p ┌────000055d8: b4000389 cbz x9, 5648 <__tlb_switch_to_host+0x230>
│
~p │ ┌─000055dc: 14000001 b 55e0 <__tlb_switch_to_host+0x1c8> <- 000055d8(b.cc-succ)<fallthrough>
│ │
p │ │ cpus_have_final_cap:460.32 (cpufeature.h) Sbepe return __cpus_have_const_cap(║num);
~p │ └>000055e0: b940b3e8 ldr w8, [sp, #176] <- 000055dc(b)<__tlb_switch_to_host+0x1c8>
~p │ 000055e4: b900dbe8 str w8, [sp, #216]
r: 0x55e8 0x5648 (0 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ccb3>:<4cc69>:
pr │ __cpus_have_const_cap:444.6 (cpufeature.h) Sbepe if (║num >= ARM64_NCAPS)
+num param int (base type, DW_ATE_signed size:4) 0x55e8 0x5648 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~pr │ 000055e8: b940dbe8 ldr w8, [sp, #216]
pr │ __cpus_have_const_cap:444.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~pr │ 000055ec: 7100f508 subs w8, w8, #0x3d
~pr │ ┌──000055f0: 540000ab b.lt 5604 <__tlb_switch_to_host+0x1ec> // b.tstop
│ │
~pr │ │┌─000055f4: 14000001 b 55f8 <__tlb_switch_to_host+0x1e0> <- 000055f0(b.cc-succ)<fallthrough>
│ ││
~pr │ │└>000055f8: 2a1f03e8 mov w8, wzr <- 000055f4(b)<__tlb_switch_to_host+0x1e0>
pr │ │ __cpus_have_const_cap:445.3 (cpufeature.h) Sbepe ║return false;
~pr │ │ 000055fc: 39037fe8 strb w8, [sp, #223]
~pr │┌┼──00005600: 14000013 b 564c <__tlb_switch_to_host+0x234>
│││
pr │││ __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)) 0x5604 0x5638 (DW_OP_fbreg 0xd4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~pr ││└─>00005604: b980dbe8 ldrsw x8, [sp, #216] <- 000055f0(b.cc)<__tlb_switch_to_host+0x1ec>
~pr ││ 00005608: d37ced08 lsl x8, x8, #4
~pr ││ 0000560c: d00000a9 adrp x9, 1b000 <hyp_memory+0x460>
~pr ││ 00005610: 911e8129 add x9, x9, #0x7a0
~pr ││ 00005614: b868692a ldr w10, [x9, x8]
~pr ││ 00005618: 7100014a subs w10, w10, #0x0
~pr ││ 0000561c: 1a9f07eb cset w11, ne // ne = any
~pr ││ 00005620: 390353eb strb w11, [sp, #212]
pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~pr ││ 00005624: 394353eb ldrb w11, [sp, #212]
~pr ││ 00005628: 2a0b03e8 mov w8, w11
~pr ││ 0000562c: 92400108 and x8, x8, #0x1
pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~pr ││ 00005630: f90067e8 str x8, [sp, #200]
pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~pr ││ 00005634: f94067e8 ldr x8, [sp, #200]
-branch var typedef(bool=_Bool (base type, DW_ATE_boolean size:1)) 0x5604 0x5638 (DW_OP_fbreg 0xd4) lexblock:__cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
pr ││ __cpus_have_const_cap:446.9 (cpufeature.h) sbepe return ║static_branch_unlikely(&cpu_hwcap_keys[num]);
~pr ││ 00005638: f1000108 subs x8, x8, #0x0
~pr ││ 0000563c: 1a9f07eb cset w11, ne // ne = any
pr ││ __cpus_have_const_cap:446.2 (cpufeature.h) sbepe ║return static_branch_unlikely(&cpu_hwcap_keys[num]);
~pr ││ 00005640: 39037feb strb w11, [sp, #223]
~pr ││ ┌─00005644: 14000002 b 564c <__tlb_switch_to_host+0x234>
-num param int (base type, DW_ATE_signed size:4) 0x55e8 0x5648 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
││ │
p ││ │ cpus_have_final_cap:462.3 (cpufeature.h) Sbepe ║BUG();
~p └┼─┼>00005648: d4210000 brk #0x800 <- 000055d8(b.cc)<__tlb_switch_to_host+0x230>
│ │
s: 0x564c 0x5650 (1 of 2) __cpus_have_const_cap inlined from cpus_have_final_cap:460 (cpufeature.h) <4ccb3>:<4cc69>:
ps │ │ __cpus_have_const_cap:447.1 (cpufeature.h) Sbepe ║}
+num param int (base type, DW_ATE_signed size:4) 0x564c 0x5650 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
~ps └>└>0000564c: 39437fe8 ldrb w8, [sp, #223] <- 00005600(b)<__tlb_switch_to_host+0x234>,00005644(b)<__tlb_switch_to_host+0x234>
-num param int (base type, DW_ATE_signed size:4) 0x564c 0x5650 (DW_OP_fbreg 0xd8) __cpus_have_const_cap(inlined):cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
p cpus_have_final_cap:460.3 (cpufeature.h) Sbepe ║return __cpus_have_const_cap(num);
~p 00005650: 3902dfe8 strb w8, [sp, #183]
p cpus_have_final_cap:463.1 (cpufeature.h) Sbepe ║}
~p 00005654: 3942dfe8 ldrb w8, [sp, #183]
-num param int (base type, DW_ATE_signed size:4) 0x55b0 0x5658 (DW_OP_fbreg 0xb0) cpus_have_final_cap(inlined):__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c
__tlb_switch_to_host:50.6 (tlb.c) Sbepe if (║cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
~ 00005658: 71000508 subs w8, w8, #0x1
~ ┌─────0000565c: 54000161 b.ne 5688 <__tlb_switch_to_host+0x270> // b.any
│
~ │ ┌─00005660: 14000001 b 5664 <__tlb_switch_to_host+0x24c> <- 0000565c(b.cc-succ)<fallthrough>
│ │
│ │ __tlb_switch_to_host:52.3 (tlb.c) Sbepe ║isb();
~ │ └>00005664: d5033fdf isb <- 00005660(b)<__tlb_switch_to_host+0x24c>
│ __tlb_switch_to_host:54.3 (tlb.c) Sbepe ║write_sysreg_el1(cxt->tcr, SYS_TCR);
~ │ ┌─00005668: 14000001 b 566c <__tlb_switch_to_host+0x254>
│ │
│ │ __tlb_switch_to_host:54.3 (tlb.c) sbepe ║write_sysreg_el1(cxt->tcr, SYS_TCR);
+__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x566c 0x5684 (DW_OP_fbreg 0x8) lexblock:__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:54
~ │ └>0000566c: f9400be8 ldr x8, [sp, #16] <- 00005668(b)<__tlb_switch_to_host+0x254>
~ │ 00005670: f9400108 ldr x8, [x8]
~ │ 00005674: f90007e8 str x8, [sp, #8]
~ │ 00005678: f94007e8 ldr x8, [sp, #8]
~ │ 0000567c: d5182048 msr tcr_el1, x8
~ │ ┌─00005680: 14000001 b 5684 <__tlb_switch_to_host+0x26c>
-__val var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x566c 0x5684 (DW_OP_fbreg 0x8) lexblock:__tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:54
│ │
│ │ __tlb_switch_to_host:55.2 (tlb.c) Sbepe }
~ │ ┌─└>00005684: 14000001 b 5688 <__tlb_switch_to_host+0x270> <- 00005680(b)<__tlb_switch_to_host+0x26c>
│ │
│ │ __tlb_switch_to_host:56.1 (tlb.c) Sbepe ║}
~ └>└──>00005688: 910383ff add sp, sp, #0xe0 <- 0000565c(b.cc)<__tlb_switch_to_host+0x270>,00005684(b)<__tlb_switch_to_host+0x270>
0000541c CFA:r31+224
~ 0000568c: d65f03c0 ret
-cxt param pointer(struct tlb_inv_context<3df69>/<4cded>) 0x5418 0x5690 (DW_OP_fbreg 0x10) __tlb_switch_to_host:arch/arm64/kvm/hyp/nvhe/tlb.c:46
**00005690 <__kvm_tlb_flush_vmid>:
+ __kvm_tlb_flush_vmid params:
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8)
__kvm_tlb_flush_vmid:113.0 (tlb.c) Sbepe ║{
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:112
+cxt var struct tlb_inv_context<3df69>/<4cded> 0x5690 0x56e0 (DW_OP_breg31 0x10) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:114
~ 00005690: d100c3ff sub sp, sp, #0x30 <- 00007314(bl)<__kvm_tlb_flush_vmid>,00015784(bl)<__kvm_tlb_flush_vmid>
~ 00005694: a9027bfd stp x29, x30, [sp, #32]
00005690 CFA:r31 r29:u r30:u
~ 00005698: 910083fd add x29, sp, #0x20
~ 0000569c: f81f83a0 stur x0, [x29, #-8]
__kvm_tlb_flush_vmid:116.2 (tlb.c) SbePe ║dsb(ishst);
~ 000056a0: d5033a9f dsb ishst
__kvm_tlb_flush_vmid:119.24 (tlb.c) Sbepe __tlb_switch_to_guest(║mmu, &cxt);
~ 000056a4: f85f83a0 ldur x0, [x29, #-8]
~ 000056a8: 910043e8 add x8, sp, #0x10
__kvm_tlb_flush_vmid:119.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt);
~ 000056ac: aa0803e1 mov x1, x8
~ 000056b0: f90007e8 str x8, [sp, #8]
~ 000056b4: 97fffeb1 bl 5178 <__tlb_switch_to_guest>
__kvm_tlb_flush_vmid:121.2 (tlb.c) Sbepe ║__tlbi(vmalls12e1is);
~ 000056b8: d50c83df tlbi vmalls12e1is <- 000056b4(bl-succ)<return>
~ 000056bc: d503201f nop
~ 000056c0: d503201f nop
__kvm_tlb_flush_vmid:122.2 (tlb.c) Sbepe ║dsb(ish);
~ 000056c4: d5033b9f dsb ish
__kvm_tlb_flush_vmid:123.2 (tlb.c) Sbepe ║isb();
~ 000056c8: d5033fdf isb
~ 000056cc: f94007e0 ldr x0, [sp, #8]
__kvm_tlb_flush_vmid:125.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt);
~ 000056d0: 97ffff52 bl 5418 <__tlb_switch_to_host>
__kvm_tlb_flush_vmid:126.1 (tlb.c) Sbepe ║}
~ 000056d4: a9427bfd ldp x29, x30, [sp, #32] <- 000056d0(bl-succ)<return>
~ 000056d8: 9100c3ff add sp, sp, #0x30
0000569c CFA:r29+16 r29:c-16 r30:c-8
~ 000056dc: d65f03c0 ret
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x5690 0x56e0 (DW_OP_fbreg -0x8) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:112
-cxt var struct tlb_inv_context<3df69>/<4cded> 0x5690 0x56e0 (DW_OP_breg31 0x10) __kvm_tlb_flush_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:114
**000056e0 <__kvm_tlb_flush_local_vmid>:
+ __kvm_tlb_flush_local_vmid params:
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8)
__kvm_tlb_flush_local_vmid:129.0 (tlb.c) Sbepe ║{
+mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:128
+cxt var struct tlb_inv_context<3df69>/<4cded> 0x56e0 0x572c (DW_OP_breg31 0x10) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:130
~ 000056e0: d100c3ff sub sp, sp, #0x30 <- 00007368(bl)<__kvm_tlb_flush_local_vmid>
~ 000056e4: a9027bfd stp x29, x30, [sp, #32]
000056e0 CFA:r31 r29:u r30:u
~ 000056e8: 910083fd add x29, sp, #0x20
~ 000056ec: f81f83a0 stur x0, [x29, #-8]
__kvm_tlb_flush_local_vmid:133.24 (tlb.c) SbePe __tlb_switch_to_guest(║mmu, &cxt);
~ 000056f0: f85f83a0 ldur x0, [x29, #-8]
~ 000056f4: 910043e8 add x8, sp, #0x10
__kvm_tlb_flush_local_vmid:133.2 (tlb.c) sbepe ║__tlb_switch_to_guest(mmu, &cxt);
~ 000056f8: aa0803e1 mov x1, x8
~ 000056fc: f90007e8 str x8, [sp, #8]
~ 00005700: 97fffe9e bl 5178 <__tlb_switch_to_guest>
__kvm_tlb_flush_local_vmid:135.2 (tlb.c) Sbepe ║__tlbi(vmalle1);
~ 00005704: d508871f tlbi vmalle1 <- 00005700(bl-succ)<return>
~ 00005708: d503201f nop
~ 0000570c: d503201f nop
__kvm_tlb_flush_local_vmid:136.2 (tlb.c) Sbepe ║dsb(nsh);
~ 00005710: d503379f dsb nsh
__kvm_tlb_flush_local_vmid:137.2 (tlb.c) Sbepe ║isb();
~ 00005714: d5033fdf isb
~ 00005718: f94007e0 ldr x0, [sp, #8]
__kvm_tlb_flush_local_vmid:139.2 (tlb.c) Sbepe ║__tlb_switch_to_host(&cxt);
~ 0000571c: 97ffff3f bl 5418 <__tlb_switch_to_host>
__kvm_tlb_flush_local_vmid:140.1 (tlb.c) Sbepe ║}
~ 00005720: a9427bfd ldp x29, x30, [sp, #32] <- 0000571c(bl-succ)<return>
~ 00005724: 9100c3ff add sp, sp, #0x30
000056ec CFA:r29+16 r29:c-16 r30:c-8
~ 00005728: d65f03c0 ret
-mmu param pointer(struct kvm_s2_mmu<3df69>/<3e32a>) 0x56e0 0x572c (DW_OP_fbreg -0x8) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:128
-cxt var struct tlb_inv_context<3df69>/<4cded> 0x56e0 0x572c (DW_OP_breg31 0x10) __kvm_tlb_flush_local_vmid:arch/arm64/kvm/hyp/nvhe/tlb.c:130
**0000572c <__kvm_flush_vm_context>:
+ __kvm_flush_vm_context params: none
__kvm_flush_vm_context:143.0 (tlb.c) Sbepe ║{
~ 0000572c: a9bf7bfd stp x29, x30, [sp, #-16]! <- 0000724c(bl)<__kvm_flush_vm_context>
0000572c CFA:r31 r29:u r30:u
~ 00005730: 910003fd mov x29, sp
__kvm_flush_vm_context:144.2 (tlb.c) SbePe ║dsb(ishst);
~ 00005734: d5033a9f dsb ishst
__kvm_flush_vm_context:145.2 (tlb.c) Sbepe ║__tlbi(alle1is);
~ 00005738: d50c839f tlbi alle1is
~ 0000573c: d503201f nop
~ 00005740: d503201f nop
t: 0x5744 0x5754 icache_is_vpipt inlined from __kvm_flush_vm_context:156 (tlb.c) <4cd78>:
t icache_is_vpipt:78.9 (cache.h) Sbepe return ║test_bit(ICACHEF_VPIPT, &__icache_flags);
~t 00005744: d00000a1 adrp x1, 1b000 <hyp_memory+0x460>
~t 00005748: 911e4021 add x1, x1, #0x790
~t 0000574c: 52800020 mov w0, #0x1 // #1
~t 00005750: 9400001f bl 57cc <test_bit>
__kvm_flush_vm_context:156.6 (tlb.c) Sbepe if (║icache_is_vpipt())
~ ┌───00005754: 34000080 cbz w0, 5764 <__kvm_flush_vm_context+0x38> <- 00005750(bl-succ)<return>
│
~ │ ┌─00005758: 14000001 b 575c <__kvm_flush_vm_context+0x30> <- 00005754(b.cc-succ)<fallthrough>
│ │
│ │ __kvm_flush_vm_context:157.3 (tlb.c) Sbepe ║asm volatile("ic ialluis");
~ │ └>0000575c: d508711f ic ialluis <- 00005758(b)<__kvm_flush_vm_context+0x30>
~ │ ┌─00005760: 14000001 b 5764 <__kvm_flush_vm_context+0x38>
│ │
│ │ __kvm_flush_vm_context:159.2 (tlb.c) Sbepe ║dsb(ish);
~ └>└>00005764: d5033b9f dsb ish <- 00005754(b.cc)<__kvm_flush_vm_context+0x38>,00005760(b)<__kvm_flush_vm_context+0x38>
__kvm_flush_vm_context:160.1 (tlb.c) Sbepe ║}
~ 00005768: a8c17bfd ldp x29, x30, [sp], #16
00005734 CFA:r29+16 r29:c-16 r30:c-8
~ 0000576c: d65f03c0 ret
**00005770 <cpus_have_cap>:
+ cpus_have_cap params:
+num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8)
cpus_have_cap:428.0 (cpufeature.h) Sbepe ║{
+num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/tlb.c:427
~ 00005770: d10083ff sub sp, sp, #0x20
~ 00005774: a9017bfd stp x29, x30, [sp, #16]
00005770 CFA:r31 r29:u r30:u
~ 00005778: 910043fd add x29, sp, #0x10
~ 0000577c: b9000be0 str w0, [sp, #8]
cpus_have_cap:429.6 (cpufeature.h) SbePe if (║num >= ARM64_NCAPS)
~ 00005780: b9400be8 ldr w8, [sp, #8]
cpus_have_cap:429.6 (cpufeature.h) sbepe if (║num >= ARM64_NCAPS)
~ 00005784: 7100f508 subs w8, w8, #0x3d
~ ┌──00005788: 540000a3 b.cc 579c <cpus_have_cap+0x2c> // b.lo, b.ul, b.last
│
~ │┌─0000578c: 14000001 b 5790 <cpus_have_cap+0x20> <- 00005788(b.cc-succ)<fallthrough>
││
~ │└>00005790: 2a1f03e8 mov w8, wzr <- 0000578c(b)<cpus_have_cap+0x20>
│ cpus_have_cap:430.3 (cpufeature.h) Sbepe ║return false;
~ │ 00005794: 381ff3a8 sturb w8, [x29, #-1]
~ ┌┼──00005798: 14000009 b 57bc <cpus_have_cap+0x4c>
││
││ cpus_have_cap:431.18 (cpufeature.h) Sbepe return test_bit(║num, cpu_hwcaps);
~ │└─>0000579c: b9400be0 ldr w0, [sp, #8] <- 00005788(b.cc)<cpus_have_cap+0x2c>
│ cpus_have_cap:431.9 (cpufeature.h) sbepe return ║test_bit(num, cpu_hwcaps);
~ │ 000057a0: d00000a1 adrp x1, 1b000 <hyp_memory+0x460>
~ │ 000057a4: 91218021 add x1, x1, #0x860
~ │ 000057a8: 94000009 bl 57cc <test_bit>
│
~ │ 000057ac: 71000008 subs w8, w0, #0x0 <- 000057a8(bl-succ)<return>
~ │ 000057b0: 1a9f07e9 cset w9, ne // ne = any
│ cpus_have_cap:431.2 (cpufeature.h) sbepe ║return test_bit(num, cpu_hwcaps);
~ │ 000057b4: 381ff3a9 sturb w9, [x29, #-1]
~ │ ┌─000057b8: 14000001 b 57bc <cpus_have_cap+0x4c>
│ │
│ │ cpus_have_cap:432.1 (cpufeature.h) Sbepe ║}
~ └>└>000057bc: 385ff3a0 ldurb w0, [x29, #-1] <- 00005798(b)<cpus_have_cap+0x4c>,000057b8(b)<cpus_have_cap+0x4c>
~ 000057c0: a9417bfd ldp x29, x30, [sp, #16]
~ 000057c4: 910083ff add sp, sp, #0x20
0000577c CFA:r29+16 r29:c-16 r30:c-8
~ 000057c8: d65f03c0 ret
-num param unsigned int (base type, DW_ATE_unsigned size:4) 0x5770 0x57cc (DW_OP_breg31 0x8) cpus_have_cap:arch/arm64/kvm/hyp/nvhe/tlb.c:427
**000057cc <test_bit>:
+ test_bit params:
+nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc)
+addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0)
test_bit:105.0 (non-atomic.h) Sbepe ║{
000057cc CFA:r31
+nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104
+addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104
~ 000057cc: d10043ff sub sp, sp, #0x10 <- 00005078(bl)<test_bit>,00005750(bl)<test_bit>,000057a8(bl)<test_bit>
~ 000057d0: b9000fe0 str w0, [sp, #12]
~ 000057d4: f90003e1 str x1, [sp]
test_bit:106.16 (non-atomic.h) SbePe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 000057d8: f94003e8 ldr x8, [sp]
test_bit:106.21 (non-atomic.h) sbepe return 1UL & (addr[║BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 000057dc: b9400fe9 ldr w9, [sp, #12]
~ 000057e0: 1100fd2a add w10, w9, #0x3f
~ 000057e4: 7100012b subs w11, w9, #0x0
~ 000057e8: 1a89b149 csel w9, w10, w9, lt // lt = tstop
~ 000057ec: 13067d29 asr w9, w9, #6
test_bit:106.16 (non-atomic.h) sbepe return 1UL & (║addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 000057f0: 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)));
~ 000057f4: b9400fe9 ldr w9, [sp, #12]
~ 000057f8: 2a0903ec mov w12, w9
test_bit:106.35 (non-atomic.h) sbepe return 1UL & (addr[BIT_WORD(nr)] ║>> (nr & (BITS_PER_LONG-1)));
~ 000057fc: 9acc2508 lsr x8, x8, x12
test_bit:106.13 (non-atomic.h) sbepe return 1UL ║& (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 00005800: 12000100 and w0, w8, #0x1
test_bit:106.2 (non-atomic.h) sbepe ║return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
~ 00005804: 910043ff add sp, sp, #0x10
~ 00005808: d65f03c0 ret
-nr param int (base type, DW_ATE_signed size:4) 0x57cc 0x580c (DW_OP_fbreg 0xc) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104
-addr param pointer(const(volatile(long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x57cc 0x580c (DW_OP_fbreg 0x0) test_bit:arch/arm64/kvm/hyp/nvhe/tlb.c:104
~ 0000580c: d5033b9f dsb ish
~ 00005810: d50c8028 tlbi ipas2e1is, x8
~ 00005814: d5033b9f dsb ish
~ 00005818: d508831f tlbi vmalle1is
~ 0000581c: d53d2048 mrs x8, tcr_el12
~ 00005820: d51d2048 msr tcr_el12, x8
~ 00005824: d5033fdf isb
~ 00005828: d503201f nop
~ 0000582c: d5033fdf isb
~ 00005830: d51d2048 msr tcr_el12, x8
~ 00005834: d5033b9f dsb ish
~ 00005838: d50c83df tlbi vmalls12e1is
~ 0000583c: d5033b9f dsb ish
~ 00005840: d508871f tlbi vmalle1
~ 00005844: d5033b9f dsb ish
~ 00005848: d50c839f tlbi alle1is
~ 0000584c: missing
~ 00005850: missing
~ 00005854: missing
~ 00005858: missing
~ 0000585c: missing
~ 00005860: missing
~ 00005864: missing
~ 00005868: missing
~ 0000586c: missing
~ 00005870: missing
~ 00005874: missing
~ 00005878: missing
~ 0000587c: missing
~ 00005880: missing
~ 00005884: missing
~ 00005888: missing
~ 0000588c: missing
~ 00005890: missing
~ 00005894: missing
~ 00005898: missing
~ 0000589c: missing
~ 000058a0: missing
~ 000058a4: missing
~ 000058a8: missing
~ 000058ac: missing
~ 000058b0: missing
~ 000058b4: missing
~ 000058b8: missing
~ 000058bc: missing
~ 000058c0: missing
~ 000058c4: missing
~ 000058c8: missing
~ 000058cc: missing
~ 000058d0: missing
~ 000058d4: missing
~ 000058d8: missing
~ 000058dc: missing
~ 000058e0: missing
~ 000058e4: missing
~ 000058e8: missing
~ 000058ec: missing
~ 000058f0: missing
~ 000058f4: missing
~ 000058f8: missing
~ 000058fc: missing
~ 00005900: missing
~ 00005904: missing
~ 00005908: missing
~ 0000590c: missing
~ 00005910: missing
~ 00005914: missing
~ 00005918: missing
~ 0000591c: missing
~ 00005920: missing
~ 00005924: missing
~ 00005928: missing
~ 0000592c: missing
~ 00005930: missing
~ 00005934: missing
~ 00005938: missing
~ 0000593c: missing
~ 00005940: missing
~ 00005944: missing
~ 00005948: missing
~ 0000594c: missing
~ 00005950: missing
~ 00005954: missing
~ 00005958: missing
~ 0000595c: missing
~ 00005960: missing
~ 00005964: missing
~ 00005968: missing
~ 0000596c: missing
~ 00005970: missing
~ 00005974: missing
~ 00005978: missing
~ 0000597c: missing
~ 00005980: missing
~ 00005984: missing
~ 00005988: missing
~ 0000598c: missing
~ 00005990: missing
~ 00005994: missing
~ 00005998: missing
~ 0000599c: missing
~ 000059a0: missing
~ 000059a4: missing
~ 000059a8: missing
~ 000059ac: missing
~ 000059b0: missing
~ 000059b4: missing
~ 000059b8: missing
~ 000059bc: missing
~ 000059c0: missing
~ 000059c4: missing
~ 000059c8: missing
~ 000059cc: missing
~ 000059d0: missing
~ 000059d4: missing
~ 000059d8: missing
~ 000059dc: missing
~ 000059e0: missing
~ 000059e4: missing
~ 000059e8: missing
~ 000059ec: missing
~ 000059f0: missing
~ 000059f4: missing
~ 000059f8: missing
~ 000059fc: missing
~ 00005a00: missing
~ 00005a04: missing
~ 00005a08: missing
~ 00005a0c: missing
~ 00005a10: missing
~ 00005a14: missing
~ 00005a18: missing
~ 00005a1c: missing
~ 00005a20: missing
~ 00005a24: missing
~ 00005a28: missing
~ 00005a2c: missing
~ 00005a30: missing
~ 00005a34: missing
~ 00005a38: missing
~ 00005a3c: missing
~ 00005a40: missing
~ 00005a44: missing
~ 00005a48: missing
~ 00005a4c: missing
~ 00005a50: missing
~ 00005a54: missing
~ 00005a58: missing
~ 00005a5c: missing
~ 00005a60: missing
~ 00005a64: missing
~ 00005a68: missing
~ 00005a6c: missing
~ 00005a70: missing
~ 00005a74: missing
~ 00005a78: missing
~ 00005a7c: missing
~ 00005a80: missing
~ 00005a84: missing
~ 00005a88: missing
~ 00005a8c: missing
~ 00005a90: missing
~ 00005a94: missing
~ 00005a98: missing
~ 00005a9c: missing
~ 00005aa0: missing
~ 00005aa4: missing
~ 00005aa8: missing
~ 00005aac: missing
~ 00005ab0: missing
~ 00005ab4: missing
~ 00005ab8: missing
~ 00005abc: missing
~ 00005ac0: missing
~ 00005ac4: missing
~ 00005ac8: missing
~ 00005acc: missing
~ 00005ad0: missing
~ 00005ad4: missing
~ 00005ad8: missing
~ 00005adc: missing
~ 00005ae0: missing
~ 00005ae4: missing
~ 00005ae8: missing
~ 00005aec: missing
~ 00005af0: missing
~ 00005af4: missing
~ 00005af8: missing
~ 00005afc: missing
~ 00005b00: missing
~ 00005b04: missing
~ 00005b08: missing
~ 00005b0c: missing
~ 00005b10: missing
~ 00005b14: missing
~ 00005b18: missing
~ 00005b1c: missing
~ 00005b20: missing
~ 00005b24: missing
~ 00005b28: missing
~ 00005b2c: missing
~ 00005b30: missing
~ 00005b34: missing
~ 00005b38: missing
~ 00005b3c: missing
~ 00005b40: missing
~ 00005b44: missing
~ 00005b48: missing
~ 00005b4c: missing
~ 00005b50: missing
~ 00005b54: missing
~ 00005b58: missing
~ 00005b5c: missing
~ 00005b60: missing
~ 00005b64: missing
~ 00005b68: missing
~ 00005b6c: missing
~ 00005b70: missing
~ 00005b74: missing
~ 00005b78: missing
~ 00005b7c: missing
~ 00005b80: missing
~ 00005b84: missing
~ 00005b88: missing
~ 00005b8c: missing
~ 00005b90: missing
~ 00005b94: missing
~ 00005b98: missing
~ 00005b9c: missing
~ 00005ba0: missing
~ 00005ba4: missing
~ 00005ba8: missing
~ 00005bac: missing
~ 00005bb0: missing
~ 00005bb4: missing
~ 00005bb8: missing
~ 00005bbc: missing
~ 00005bc0: missing
~ 00005bc4: missing
~ 00005bc8: missing
~ 00005bcc: missing
~ 00005bd0: missing
~ 00005bd4: missing
~ 00005bd8: missing
~ 00005bdc: missing
~ 00005be0: missing
~ 00005be4: missing
~ 00005be8: missing
~ 00005bec: missing
~ 00005bf0: missing
~ 00005bf4: missing
~ 00005bf8: missing
~ 00005bfc: missing
~ 00005c00: missing
~ 00005c04: missing
~ 00005c08: missing
~ 00005c0c: missing
~ 00005c10: missing
~ 00005c14: missing
~ 00005c18: missing
~ 00005c1c: missing
~ 00005c20: missing
~ 00005c24: missing
~ 00005c28: missing
~ 00005c2c: missing
~ 00005c30: missing
~ 00005c34: missing
~ 00005c38: missing
~ 00005c3c: missing
~ 00005c40: missing
~ 00005c44: missing
~ 00005c48: missing
~ 00005c4c: missing
~ 00005c50: missing
~ 00005c54: missing
~ 00005c58: missing
~ 00005c5c: missing
~ 00005c60: missing
~ 00005c64: missing
~ 00005c68: missing
~ 00005c6c: missing
~ 00005c70: missing
~ 00005c74: missing
~ 00005c78: missing
~ 00005c7c: missing
~ 00005c80: missing
~ 00005c84: missing
~ 00005c88: missing
~ 00005c8c: missing
~ 00005c90: missing
~ 00005c94: missing
~ 00005c98: missing
~ 00005c9c: missing
~ 00005ca0: missing
~ 00005ca4: missing
~ 00005ca8: missing
~ 00005cac: missing
~ 00005cb0: missing
~ 00005cb4: missing
~ 00005cb8: missing
~ 00005cbc: missing
~ 00005cc0: missing
~ 00005cc4: missing
~ 00005cc8: missing
~ 00005ccc: missing
~ 00005cd0: missing
~ 00005cd4: missing
~ 00005cd8: missing
~ 00005cdc: missing
~ 00005ce0: missing
~ 00005ce4: missing
~ 00005ce8: missing
~ 00005cec: missing
~ 00005cf0: missing
~ 00005cf4: missing
~ 00005cf8: missing
~ 00005cfc: missing
~ 00005d00: missing
~ 00005d04: missing
~ 00005d08: missing
~ 00005d0c: missing
~ 00005d10: missing
~ 00005d14: missing
~ 00005d18: missing
~ 00005d1c: missing
~ 00005d20: missing
~ 00005d24: missing
~ 00005d28: missing
~ 00005d2c: missing
~ 00005d30: missing
~ 00005d34: missing
~ 00005d38: missing
~ 00005d3c: missing
~ 00005d40: missing
~ 00005d44: missing
~ 00005d48: missing
~ 00005d4c: missing
~ 00005d50: missing
~ 00005d54: missing
~ 00005d58: missing
~ 00005d5c: missing
~ 00005d60: missing
~ 00005d64: missing
~ 00005d68: missing
~ 00005d6c: missing
~ 00005d70: missing
~ 00005d74: missing
~ 00005d78: missing
~ 00005d7c: missing
~ 00005d80: missing
~ 00005d84: missing
~ 00005d88: missing
~ 00005d8c: missing
~ 00005d90: missing
~ 00005d94: missing
~ 00005d98: missing
~ 00005d9c: missing
~ 00005da0: missing
~ 00005da4: missing
~ 00005da8: missing
~ 00005dac: missing
~ 00005db0: missing
~ 00005db4: missing
~ 00005db8: missing
~ 00005dbc: missing
~ 00005dc0: missing
~ 00005dc4: missing
~ 00005dc8: missing
~ 00005dcc: missing
~ 00005dd0: missing
~ 00005dd4: missing
~ 00005dd8: missing
~ 00005ddc: missing
~ 00005de0: missing
~ 00005de4: missing
~ 00005de8: missing
~ 00005dec: missing
~ 00005df0: missing
~ 00005df4: missing
~ 00005df8: missing
~ 00005dfc: missing
~ 00005e00: missing
~ 00005e04: missing
~ 00005e08: missing
~ 00005e0c: missing
~ 00005e10: missing
~ 00005e14: missing
~ 00005e18: missing
~ 00005e1c: missing
~ 00005e20: missing
~ 00005e24: missing
~ 00005e28: missing
~ 00005e2c: missing
~ 00005e30: missing
~ 00005e34: missing
~ 00005e38: missing
~ 00005e3c: missing
~ 00005e40: missing
~ 00005e44: missing
~ 00005e48: missing
~ 00005e4c: missing
~ 00005e50: missing
~ 00005e54: missing
~ 00005e58: missing
~ 00005e5c: missing
~ 00005e60: missing
~ 00005e64: missing
~ 00005e68: missing
~ 00005e6c: missing
~ 00005e70: missing
~ 00005e74: missing
~ 00005e78: missing
~ 00005e7c: missing
~ 00005e80: missing
~ 00005e84: missing
~ 00005e88: missing
~ 00005e8c: missing
~ 00005e90: missing
~ 00005e94: missing
~ 00005e98: missing
~ 00005e9c: missing
~ 00005ea0: missing
~ 00005ea4: missing
~ 00005ea8: missing
~ 00005eac: missing
~ 00005eb0: missing
~ 00005eb4: missing
~ 00005eb8: missing
~ 00005ebc: missing
~ 00005ec0: missing
~ 00005ec4: missing
~ 00005ec8: missing
~ 00005ecc: missing
~ 00005ed0: missing
~ 00005ed4: missing
~ 00005ed8: missing
~ 00005edc: missing
~ 00005ee0: missing
~ 00005ee4: missing
~ 00005ee8: missing
~ 00005eec: missing
~ 00005ef0: missing
~ 00005ef4: missing
~ 00005ef8: missing
~ 00005efc: missing
~ 00005f00: missing
~ 00005f04: missing
~ 00005f08: missing
~ 00005f0c: missing
~ 00005f10: missing
~ 00005f14: missing
~ 00005f18: missing
~ 00005f1c: missing
~ 00005f20: missing
~ 00005f24: missing
~ 00005f28: missing
~ 00005f2c: missing
~ 00005f30: missing
~ 00005f34: missing
~ 00005f38: missing
~ 00005f3c: missing
~ 00005f40: missing
~ 00005f44: missing
~ 00005f48: missing
~ 00005f4c: missing
~ 00005f50: missing
~ 00005f54: missing
~ 00005f58: missing
~ 00005f5c: missing
~ 00005f60: missing
~ 00005f64: missing
~ 00005f68: missing
~ 00005f6c: missing
~ 00005f70: missing
~ 00005f74: missing
~ 00005f78: missing
~ 00005f7c: missing
~ 00005f80: missing
~ 00005f84: missing
~ 00005f88: missing
~ 00005f8c: missing
~ 00005f90: missing
~ 00005f94: missing
~ 00005f98: missing
~ 00005f9c: missing
~ 00005fa0: missing
~ 00005fa4: missing
~ 00005fa8: missing
~ 00005fac: missing
~ 00005fb0: missing
~ 00005fb4: missing
~ 00005fb8: missing
~ 00005fbc: missing
~ 00005fc0: missing
~ 00005fc4: missing
~ 00005fc8: missing
~ 00005fcc: missing
~ 00005fd0: missing
~ 00005fd4: missing
~ 00005fd8: missing
~ 00005fdc: missing
~ 00005fe0: missing
~ 00005fe4: missing
~ 00005fe8: missing
~ 00005fec: missing
~ 00005ff0: missing
~ 00005ff4: missing
~ 00005ff8: missing
000057d0 CFA:r31+16
~ 00005ffc: missing