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 00007744 00007834 arch/arm64/kvm/hyp/nvhe/hyp-smp.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
**00007744 <cpu_logical_map>:
00007744 <$x>:
+ cpu_logical_map params:
+cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7744 0x7788 (DW_OP_fbreg -0x4)
cpu_logical_map:20.0 (hyp-smp.c) Sbepe ║{
+cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7744 0x7788 (DW_OP_fbreg -0x4) cpu_logical_map:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:19
~ 00007744: d10083ff sub sp, sp, #0x20 <- 000086a4(bl)<cpu_logical_map>
~ 00007748: a9017bfd stp x29, x30, [sp, #16]
00007744 CFA:r31 r29:u r30:u
~ 0000774c: 910043fd add x29, sp, #0x10
~ 00007750: b81fc3a0 stur w0, [x29, #-4]
cpu_logical_map:21.6 (hyp-smp.c) SbePe if (║cpu >= ARRAY_SIZE(hyp_cpu_logical_map))
~ 00007754: b85fc3a8 ldur w8, [x29, #-4]
cpu_logical_map:21.6 (hyp-smp.c) sbepe if (║cpu >= ARRAY_SIZE(hyp_cpu_logical_map))
~ 00007758: 71040108 subs w8, w8, #0x100
~ ┌──0000775c: 54000063 b.cc 7768 <cpu_logical_map+0x24> // b.lo, b.ul, b.last
│
~ │┌─00007760: 14000001 b 7764 <cpu_logical_map+0x20> <- 0000775c(b.cc-succ)<fallthrough>
││
││ cpu_logical_map:22.3 (hyp-smp.c) Sbepe ║hyp_panic();
~ │└>00007764: 97ffefd5 bl 36b8 <hyp_panic> <- 00007760(b)<cpu_logical_map+0x20>
│
│ cpu_logical_map:24.29 (hyp-smp.c) Sbepe return hyp_cpu_logical_map[║cpu];
~ └─>00007768: b85fc3a8 ldur w8, [x29, #-4] <- 0000775c(b.cc)<cpu_logical_map+0x24>,00007764(bl-succ)<return>
~ 0000776c: 2a0803e9 mov w9, w8
cpu_logical_map:24.9 (hyp-smp.c) sbepe return ║hyp_cpu_logical_map[cpu];
~ 00007770: d000008a adrp x10, 19000 <kvm_host_data>
~ 00007774: 913c814a add x10, x10, #0xf20
~ 00007778: f8697940 ldr x0, [x10, x9, lsl #3]
cpu_logical_map:24.2 (hyp-smp.c) sbepe ║return hyp_cpu_logical_map[cpu];
~ 0000777c: a9417bfd ldp x29, x30, [sp, #16]
~ 00007780: 910083ff add sp, sp, #0x20
00007750 CFA:r29+16 r29:c-16 r30:c-8
~ 00007784: d65f03c0 ret
-cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7744 0x7788 (DW_OP_fbreg -0x4) cpu_logical_map:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:19
**00007788 <__hyp_per_cpu_offset>:
+ __hyp_per_cpu_offset params:
+cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7788 0x7834 (DW_OP_fbreg -0xc)
__hyp_per_cpu_offset:28.0 (hyp-smp.c) Sbepe ║{
+cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7788 0x7834 (DW_OP_fbreg -0xc) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:27
+cpu_base_array var pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0x7788 0x7834 (DW_OP_fbreg -0x18) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:29
+this_cpu_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0x7788 0x7834 (DW_OP_fbreg -0x20) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:30
+elf_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0x7788 0x7834 (DW_OP_breg31 0x28) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:31
~ 00007788: d10183ff sub sp, sp, #0x60 <- 00008160(bl)<__hyp_per_cpu_offset>,000081b8(bl)<__hyp_per_cpu_offset>,0000a380(bl)<__hyp_per_cpu_offset>,0000b050(bl)<__hyp_per_cpu_offset>
~ 0000778c: a9057bfd stp x29, x30, [sp, #80]
00007788 CFA:r31 r29:u r30:u
~ 00007790: 910143fd add x29, sp, #0x50
~ 00007794: b81f43a0 stur w0, [x29, #-12]
__hyp_per_cpu_offset:33.6 (hyp-smp.c) SbePe if (║cpu >= ARRAY_SIZE(kvm_arm_hyp_percpu_base))
~ 00007798: b85f43a8 ldur w8, [x29, #-12]
__hyp_per_cpu_offset:33.6 (hyp-smp.c) sbepe if (║cpu >= ARRAY_SIZE(kvm_arm_hyp_percpu_base))
~ 0000779c: 71040108 subs w8, w8, #0x100
~ ┌──000077a0: 54000063 b.cc 77ac <__hyp_per_cpu_offset+0x24> // b.lo, b.ul, b.last
│
~ │┌─000077a4: 14000001 b 77a8 <__hyp_per_cpu_offset+0x20> <- 000077a0(b.cc-succ)<fallthrough>
││
││ __hyp_per_cpu_offset:34.3 (hyp-smp.c) Sbepe ║hyp_panic();
~ │└>000077a8: 97ffefc4 bl 36b8 <hyp_panic> <- 000077a4(b)<__hyp_per_cpu_offset+0x20>
│
│ __hyp_per_cpu_offset:36.36 (hyp-smp.c) Sbepe cpu_base_array = (unsigned long *)║hyp_symbol_addr(kvm_arm_hyp_percpu_base);
+addr var pointer(long unsigned int (base type, DW_ATE_unsigned size:8)[256]) 0x77ac 0x77c4 (DW_OP_breg31 0x20) lexblock:__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:36
~ └─>000077ac: 900000a8 adrp x8, 1b000 <hyp_memory+0x460> <- 000077a0(b.cc)<__hyp_per_cpu_offset+0x24>,000077a8(bl-succ)<return>
~ 000077b0: 911f4108 add x8, x8, #0x7d0
~ 000077b4: f90013e8 str x8, [sp, #32]
~ 000077b8: f94013e8 ldr x8, [sp, #32]
~ 000077bc: f9000fe8 str x8, [sp, #24]
~ 000077c0: f9400fe8 ldr x8, [sp, #24]
-addr var pointer(long unsigned int (base type, DW_ATE_unsigned size:8)[256]) 0x77ac 0x77c4 (DW_OP_breg31 0x20) lexblock:__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:36
__hyp_per_cpu_offset:36.17 (hyp-smp.c) sbepe cpu_base_array ║= (unsigned long *)hyp_symbol_addr(kvm_arm_hyp_percpu_base);
~ 000077c4: f81e83a8 stur x8, [x29, #-24]
__hyp_per_cpu_offset:37.18 (hyp-smp.c) Sbepe this_cpu_base = ║kern_hyp_va(cpu_base_array[cpu]);
~ 000077c8: f85e83a8 ldur x8, [x29, #-24]
~ 000077cc: b85f43a9 ldur w9, [x29, #-12]
~ 000077d0: 2a0903ea mov w10, w9
~ 000077d4: f86a7908 ldr x8, [x8, x10, lsl #3]
~ 000077d8: f81f83a8 stur x8, [x29, #-8]
c: 0x77dc 0x77fc __kern_hyp_va inlined from __hyp_per_cpu_offset:37 (hyp-smp.c) <5bc3a>:
c __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) 0x77dc 0x77fc (DW_OP_fbreg -0x8) __kern_hyp_va(inlined):__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c
~c 000077dc: f85f83a8 ldur x8, [x29, #-8]
~c 000077e0: 92400108 and x8, x8, #0x1
~c 000077e4: 93c80508 ror x8, x8, #1
~c 000077e8: 91000108 add x8, x8, #0x0
~c 000077ec: 91400108 add x8, x8, #0x0, lsl #12
~c 000077f0: 93c8fd08 ror x8, x8, #63
~c 000077f4: f81f83a8 stur x8, [x29, #-8]
c __kern_hyp_va:142.9 (kvm_mmu.h) Sbepe return v;
~c 000077f8: f85f83a8 ldur x8, [x29, #-8]
-v param long unsigned int (base type, DW_ATE_unsigned size:8) 0x77dc 0x77fc (DW_OP_fbreg -0x8) __kern_hyp_va(inlined):__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c
__hyp_per_cpu_offset:37.16 (hyp-smp.c) Sbepe this_cpu_base ║= kern_hyp_va(cpu_base_array[cpu]);
~ 000077fc: f81e03a8 stur x8, [x29, #-32]
__hyp_per_cpu_offset:38.28 (hyp-smp.c) Sbepe elf_base = (unsigned long)║hyp_symbol_addr(__per_cpu_start);
+addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0x7800 0x7818 (DW_OP_breg31 0x10) lexblock:__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:38
~ 00007800: d0000088 adrp x8, 19000 <kvm_host_data>
~ 00007804: 91000108 add x8, x8, #0x0
~ 00007808: f9000be8 str x8, [sp, #16]
~ 0000780c: f9400be8 ldr x8, [sp, #16]
~ 00007810: f90007e8 str x8, [sp, #8]
~ 00007814: f94007e8 ldr x8, [sp, #8]
-addr var pointer(char (base type, DW_ATE_unsigned_char size:1)[no count]) 0x7800 0x7818 (DW_OP_breg31 0x10) lexblock:__hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:38
__hyp_per_cpu_offset:38.11 (hyp-smp.c) sbepe elf_base ║= (unsigned long)hyp_symbol_addr(__per_cpu_start);
~ 00007818: f90017e8 str x8, [sp, #40]
__hyp_per_cpu_offset:39.9 (hyp-smp.c) Sbepe return ║this_cpu_base - elf_base;
~ 0000781c: f85e03a8 ldur x8, [x29, #-32]
__hyp_per_cpu_offset:39.25 (hyp-smp.c) sbepe return this_cpu_base - ║elf_base;
~ 00007820: f94017ea ldr x10, [sp, #40]
__hyp_per_cpu_offset:39.23 (hyp-smp.c) sbepe return this_cpu_base ║- elf_base;
~ 00007824: eb0a0100 subs x0, x8, x10
__hyp_per_cpu_offset:39.2 (hyp-smp.c) sbepe ║return this_cpu_base - elf_base;
~ 00007828: a9457bfd ldp x29, x30, [sp, #80]
~ 0000782c: 910183ff add sp, sp, #0x60
00007794 CFA:r29+16 r29:c-16 r30:c-8
~ 00007830: d65f03c0 ret
-cpu param unsigned int (base type, DW_ATE_unsigned size:4) 0x7788 0x7834 (DW_OP_fbreg -0xc) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:27
-cpu_base_array var pointer(long unsigned int (base type, DW_ATE_unsigned size:8)) 0x7788 0x7834 (DW_OP_fbreg -0x18) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:29
-this_cpu_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0x7788 0x7834 (DW_OP_fbreg -0x20) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:30
-elf_base var long unsigned int (base type, DW_ATE_unsigned size:8) 0x7788 0x7834 (DW_OP_breg31 0x28) __hyp_per_cpu_offset:arch/arm64/kvm/hyp/nvhe/hyp-smp.c:31