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 00008d30 00008f08 arch/arm64/kvm/hyp/nvhe/early_alloc.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 **00008d30 <hyp_early_alloc_nr_pages>: 00008d30 <$x>: + hyp_early_alloc_nr_pages params: none hyp_early_alloc_nr_pages:20.10 (early_alloc.c) SbePeM return (║cur - base) >> PAGE_SHIFT; hyp_early_alloc_nr_pages:19.0 (early_alloc.c) SbepeM ║{ ~ 00008d30: d0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> <- 00009a4c(bl)<hyp_early_alloc_nr_pages> ~ 00008d34: f944b908 ldr x8, [x8, #2416] hyp_early_alloc_nr_pages:20.16 (early_alloc.c) sbepe return (cur - ║base) >> PAGE_SHIFT; ~ 00008d38: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008d3c: f944bd29 ldr x9, [x9, #2424] hyp_early_alloc_nr_pages:20.14 (early_alloc.c) sbepe return (cur ║- base) >> PAGE_SHIFT; ~ 00008d40: eb090108 subs x8, x8, x9 hyp_early_alloc_nr_pages:20.22 (early_alloc.c) sbepe return (cur - base) ║>> PAGE_SHIFT; ~ 00008d44: d34cfd00 lsr x0, x8, #12 hyp_early_alloc_nr_pages:20.2 (early_alloc.c) sbepe ║return (cur - base) >> PAGE_SHIFT; 00008d30 CFA:r31 ~ 00008d48: d65f03c0 ret **00008d4c <hyp_early_alloc_contig>: + hyp_early_alloc_contig params: +nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x8d4c 0x8e38 (DW_OP_fbreg -0xc) hyp_early_alloc_contig:26.0 (early_alloc.c) Sbepe ║{ +nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x8d4c 0x8e38 (DW_OP_fbreg -0xc) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:25 +ret var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x18) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 +i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x10) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 +p var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x8) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 ~ 00008d4c: d10103ff sub sp, sp, #0x40 <- 00008e4c(bl)<hyp_early_alloc_contig>,00009de8(bl)<hyp_early_alloc_contig>,00009e44(bl)<hyp_early_alloc_contig>,00009e78(bl)<hyp_early_alloc_contig>,00009eac(bl)<hyp_early_alloc_contig>,00009ee0(bl)<hyp_early_alloc_contig> ~ 00008d50: a9037bfd stp x29, x30, [sp, #48] 00008d4c CFA:r31 r29:u r30:u ~ 00008d54: 9100c3fd add x29, sp, #0x30 ~ 00008d58: b81f43a0 stur w0, [x29, #-12] hyp_early_alloc_contig:27.22 (early_alloc.c) SbePe unsigned long ret = ║cur, i, p; ~ 00008d5c: d0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008d60: f944b908 ldr x8, [x8, #2416] hyp_early_alloc_contig:27.16 (early_alloc.c) sbepe unsigned long ║ret = cur, i, p; ~ 00008d64: f9000fe8 str x8, [sp, #24] hyp_early_alloc_contig:29.7 (early_alloc.c) Sbepe if (!║nr_pages) ~ 00008d68: b85f43a9 ldur w9, [x29, #-12] hyp_early_alloc_contig:29.6 (early_alloc.c) sbepe if (║!nr_pages) ~ ┌──00008d6c: 350000a9 cbnz w9, 8d80 <hyp_early_alloc_contig+0x34> ~ │┌─00008d70: 14000001 b 8d74 <hyp_early_alloc_contig+0x28> <- 00008d6c(b.cc-succ)<fallthrough> ││ ~ │└>00008d74: aa1f03e8 mov x8, xzr <- 00008d70(b)<hyp_early_alloc_contig+0x28> hyp_early_alloc_contig:30.3 (early_alloc.c) Sbepe ║return NULL; ~ 00008d78: f81f83a8 stur x8, [x29, #-8] ~ ┌───┼──00008d7c: 1400002b b 8e28 <hyp_early_alloc_contig+0xdc> │ │ │ │ hyp_early_alloc_contig:32.9 (early_alloc.c) Sbepe cur += ║nr_pages << PAGE_SHIFT; ~ │ └─>00008d80: b85f43a8 ldur w8, [x29, #-12] <- 00008d6c(b.cc)<hyp_early_alloc_contig+0x34> hyp_early_alloc_contig:32.18 (early_alloc.c) sbepe cur += nr_pages ║<< PAGE_SHIFT; ~ 00008d84: 53144d08 lsl w8, w8, #12 hyp_early_alloc_contig:32.9 (early_alloc.c) sbepe cur += ║nr_pages << PAGE_SHIFT; ~ 00008d88: 2a0803e9 mov w9, w8 hyp_early_alloc_contig:32.6 (early_alloc.c) sbepe cur ║+= nr_pages << PAGE_SHIFT; ~ 00008d8c: d000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008d90: f944b94b ldr x11, [x10, #2416] ~ 00008d94: 8b090169 add x9, x11, x9 ~ 00008d98: f904b949 str x9, [x10, #2416] hyp_early_alloc_contig:33.6 (early_alloc.c) Sbepe if (║cur > end) { ~ 00008d9c: f944b949 ldr x9, [x10, #2416] hyp_early_alloc_contig:33.12 (early_alloc.c) sbepe if (cur > ║end) { ~ 00008da0: d000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008da4: f944c14a ldr x10, [x10, #2432] hyp_early_alloc_contig:33.6 (early_alloc.c) sbepe if (║cur > end) { ~ 00008da8: eb0a0129 subs x9, x9, x10 ~ │ ┌──00008dac: 54000109 b.ls 8dcc <hyp_early_alloc_contig+0x80> // b.plast │ │ ~ │ │┌─00008db0: 14000001 b 8db4 <hyp_early_alloc_contig+0x68> <- 00008dac(b.cc-succ)<fallthrough> │ ││ │ ││ hyp_early_alloc_contig:34.9 (early_alloc.c) Sbepe cur = ║ret; ~ │ │└>00008db4: f9400fe8 ldr x8, [sp, #24] <- 00008db0(b)<hyp_early_alloc_contig+0x68> │ │ hyp_early_alloc_contig:34.7 (early_alloc.c) sbepe cur ║= ret; ~ │ │ 00008db8: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ │ │ 00008dbc: f904b928 str x8, [x9, #2416] ~ │ │ 00008dc0: aa1f03e8 mov x8, xzr │ │ hyp_early_alloc_contig:35.3 (early_alloc.c) Sbepe ║return NULL; ~ │ │ 00008dc4: f81f83a8 stur x8, [x29, #-8] ~ │ ┌─┼──00008dc8: 14000018 b 8e28 <hyp_early_alloc_contig+0xdc> │ │ │ ~ │ │ └─>00008dcc: aa1f03e8 mov x8, xzr <- 00008dac(b.cc)<hyp_early_alloc_contig+0x80> │ │ hyp_early_alloc_contig:38.9 (early_alloc.c) Sbepe for (i ║= 0; i < nr_pages; i++) { ~ │ │ 00008dd0: f9000be8 str x8, [sp, #16] │ │ hyp_early_alloc_contig:38.7 (early_alloc.c) sbepe for (║i = 0; i < nr_pages; i++) { ~ │ │ ┌─00008dd4: 14000001 b 8dd8 <hyp_early_alloc_contig+0x8c> │ │ │ │ │ │ hyp_early_alloc_contig:38.14 (early_alloc.c) sbepe for (i = 0; ║i < nr_pages; i++) { ~ │ │╔>└>00008dd8: f9400be8 ldr x8, [sp, #16] <- 00008dd4(b)<hyp_early_alloc_contig+0x8c>,v00008e18(b)<hyp_early_alloc_contig+0x8c> │ │║ hyp_early_alloc_contig:38.18 (early_alloc.c) sbepe for (i = 0; i < ║nr_pages; i++) { ~ │ │║ 00008ddc: b85f43a9 ldur w9, [x29, #-12] ~ │ │║ 00008de0: 2a0903ea mov w10, w9 │ │║ hyp_early_alloc_contig:38.2 (early_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++) { ~ │ │║ 00008de4: eb0a0108 subs x8, x8, x10 ~ │ │║┌──00008de8: 540001a2 b.cs 8e1c <hyp_early_alloc_contig+0xd0> // b.hs, b.nlast │ │║│ ~ │ │║│┌─00008dec: 14000001 b 8df0 <hyp_early_alloc_contig+0xa4> <- 00008de8(b.cc-succ)<fallthrough> │ │║││ │ │║││ hyp_early_alloc_contig:39.7 (early_alloc.c) Sbepe p = ║ret + (i << PAGE_SHIFT); ~ │ │║│└>00008df0: f9400fe8 ldr x8, [sp, #24] <- 00008dec(b)<hyp_early_alloc_contig+0xa4> │ │║│ hyp_early_alloc_contig:39.14 (early_alloc.c) sbepe p = ret + (║i << PAGE_SHIFT); ~ │ │║│ 00008df4: f9400be9 ldr x9, [sp, #16] │ │║│ hyp_early_alloc_contig:39.11 (early_alloc.c) sbepe p = ret ║+ (i << PAGE_SHIFT); ~ │ │║│ 00008df8: 8b093108 add x8, x8, x9, lsl #12 │ │║│ hyp_early_alloc_contig:39.5 (early_alloc.c) sbepe p ║= ret + (i << PAGE_SHIFT); ~ │ │║│ 00008dfc: f90007e8 str x8, [sp, #8] │ │║│ hyp_early_alloc_contig:40.23 (early_alloc.c) Sbepe clear_page((void *)(║p)); ~ │ │║│ 00008e00: f94007e0 ldr x0, [sp, #8] │ │║│ hyp_early_alloc_contig:40.3 (early_alloc.c) sbepe ║clear_page((void *)(p)); ~ │ │║│ 00008e04: 94003458 bl 15f64 <__pi_clear_page> │ │║│ │ │║│ hyp_early_alloc_contig:41.2 (early_alloc.c) Sbepe } ~ │ │║│┌─00008e08: 14000001 b 8e0c <hyp_early_alloc_contig+0xc0> <- 00008e04(bl-succ)<return> │ │║││ │ │║││ hyp_early_alloc_contig:38.29 (early_alloc.c) Sbepe for (i = 0; i < nr_pages; i║++) { ~ │ │║│└>00008e0c: f9400be8 ldr x8, [sp, #16] <- 00008e08(b)<hyp_early_alloc_contig+0xc0> ~ │ │║│ 00008e10: 91000508 add x8, x8, #0x1 ~ │ │║│ 00008e14: f9000be8 str x8, [sp, #16] │ │║│ hyp_early_alloc_contig:38.2 (early_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++) { ~ │ │╚╪══00008e18: 17fffff0 b 8dd8 <hyp_early_alloc_contig+0x8c> │ │ │ │ │ │ hyp_early_alloc_contig:43.17 (early_alloc.c) Sbepe return (void *)║ret; ~ │ │ └─>00008e1c: f9400fe8 ldr x8, [sp, #24] <- 00008de8(b.cc)<hyp_early_alloc_contig+0xd0> │ │ hyp_early_alloc_contig:43.2 (early_alloc.c) sbepe ║return (void *)ret; ~ │ │ 00008e20: f81f83a8 stur x8, [x29, #-8] ~ │ │ ┌─00008e24: 14000001 b 8e28 <hyp_early_alloc_contig+0xdc> │ │ │ │ │ │ hyp_early_alloc_contig:44.1 (early_alloc.c) Sbepe ║} ~ └>└─>└>00008e28: f85f83a0 ldur x0, [x29, #-8] <- 00008d7c(b)<hyp_early_alloc_contig+0xdc>,00008dc8(b)<hyp_early_alloc_contig+0xdc>,00008e24(b)<hyp_early_alloc_contig+0xdc> ~ 00008e2c: a9437bfd ldp x29, x30, [sp, #48] ~ 00008e30: 910103ff add sp, sp, #0x40 00008d58 CFA:r29+16 r29:c-16 r30:c-8 ~ 00008e34: d65f03c0 ret -nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x8d4c 0x8e38 (DW_OP_fbreg -0xc) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:25 -ret var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x18) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 -i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x10) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 -p var long unsigned int (base type, DW_ATE_unsigned size:8) 0x8d4c 0x8e38 (DW_OP_breg31 0x8) hyp_early_alloc_contig:arch/arm64/kvm/hyp/nvhe/early_alloc.c:27 **00008e38 <hyp_early_alloc_page>: + hyp_early_alloc_page params: +arg param pointer(no type) 0x8e38 0x8e5c (DW_OP_breg31 0x8) hyp_early_alloc_page:47.0 (early_alloc.c) Sbepe ║{ +arg param pointer(no type) 0x8e38 0x8e5c (DW_OP_breg31 0x8) hyp_early_alloc_page:arch/arm64/kvm/hyp/nvhe/early_alloc.c:46 ~ 00008e38: d10083ff sub sp, sp, #0x20 ~ 00008e3c: a9017bfd stp x29, x30, [sp, #16] 00008e38 CFA:r31 r29:u r30:u ~ 00008e40: 910043fd add x29, sp, #0x10 ~ 00008e44: f90007e0 str x0, [sp, #8] ~ 00008e48: 52800020 mov w0, #0x1 // #1 hyp_early_alloc_page:48.9 (early_alloc.c) SbePe return ║hyp_early_alloc_contig(1); ~ 00008e4c: 97ffffc0 bl 8d4c <hyp_early_alloc_contig> hyp_early_alloc_page:48.2 (early_alloc.c) sbepe ║return hyp_early_alloc_contig(1); ~ 00008e50: a9417bfd ldp x29, x30, [sp, #16] <- 00008e4c(bl-succ)<return> ~ 00008e54: 910083ff add sp, sp, #0x20 00008e44 CFA:r29+16 r29:c-16 r30:c-8 ~ 00008e58: d65f03c0 ret -arg param pointer(no type) 0x8e38 0x8e5c (DW_OP_breg31 0x8) hyp_early_alloc_page:arch/arm64/kvm/hyp/nvhe/early_alloc.c:46 **00008e5c <hyp_early_alloc_init>: + hyp_early_alloc_init params: +virt param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x8) +size param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x0) hyp_early_alloc_init:52.0 (early_alloc.c) Sbepe ║{ 00008e5c CFA:r31 +virt param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x8) hyp_early_alloc_init:arch/arm64/kvm/hyp/nvhe/early_alloc.c:51 +size param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x0) hyp_early_alloc_init:arch/arm64/kvm/hyp/nvhe/early_alloc.c:51 ~ 00008e5c: d10043ff sub sp, sp, #0x10 <- 00009ddc(bl)<hyp_early_alloc_init>,00009f68(bl)<hyp_early_alloc_init> ~ 00008e60: f90007e0 str x0, [sp, #8] ~ 00008e64: f90003e1 str x1, [sp] hyp_early_alloc_init:53.9 (early_alloc.c) SbePe base = ║virt; ~ 00008e68: f94007e8 ldr x8, [sp, #8] hyp_early_alloc_init:53.7 (early_alloc.c) sbepe base ║= virt; ~ 00008e6c: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008e70: f904bd28 str x8, [x9, #2424] hyp_early_alloc_init:54.8 (early_alloc.c) Sbepe end = ║virt + size; ~ 00008e74: f94007e8 ldr x8, [sp, #8] hyp_early_alloc_init:54.15 (early_alloc.c) sbepe end = virt + ║size; ~ 00008e78: f94003e9 ldr x9, [sp] hyp_early_alloc_init:54.13 (early_alloc.c) sbepe end = virt ║+ size; ~ 00008e7c: 8b090108 add x8, x8, x9 hyp_early_alloc_init:54.6 (early_alloc.c) sbepe end ║= virt + size; ~ 00008e80: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008e84: f904c128 str x8, [x9, #2432] hyp_early_alloc_init:55.8 (early_alloc.c) Sbepe cur = ║virt; ~ 00008e88: f94007e8 ldr x8, [sp, #8] hyp_early_alloc_init:55.6 (early_alloc.c) sbepe cur ║= virt; ~ 00008e8c: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008e90: f904b928 str x8, [x9, #2416] hyp_early_alloc_init:57.37 (early_alloc.c) Sbepe hyp_early_alloc_mm_ops.zalloc_page ║= hyp_early_alloc_page; ~ 00008e94: d0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008e98: 9124c108 add x8, x8, #0x930 ~ 00008e9c: 90000009 adrp x9, 8000 <psci_1_0_handler+0x7c> ~ 00008ea0: 9138e129 add x9, x9, #0xe38 ~ 00008ea4: f9000109 str x9, [x8] hyp_early_alloc_init:58.38 (early_alloc.c) Sbepe hyp_early_alloc_mm_ops.phys_to_virt ║= hyp_phys_to_virt; ~ 00008ea8: 90000009 adrp x9, 8000 <psci_1_0_handler+0x7c> ~ 00008eac: 913b2129 add x9, x9, #0xec8 ~ 00008eb0: f9001909 str x9, [x8, #48] hyp_early_alloc_init:59.38 (early_alloc.c) Sbepe hyp_early_alloc_mm_ops.virt_to_phys ║= hyp_virt_to_phys; ~ 00008eb4: 90000009 adrp x9, 8000 <psci_1_0_handler+0x7c> ~ 00008eb8: 913ba129 add x9, x9, #0xee8 ~ 00008ebc: f9001d09 str x9, [x8, #56] hyp_early_alloc_init:60.1 (early_alloc.c) Sbepe ║} ~ 00008ec0: 910043ff add sp, sp, #0x10 00008e60 CFA:r31+16 ~ 00008ec4: d65f03c0 ret -virt param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x8) hyp_early_alloc_init:arch/arm64/kvm/hyp/nvhe/early_alloc.c:51 -size param long unsigned int (base type, DW_ATE_unsigned size:8) 0x8e5c 0x8ec8 (DW_OP_fbreg 0x0) hyp_early_alloc_init:arch/arm64/kvm/hyp/nvhe/early_alloc.c:51 **00008ec8 <hyp_phys_to_virt>: + hyp_phys_to_virt params: +phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x8ec8 0x8ee8 (DW_OP_fbreg 0x8) hyp_phys_to_virt:31.0 (memory.h) Sbepe ║{ 00008ec8 CFA:r31 +phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x8ec8 0x8ee8 (DW_OP_fbreg 0x8) hyp_phys_to_virt:arch/arm64/kvm/hyp/nvhe/early_alloc.c:30 ~ 00008ec8: d10043ff sub sp, sp, #0x10 ~ 00008ecc: f90007e0 str x0, [sp, #8] hyp_phys_to_virt:32.9 (memory.h) SbePe return ║__hyp_va(phys); ~ 00008ed0: f94007e8 ldr x8, [sp, #8] ~ 00008ed4: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008ed8: f9439d29 ldr x9, [x9, #1848] ~ 00008edc: eb090100 subs x0, x8, x9 hyp_phys_to_virt:32.2 (memory.h) sbepe ║return __hyp_va(phys); ~ 00008ee0: 910043ff add sp, sp, #0x10 00008ecc CFA:r31+16 ~ 00008ee4: d65f03c0 ret -phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x8ec8 0x8ee8 (DW_OP_fbreg 0x8) hyp_phys_to_virt:arch/arm64/kvm/hyp/nvhe/early_alloc.c:30 **00008ee8 <hyp_virt_to_phys>: + hyp_virt_to_phys params: +addr param pointer(no type) 0x8ee8 0x8f08 (DW_OP_fbreg 0x8) hyp_virt_to_phys:36.0 (memory.h) Sbepe ║{ 00008ee8 CFA:r31 +addr param pointer(no type) 0x8ee8 0x8f08 (DW_OP_fbreg 0x8) hyp_virt_to_phys:arch/arm64/kvm/hyp/nvhe/early_alloc.c:35 ~ 00008ee8: d10043ff sub sp, sp, #0x10 ~ 00008eec: f90007e0 str x0, [sp, #8] hyp_virt_to_phys:37.9 (memory.h) SbePe return ║__hyp_pa(addr); ~ 00008ef0: f94007e8 ldr x8, [sp, #8] ~ 00008ef4: d0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0> ~ 00008ef8: f9439d29 ldr x9, [x9, #1848] ~ 00008efc: 8b090100 add x0, x8, x9 hyp_virt_to_phys:37.2 (memory.h) sbepe ║return __hyp_pa(addr); ~ 00008f00: 910043ff add sp, sp, #0x10 00008eec CFA:r31+16 ~ 00008f04: d65f03c0 ret -addr param pointer(no type) 0x8ee8 0x8f08 (DW_OP_fbreg 0x8) hyp_virt_to_phys:arch/arm64/kvm/hyp/nvhe/early_alloc.c:35