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 00008f08 000099a8 arch/arm64/kvm/hyp/nvhe/page_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
**00008f08 <hyp_put_page>:
00008f08 <$x>:
+ hyp_put_page params:
+addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8)
hyp_put_page:66.0 (page_alloc.c) Sbepe ║{
+addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65
+p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8f08 0x8fac (DW_OP_breg31 0x10) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:67
+pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8f08 0x8fac (DW_OP_breg31 0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:68
~ 00008f08: d100c3ff sub sp, sp, #0x30
~ 00008f0c: a9027bfd stp x29, x30, [sp, #32]
00008f08 CFA:r31 r29:u r30:u
~ 00008f10: 910083fd add x29, sp, #0x20
~ 00008f14: f81f83a0 stur x0, [x29, #-8]
hyp_put_page:67.23 (page_alloc.c) SbePe struct hyp_page *p = ║hyp_virt_to_page(addr);
~ 00008f18: d0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ 00008f1c: f944c508 ldr x8, [x8, #2440]
~ 00008f20: f85f83a9 ldur x9, [x29, #-8]
~ 00008f24: d000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0>
~ 00008f28: f9439d4a ldr x10, [x10, #1848]
~ 00008f2c: 8b0a0129 add x9, x9, x10
~ 00008f30: d347fd29 lsr x9, x9, #7
~ 00008f34: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ 00008f38: 8b090108 add x8, x8, x9
hyp_put_page:67.19 (page_alloc.c) sbepe struct hyp_page *║p = hyp_virt_to_page(addr);
~ 00008f3c: f9000be8 str x8, [sp, #16]
hyp_put_page:68.26 (page_alloc.c) Sbepe struct hyp_pool *pool = ║hyp_page_to_pool(p);
~ 00008f40: f9400be8 ldr x8, [sp, #16]
~ 00008f44: f9400508 ldr x8, [x8, #8]
hyp_put_page:68.19 (page_alloc.c) sbepe struct hyp_pool *║pool = hyp_page_to_pool(p);
~ 00008f48: f90007e8 str x8, [sp, #8]
hyp_put_page:70.17 (page_alloc.c) Sbepe hyp_spin_lock(&║pool->lock);
~ 00008f4c: f94007e0 ldr x0, [sp, #8]
hyp_put_page:70.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock);
~ 00008f50: 94000017 bl 8fac <hyp_spin_lock>
hyp_put_page:71.7 (page_alloc.c) Sbepe if (!║p->refcount)
~ 00008f54: f9400be8 ldr x8, [sp, #16] <- 00008f50(bl-succ)<return>
hyp_put_page:71.10 (page_alloc.c) sbepe if (!p->║refcount)
~ 00008f58: b940010b ldr w11, [x8]
hyp_put_page:71.6 (page_alloc.c) sbepe if (║!p->refcount)
~ ┌──00008f5c: 3500006b cbnz w11, 8f68 <hyp_put_page+0x60>
│
~ │┌─00008f60: 14000001 b 8f64 <hyp_put_page+0x5c> <- 00008f5c(b.cc-succ)<fallthrough>
││
││ hyp_put_page:72.3 (page_alloc.c) Sbepe ║hyp_panic();
~ │└>00008f64: 97ffe9d5 bl 36b8 <hyp_panic> <- 00008f60(b)<hyp_put_page+0x5c>
│
│ hyp_put_page:73.2 (page_alloc.c) Sbepe ║p->refcount--;
~ └─>00008f68: f9400be8 ldr x8, [sp, #16] <- 00008f5c(b.cc)<hyp_put_page+0x60>,00008f64(bl-succ)<return>
hyp_put_page:73.13 (page_alloc.c) sbepe p->refcount║--;
~ 00008f6c: b9400109 ldr w9, [x8]
~ 00008f70: 71000529 subs w9, w9, #0x1
~ 00008f74: b9000109 str w9, [x8]
hyp_put_page:74.7 (page_alloc.c) Sbepe if (!║p->refcount)
~ 00008f78: f9400be8 ldr x8, [sp, #16]
hyp_put_page:74.10 (page_alloc.c) sbepe if (!p->║refcount)
~ 00008f7c: b9400109 ldr w9, [x8]
hyp_put_page:74.6 (page_alloc.c) sbepe if (║!p->refcount)
~ ┌───00008f80: 350000c9 cbnz w9, 8f98 <hyp_put_page+0x90>
│
~ │ ┌─00008f84: 14000001 b 8f88 <hyp_put_page+0x80> <- 00008f80(b.cc-succ)<fallthrough>
│ │
│ │ hyp_put_page:75.21 (page_alloc.c) Sbepe __hyp_attach_page(║pool, p);
~ │ └>00008f88: f94007e0 ldr x0, [sp, #8] <- 00008f84(b)<hyp_put_page+0x80>
│ hyp_put_page:75.27 (page_alloc.c) sbepe __hyp_attach_page(pool, ║p);
~ │ 00008f8c: f9400be1 ldr x1, [sp, #16]
│ hyp_put_page:75.3 (page_alloc.c) sbepe ║__hyp_attach_page(pool, p);
~ │ 00008f90: 9400001b bl 8ffc <__hyp_attach_page>
│
~ │ ┌─00008f94: 14000001 b 8f98 <hyp_put_page+0x90> <- 00008f90(bl-succ)<return>
│ │
│ │ hyp_put_page:76.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock);
~ └>└>00008f98: f94007e0 ldr x0, [sp, #8] <- 00008f80(b.cc)<hyp_put_page+0x90>,00008f94(b)<hyp_put_page+0x90>
hyp_put_page:76.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock);
~ 00008f9c: 94000062 bl 9124 <hyp_spin_unlock>
hyp_put_page:77.1 (page_alloc.c) Sbepe ║}
~ 00008fa0: a9427bfd ldp x29, x30, [sp, #32] <- 00008f9c(bl-succ)<return>
~ 00008fa4: 9100c3ff add sp, sp, #0x30
00008f14 CFA:r29+16 r29:c-16 r30:c-8
~ 00008fa8: d65f03c0 ret
-addr param pointer(no type) 0x8f08 0x8fac (DW_OP_fbreg -0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65
-p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8f08 0x8fac (DW_OP_breg31 0x10) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:67
-pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8f08 0x8fac (DW_OP_breg31 0x8) hyp_put_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:68
**00008fac <hyp_spin_lock>:
+ hyp_spin_lock params:
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18)
hyp_spin_lock:36.0 (spinlock.h) Sbepe ║{
00008fac CFA:r31
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:35
+tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x8fac 0x8ffc (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:37
+lockval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38
+newval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38
~ 00008fac: d10083ff sub sp, sp, #0x20 <- 00008f50(bl)<hyp_spin_lock>,00009190(bl)<hyp_spin_lock>,000091d4(bl)<hyp_spin_lock>
~ 00008fb0: f9000fe0 str x0, [sp, #24]
hyp_spin_lock:68.57 (spinlock.h) SbePe : "=&r" (lockval), "=&r" (newval), "=&r" (tmp), "+Q" (*║lock)
~ 00008fb4: f9400fe8 ldr x8, [sp, #24]
hyp_spin_lock:40.2 (spinlock.h) Sbepe ║asm volatile(
~ 00008fb8: f9800111 prfm pstl1strm, [x8]
~ ╔>00008fbc: 885ffd09 ldaxr w9, [x8] <- v00008fc8(b.cc)<hyp_spin_lock+0x10>
~ ║ 00008fc0: 1140412a add w10, w9, #0x10, lsl #12
~ ║ 00008fc4: 880b7d0a stxr w11, w10, [x8]
~ ╚═00008fc8: 35ffffab cbnz w11, 8fbc <hyp_spin_lock+0x10>
~ 00008fcc: 4ac9412a eor w10, w9, w9, ror #16 <- 00008fc8(b.cc-succ)<fallthrough>
~ ┌──00008fd0: 340000ca cbz w10, 8fe8 <hyp_spin_lock+0x3c>
│
~ │ 00008fd4: d50320bf sevl <- 00008fd0(b.cc-succ)<fallthrough>
│
~ │╔>00008fd8: d503205f wfe <- v00008fe4(b.cc)<hyp_spin_lock+0x2c>
~ │║ 00008fdc: 485ffd0b ldaxrh w11, [x8]
~ │║ 00008fe0: 4a49416a eor w10, w11, w9, lsr #16
~ │╚═00008fe4: 35ffffaa cbnz w10, 8fd8 <hyp_spin_lock+0x2c>
│
~ └─>00008fe8: b90013e9 str w9, [sp, #16] <- 00008fd0(b.cc)<hyp_spin_lock+0x3c>,00008fe4(b.cc-succ)<fallthrough>
~ 00008fec: b9000bea str w10, [sp, #8]
~ 00008ff0: b90017eb str w11, [sp, #20]
hyp_spin_lock:71.1 (spinlock.h) Sbepe ║}
~ 00008ff4: 910083ff add sp, sp, #0x20
00008fb0 CFA:r31+32
~ 00008ff8: d65f03c0 ret
-lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x8fac 0x8ffc (DW_OP_fbreg 0x18) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:35
-tmp var typedef(u32=typedef(__u32=unsigned int (base type, DW_ATE_unsigned size:4))) 0x8fac 0x8ffc (DW_OP_fbreg 0x14) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:37
-lockval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x10) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38
-newval var typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>) 0x8fac 0x8ffc (DW_OP_fbreg 0x8) hyp_spin_lock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:38
**00008ffc <__hyp_attach_page>:
+ __hyp_attach_page params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8)
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10)
__hyp_attach_page:44.0 (page_alloc.c) Sbepe ║{
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:42
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:43
+order var unsigned int (base type, DW_ATE_unsigned size:4) 0x8ffc 0x9124 (DW_OP_fbreg -0x14) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45
+buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_breg31 0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46
~ 00008ffc: d10103ff sub sp, sp, #0x40 <- 00008f90(bl)<__hyp_attach_page>,00009504(bl)<__hyp_attach_page>
~ 00009000: a9037bfd stp x29, x30, [sp, #48]
00008ffc CFA:r31 r29:u r30:u
~ 00009004: 9100c3fd add x29, sp, #0x30
~ 00009008: f81f83a0 stur x0, [x29, #-8]
~ 0000900c: f81f03a1 stur x1, [x29, #-16]
__hyp_attach_page:45.23 (page_alloc.c) SbePe unsigned int order = ║p->order;
~ 00009010: f85f03a8 ldur x8, [x29, #-16]
__hyp_attach_page:45.26 (page_alloc.c) sbepe unsigned int order = p->║order;
~ 00009014: b9400509 ldr w9, [x8, #4]
__hyp_attach_page:45.15 (page_alloc.c) sbepe unsigned int ║order = p->order;
~ 00009018: b81ec3a9 stur w9, [x29, #-20]
__hyp_attach_page:48.2 (page_alloc.c) Sbepe ║p->order = HYP_NO_ORDER;
~ 0000901c: f85f03a8 ldur x8, [x29, #-16]
~ 00009020: 12800009 mov w9, #0xffffffff // #-1
__hyp_attach_page:48.11 (page_alloc.c) sbepe p->order ║= HYP_NO_ORDER;
~ 00009024: b9000509 str w9, [x8, #4]
__hyp_attach_page:49.2 (page_alloc.c) Sbepe ║for (; order < HYP_MAX_ORDER; order++) {
~ ┌─00009028: 14000001 b 902c <__hyp_attach_page+0x30>
│
│ __hyp_attach_page:49.9 (page_alloc.c) sbepe for (; ║order < HYP_MAX_ORDER; order++) {
~ ╔════>└>0000902c: b85ec3a8 ldur w8, [x29, #-20] <- 00009028(b)<__hyp_attach_page+0x30>,v000090e8(b)<__hyp_attach_page+0x30>
║ __hyp_attach_page:49.2 (page_alloc.c) sbepe ║for (; order < HYP_MAX_ORDER; order++) {
~ ║ 00009030: 71002908 subs w8, w8, #0xa
~ ┌──╫───────00009034: 540005c8 b.hi 90ec <__hyp_attach_page+0xf0> // b.pmore
│ ║
~ │ ║ ┌─00009038: 14000001 b 903c <__hyp_attach_page+0x40> <- 00009034(b.cc-succ)<fallthrough>
│ ║ │
│ ║ │ __hyp_attach_page:51.24 (page_alloc.c) Sbepe buddy = __find_buddy(║pool, p, order);
~ │ ║ └>0000903c: f85f83a0 ldur x0, [x29, #-8] <- 00009038(b)<__hyp_attach_page+0x40>
│ ║ __hyp_attach_page:51.30 (page_alloc.c) sbepe buddy = __find_buddy(pool, ║p, order);
~ │ ║ 00009040: f85f03a1 ldur x1, [x29, #-16]
│ ║ __hyp_attach_page:51.33 (page_alloc.c) sbepe buddy = __find_buddy(pool, p, ║order);
~ │ ║ 00009044: b85ec3a2 ldur w2, [x29, #-20]
│ ║ __hyp_attach_page:51.11 (page_alloc.c) sbepe buddy = ║__find_buddy(pool, p, order);
~ │ ║ 00009048: 9400014d bl 957c <__find_buddy>
│ ║
│ ║ __hyp_attach_page:51.9 (page_alloc.c) sbepe buddy ║= __find_buddy(pool, p, order);
~ │ ║ 0000904c: f9000be0 str x0, [sp, #16] <- 00009048(bl-succ)<return>
│ ║ __hyp_attach_page:52.8 (page_alloc.c) Sbepe if (!║buddy || list_empty(&buddy->node) || buddy->order != order)
~ │ ║ 00009050: f9400be8 ldr x8, [sp, #16]
│ ║ __hyp_attach_page:52.14 (page_alloc.c) sbepe if (!buddy ║|| list_empty(&buddy->node) || buddy->order != order)
~ │ ║┌──────00009054: b40001a8 cbz x8, 9088 <__hyp_attach_page+0x8c>
│ ║│
~ │ ║│ ┌─00009058: 14000001 b 905c <__hyp_attach_page+0x60> <- 00009054(b.cc-succ)<fallthrough>
│ ║│ │
│ ║│ │ __hyp_attach_page:52.29 (page_alloc.c) sbepe if (!buddy || list_empty(&║buddy->node) || buddy->order != order)
~ │ ║│ └>0000905c: f9400be8 ldr x8, [sp, #16] <- 00009058(b)<__hyp_attach_page+0x60>
│ ║│ __hyp_attach_page:52.36 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->║node) || buddy->order != order)
~ │ ║│ 00009060: 91004100 add x0, x8, #0x10
│ ║│ __hyp_attach_page:52.17 (page_alloc.c) sbepe if (!buddy || ║list_empty(&buddy->node) || buddy->order != order)
~ │ ║│ 00009064: 94000172 bl 962c <list_empty>
│ ║│
│ ║│ __hyp_attach_page:52.42 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) ║|| buddy->order != order)
~ │ ║│ ┌────00009068: 35000100 cbnz w0, 9088 <__hyp_attach_page+0x8c> <- 00009064(bl-succ)<return>
│ ║│ │
~ │ ║│ │ ┌─0000906c: 14000001 b 9070 <__hyp_attach_page+0x74> <- 00009068(b.cc-succ)<fallthrough>
│ ║│ │ │
│ ║│ │ │ __hyp_attach_page:52.45 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || ║buddy->order != order)
~ │ ║│ │ └>00009070: f9400be8 ldr x8, [sp, #16] <- 0000906c(b)<__hyp_attach_page+0x74>
│ ║│ │ __hyp_attach_page:52.52 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || buddy->║order != order)
~ │ ║│ │ 00009074: b9400509 ldr w9, [x8, #4]
│ ║│ │ __hyp_attach_page:52.61 (page_alloc.c) sbepe if (!buddy || list_empty(&buddy->node) || buddy->order != ║order)
~ │ ║│ │ 00009078: b85ec3aa ldur w10, [x29, #-20]
│ ║│ │ __hyp_attach_page:52.7 (page_alloc.c) sbepe if (║!buddy || list_empty(&buddy->node) || buddy->order != order)
~ │ ║│ │ 0000907c: 6b0a0129 subs w9, w9, w10
~ │ ║│ │ ┌──00009080: 54000060 b.eq 908c <__hyp_attach_page+0x90> // b.none
│ ║│ │ │
~ │ ║│ │ │┌─00009084: 14000001 b 9088 <__hyp_attach_page+0x8c> <- 00009080(b.cc-succ)<fallthrough>
│ ║│ │ ││
│ ║│ │ ││ __hyp_attach_page:53.4 (page_alloc.c) Sbepe ║break;
~ │ ┌╫└>└>│└>00009088: 14000019 b 90ec <__hyp_attach_page+0xf0> <- 00009054(b.cc)<__hyp_attach_page+0x8c>,00009068(b.cc)<__hyp_attach_page+0x8c>,00009084(b)<__hyp_attach_page+0x8c>
│ │║ │
│ │║ │ __hyp_attach_page:56.18 (page_alloc.c) Sbepe list_del_init(&║buddy->node);
~ │ │║ └─>0000908c: f9400be8 ldr x8, [sp, #16] <- 00009080(b.cc)<__hyp_attach_page+0x90>
│ │║ __hyp_attach_page:56.25 (page_alloc.c) sbepe list_del_init(&buddy->║node);
~ │ │║ 00009090: 91004100 add x0, x8, #0x10
│ │║ __hyp_attach_page:56.3 (page_alloc.c) sbepe ║list_del_init(&buddy->node);
~ │ │║ 00009094: 94000173 bl 9660 <list_del_init>
│ │║
│ │║ __hyp_attach_page:57.3 (page_alloc.c) Sbepe ║buddy->order = HYP_NO_ORDER;
~ │ │║ 00009098: f9400be8 ldr x8, [sp, #16] <- 00009094(bl-succ)<return>
~ │ │║ 0000909c: 12800009 mov w9, #0xffffffff // #-1
│ │║ __hyp_attach_page:57.16 (page_alloc.c) sbepe buddy->order ║= HYP_NO_ORDER;
~ │ │║ 000090a0: b9000509 str w9, [x8, #4]
│ │║ __hyp_attach_page:58.8 (page_alloc.c) Sbepe p = (║p < buddy) ? p : buddy;
~ │ │║ 000090a4: f85f03a8 ldur x8, [x29, #-16]
│ │║ __hyp_attach_page:58.12 (page_alloc.c) sbepe p = (p < ║buddy) ? p : buddy;
~ │ │║ 000090a8: f9400bea ldr x10, [sp, #16]
│ │║ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy;
~ │ │║ 000090ac: eb0a0108 subs x8, x8, x10
~ │ │║ ┌──000090b0: 540000a2 b.cs 90c4 <__hyp_attach_page+0xc8> // b.hs, b.nlast
│ │║ │
~ │ │║ │┌─000090b4: 14000001 b 90b8 <__hyp_attach_page+0xbc> <- 000090b0(b.cc-succ)<fallthrough>
│ │║ ││
│ │║ ││ __hyp_attach_page:58.21 (page_alloc.c) sbepe p = (p < buddy) ? ║p : buddy;
~ │ │║ │└>000090b8: f85f03a8 ldur x8, [x29, #-16] <- 000090b4(b)<__hyp_attach_page+0xbc>
~ │ │║ │ 000090bc: f90007e8 str x8, [sp, #8]
│ │║ │ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy;
~ │ │║ ┌┼──000090c0: 14000004 b 90d0 <__hyp_attach_page+0xd4>
│ │║ ││
│ │║ ││ __hyp_attach_page:58.25 (page_alloc.c) sbepe p = (p < buddy) ? p : ║buddy;
~ │ │║ │└─>000090c4: f9400be8 ldr x8, [sp, #16] <- 000090b0(b.cc)<__hyp_attach_page+0xc8>
~ │ │║ │ 000090c8: f90007e8 str x8, [sp, #8]
│ │║ │ __hyp_attach_page:58.7 (page_alloc.c) sbepe p = ║(p < buddy) ? p : buddy;
~ │ │║ │ ┌─000090cc: 14000001 b 90d0 <__hyp_attach_page+0xd4>
│ │║ │ │
~ │ │║ └>└>000090d0: f94007e8 ldr x8, [sp, #8] <- 000090c0(b)<__hyp_attach_page+0xd4>,000090cc(b)<__hyp_attach_page+0xd4>
│ │║ __hyp_attach_page:58.5 (page_alloc.c) sbepe p ║= (p < buddy) ? p : buddy;
~ │ │║ 000090d4: f81f03a8 stur x8, [x29, #-16]
│ │║ __hyp_attach_page:59.2 (page_alloc.c) Sbepe }
~ │ │║ ┌─000090d8: 14000001 b 90dc <__hyp_attach_page+0xe0>
│ │║ │
│ │║ │ __hyp_attach_page:49.37 (page_alloc.c) Sbepe for (; order < HYP_MAX_ORDER; order║++) {
~ │ │║ └>000090dc: b85ec3a8 ldur w8, [x29, #-20] <- 000090d8(b)<__hyp_attach_page+0xe0>
~ │ │║ 000090e0: 11000508 add w8, w8, #0x1
~ │ │║ 000090e4: b81ec3a8 stur w8, [x29, #-20]
│ │║ __hyp_attach_page:49.2 (page_alloc.c) sbepe ║for (; order < HYP_MAX_ORDER; order++) {
~ │ │╚═══════000090e8: 17ffffd1 b 902c <__hyp_attach_page+0x30>
│ │
│ │ __hyp_attach_page:61.13 (page_alloc.c) Sbepe p->order = ║order;
~ └>└───────>000090ec: b85ec3a8 ldur w8, [x29, #-20] <- 00009034(b.cc)<__hyp_attach_page+0xf0>,00009088(b)<__hyp_attach_page+0xf0>
__hyp_attach_page:61.2 (page_alloc.c) sbepe ║p->order = order;
~ 000090f0: f85f03a9 ldur x9, [x29, #-16]
__hyp_attach_page:61.11 (page_alloc.c) sbepe p->order ║= order;
~ 000090f4: b9000528 str w8, [x9, #4]
__hyp_attach_page:62.17 (page_alloc.c) Sbepe list_add_tail(&║p->node, &pool->free_area[order]);
~ 000090f8: f85f03a9 ldur x9, [x29, #-16]
__hyp_attach_page:62.20 (page_alloc.c) sbepe list_add_tail(&p->║node, &pool->free_area[order]);
~ 000090fc: 91004120 add x0, x9, #0x10
__hyp_attach_page:62.27 (page_alloc.c) sbepe list_add_tail(&p->node, &║pool->free_area[order]);
~ 00009100: f85f83a9 ldur x9, [x29, #-8]
__hyp_attach_page:62.43 (page_alloc.c) sbepe list_add_tail(&p->node, &pool->free_area[║order]);
~ 00009104: b85ec3a8 ldur w8, [x29, #-20]
~ 00009108: 2a0803ea mov w10, w8
__hyp_attach_page:62.33 (page_alloc.c) sbepe list_add_tail(&p->node, &pool->║free_area[order]);
~ 0000910c: 8b0a1129 add x9, x9, x10, lsl #4
__hyp_attach_page:62.27 (page_alloc.c) sbepe list_add_tail(&p->node, &║pool->free_area[order]);
~ 00009110: 91002121 add x1, x9, #0x8
__hyp_attach_page:62.2 (page_alloc.c) sbepe ║list_add_tail(&p->node, &pool->free_area[order]);
~ 00009114: 9400015e bl 968c <list_add_tail>
__hyp_attach_page:63.1 (page_alloc.c) Sbepe ║}
~ 00009118: a9437bfd ldp x29, x30, [sp, #48] <- 00009114(bl-succ)<return>
~ 0000911c: 910103ff add sp, sp, #0x40
00009008 CFA:r29+16 r29:c-16 r30:c-8
~ 00009120: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x8ffc 0x9124 (DW_OP_fbreg -0x8) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:42
-p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_fbreg -0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:43
-order var unsigned int (base type, DW_ATE_unsigned size:4) 0x8ffc 0x9124 (DW_OP_fbreg -0x14) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45
-buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x8ffc 0x9124 (DW_OP_breg31 0x10) __hyp_attach_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46
**00009124 <hyp_spin_unlock>:
+ hyp_spin_unlock params:
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8)
hyp_spin_unlock:74.0 (spinlock.h) Sbepe ║{
00009124 CFA:r31
+lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:73
+tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x9124 0x9148 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:75
~ 00009124: d10043ff sub sp, sp, #0x10 <- 00008f9c(bl)<hyp_spin_unlock>,000091a8(bl)<hyp_spin_unlock>,000091f0(bl)<hyp_spin_unlock>
~ 00009128: f90007e0 str x0, [sp, #8]
hyp_spin_unlock:87.10 (spinlock.h) SbePe : "=Q" (║lock->owner), "=&r" (tmp)
~ 0000912c: f94007e8 ldr x8, [sp, #8]
hyp_spin_unlock:77.2 (spinlock.h) Sbepe ║asm volatile(
~ 00009130: 79400109 ldrh w9, [x8]
~ 00009134: 11000529 add w9, w9, #0x1
~ 00009138: 489ffd09 stlrh w9, [x8]
~ 0000913c: f90003e9 str x9, [sp]
hyp_spin_unlock:90.1 (spinlock.h) Sbepe ║}
~ 00009140: 910043ff add sp, sp, #0x10
00009128 CFA:r31+16
~ 00009144: d65f03c0 ret
-lock param pointer(typedef(hyp_spinlock_t=union hyp_spinlock<6b8fc>/<6b9fb>)) 0x9124 0x9148 (DW_OP_fbreg 0x8) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:73
-tmp var typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8))) 0x9124 0x9148 (DW_OP_fbreg 0x0) hyp_spin_unlock:arch/arm64/kvm/hyp/nvhe/page_alloc.c:75
**00009148 <hyp_get_page>:
+ hyp_get_page params:
+addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8)
hyp_get_page:80.0 (page_alloc.c) Sbepe ║{
+addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:79
+p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9148 0x91b8 (DW_OP_breg31 0x10) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:81
+pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9148 0x91b8 (DW_OP_breg31 0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:82
~ 00009148: d100c3ff sub sp, sp, #0x30
~ 0000914c: a9027bfd stp x29, x30, [sp, #32]
00009148 CFA:r31 r29:u r30:u
~ 00009150: 910083fd add x29, sp, #0x20
~ 00009154: f81f83a0 stur x0, [x29, #-8]
hyp_get_page:81.23 (page_alloc.c) SbePe struct hyp_page *p = ║hyp_virt_to_page(addr);
~ 00009158: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ 0000915c: f944c508 ldr x8, [x8, #2440]
~ 00009160: f85f83a9 ldur x9, [x29, #-8]
~ 00009164: b000008a adrp x10, 1a000 <hyp_cpu_logical_map+0xe0>
~ 00009168: f9439d4a ldr x10, [x10, #1848]
~ 0000916c: 8b0a0129 add x9, x9, x10
~ 00009170: d347fd29 lsr x9, x9, #7
~ 00009174: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ 00009178: 8b090108 add x8, x8, x9
hyp_get_page:81.19 (page_alloc.c) sbepe struct hyp_page *║p = hyp_virt_to_page(addr);
~ 0000917c: f9000be8 str x8, [sp, #16]
hyp_get_page:82.26 (page_alloc.c) Sbepe struct hyp_pool *pool = ║hyp_page_to_pool(p);
~ 00009180: f9400be8 ldr x8, [sp, #16]
~ 00009184: f9400508 ldr x8, [x8, #8]
hyp_get_page:82.19 (page_alloc.c) sbepe struct hyp_pool *║pool = hyp_page_to_pool(p);
~ 00009188: f90007e8 str x8, [sp, #8]
hyp_get_page:84.17 (page_alloc.c) Sbepe hyp_spin_lock(&║pool->lock);
~ 0000918c: f94007e0 ldr x0, [sp, #8]
hyp_get_page:84.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock);
~ 00009190: 97ffff87 bl 8fac <hyp_spin_lock>
hyp_get_page:85.2 (page_alloc.c) Sbepe ║p->refcount++;
~ 00009194: f9400be8 ldr x8, [sp, #16] <- 00009190(bl-succ)<return>
hyp_get_page:85.13 (page_alloc.c) sbepe p->refcount║++;
~ 00009198: b940010b ldr w11, [x8]
~ 0000919c: 1100056b add w11, w11, #0x1
~ 000091a0: b900010b str w11, [x8]
hyp_get_page:86.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock);
~ 000091a4: f94007e0 ldr x0, [sp, #8]
hyp_get_page:86.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock);
~ 000091a8: 97ffffdf bl 9124 <hyp_spin_unlock>
hyp_get_page:87.1 (page_alloc.c) Sbepe ║}
~ 000091ac: a9427bfd ldp x29, x30, [sp, #32] <- 000091a8(bl-succ)<return>
~ 000091b0: 9100c3ff add sp, sp, #0x30
00009154 CFA:r29+16 r29:c-16 r30:c-8
~ 000091b4: d65f03c0 ret
-addr param pointer(no type) 0x9148 0x91b8 (DW_OP_fbreg -0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:79
-p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9148 0x91b8 (DW_OP_breg31 0x10) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:81
-pool var pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9148 0x91b8 (DW_OP_breg31 0x8) hyp_get_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:82
**000091b8 <hyp_alloc_pages>:
+ hyp_alloc_pages params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8)
+mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc)
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10)
hyp_alloc_pages:145.0 (page_alloc.c) Sbepe ║{
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
+mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
+p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x91b8 0x9244 (DW_OP_breg31 0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:146
~ 000091b8: d100c3ff sub sp, sp, #0x30 <- 00009be0(bl)<hyp_alloc_pages>,0000bbec(bl)<hyp_alloc_pages>,0000bc18(bl)<hyp_alloc_pages>
~ 000091bc: a9027bfd stp x29, x30, [sp, #32]
000091b8 CFA:r31 r29:u r30:u
~ 000091c0: 910083fd add x29, sp, #0x20
~ 000091c4: f81f83a0 stur x0, [x29, #-8]
~ 000091c8: b81f43a1 stur w1, [x29, #-12]
~ 000091cc: b90013e2 str w2, [sp, #16]
hyp_alloc_pages:148.17 (page_alloc.c) SbePe hyp_spin_lock(&║pool->lock);
~ 000091d0: f85f83a0 ldur x0, [x29, #-8]
hyp_alloc_pages:148.2 (page_alloc.c) sbepe ║hyp_spin_lock(&pool->lock);
~ 000091d4: 97ffff76 bl 8fac <hyp_spin_lock>
hyp_alloc_pages:149.24 (page_alloc.c) Sbepe p = __hyp_alloc_pages(║pool, mask, order);
~ 000091d8: f85f83a0 ldur x0, [x29, #-8] <- 000091d4(bl-succ)<return>
hyp_alloc_pages:149.30 (page_alloc.c) sbepe p = __hyp_alloc_pages(pool, ║mask, order);
~ 000091dc: b85f43a1 ldur w1, [x29, #-12]
hyp_alloc_pages:149.36 (page_alloc.c) sbepe p = __hyp_alloc_pages(pool, mask, ║order);
~ 000091e0: b94013e2 ldr w2, [sp, #16]
hyp_alloc_pages:149.6 (page_alloc.c) sbepe p = ║__hyp_alloc_pages(pool, mask, order);
~ 000091e4: 94000018 bl 9244 <__hyp_alloc_pages>
hyp_alloc_pages:149.4 (page_alloc.c) sbepe p ║= __hyp_alloc_pages(pool, mask, order);
~ 000091e8: f90007e0 str x0, [sp, #8] <- 000091e4(bl-succ)<return>
hyp_alloc_pages:150.19 (page_alloc.c) Sbepe hyp_spin_unlock(&║pool->lock);
~ 000091ec: f85f83a0 ldur x0, [x29, #-8]
hyp_alloc_pages:150.2 (page_alloc.c) sbepe ║hyp_spin_unlock(&pool->lock);
~ 000091f0: 97ffffcd bl 9124 <hyp_spin_unlock>
hyp_alloc_pages:152.9 (page_alloc.c) Sbepe return ║p ? hyp_page_to_virt(p) : NULL;
~ 000091f4: f94007e8 ldr x8, [sp, #8] <- 000091f0(bl-succ)<return>
~ ┌──000091f8: b4000188 cbz x8, 9228 <hyp_alloc_pages+0x70>
│
~ │┌─000091fc: 14000001 b 9200 <hyp_alloc_pages+0x48> <- 000091f8(b.cc-succ)<fallthrough>
││
││ hyp_alloc_pages:152.13 (page_alloc.c) sbepe return p ? ║hyp_page_to_virt(p) : NULL;
~ │└>00009200: f94007e8 ldr x8, [sp, #8] <- 000091fc(b)<hyp_alloc_pages+0x48>
~ │ 00009204: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 00009208: f944c529 ldr x9, [x9, #2440]
~ │ 0000920c: eb090108 subs x8, x8, x9
~ │ 00009210: d379e108 lsl x8, x8, #7
~ │ 00009214: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 00009218: f9439d29 ldr x9, [x9, #1848]
~ │ 0000921c: eb090108 subs x8, x8, x9
~ │ 00009220: f90003e8 str x8, [sp]
│ hyp_alloc_pages:152.9 (page_alloc.c) sbepe return ║p ? hyp_page_to_virt(p) : NULL;
~ ┌┼──00009224: 14000004 b 9234 <hyp_alloc_pages+0x7c>
││
~ │└─>00009228: aa1f03e0 mov x0, xzr <- 000091f8(b.cc)<hyp_alloc_pages+0x70>
~ │ 0000922c: f90003e0 str x0, [sp]
│ hyp_alloc_pages:152.9 (page_alloc.c) sbepe return ║p ? hyp_page_to_virt(p) : NULL;
~ │ ┌─00009230: 14000001 b 9234 <hyp_alloc_pages+0x7c>
│ │
~ └>└>00009234: f94003e0 ldr x0, [sp] <- 00009224(b)<hyp_alloc_pages+0x7c>,00009230(b)<hyp_alloc_pages+0x7c>
hyp_alloc_pages:152.2 (page_alloc.c) sbepe ║return p ? hyp_page_to_virt(p) : NULL;
~ 00009238: a9427bfd ldp x29, x30, [sp, #32]
~ 0000923c: 9100c3ff add sp, sp, #0x30
000091c4 CFA:r29+16 r29:c-16 r30:c-8
~ 00009240: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x91b8 0x9244 (DW_OP_fbreg -0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
-mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x91b8 0x9244 (DW_OP_fbreg -0xc) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
-order param unsigned int (base type, DW_ATE_unsigned size:4) 0x91b8 0x9244 (DW_OP_breg31 0x10) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:144
-p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x91b8 0x9244 (DW_OP_breg31 0x8) hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:146
**00009244 <__hyp_alloc_pages>:
+ __hyp_alloc_pages params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10)
+mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14)
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18)
__hyp_alloc_pages:124.0 (page_alloc.c) Sbepe ║{
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122
+mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:123
+i var unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x1c) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:125
+p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9244 0x935c (DW_OP_breg31 0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:126
~ 00009244: d10143ff sub sp, sp, #0x50 <- 000091e4(bl)<__hyp_alloc_pages>
~ 00009248: a9047bfd stp x29, x30, [sp, #64]
00009244 CFA:r31 r29:u r30:u
~ 0000924c: 910103fd add x29, sp, #0x40
~ 00009250: f81f03a0 stur x0, [x29, #-16]
~ 00009254: b81ec3a1 stur w1, [x29, #-20]
~ 00009258: b81e83a2 stur w2, [x29, #-24]
__hyp_alloc_pages:125.19 (page_alloc.c) SbePe unsigned int i = ║order;
~ 0000925c: b85e83a8 ldur w8, [x29, #-24]
__hyp_alloc_pages:125.15 (page_alloc.c) sbepe unsigned int ║i = order;
~ 00009260: b81e43a8 stur w8, [x29, #-28]
__hyp_alloc_pages:129.2 (page_alloc.c) Sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i]))
~ ┌─00009264: 14000001 b 9268 <__hyp_alloc_pages+0x24>
│
│ __hyp_alloc_pages:129.9 (page_alloc.c) sbepe while (║i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i]))
~ ╔═>└>00009268: b85e43a8 ldur w8, [x29, #-28] <- 00009264(b)<__hyp_alloc_pages+0x24>,v000092c0(b)<__hyp_alloc_pages+0x24>
~ ║ 0000926c: 2a1f03e0 mov w0, wzr
║ __hyp_alloc_pages:129.28 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER ║&& list_empty(&pool->free_area[i]))
~ ║ 00009270: 71002d08 subs w8, w8, #0xb
~ ║ 00009274: b90007e0 str w0, [sp, #4]
~ ║┌───00009278: 54000188 b.hi 92a8 <__hyp_alloc_pages+0x64> // b.pmore
║│
~ ║│ ┌─0000927c: 14000001 b 9280 <__hyp_alloc_pages+0x3c> <- 00009278(b.cc-succ)<fallthrough>
║│ │
║│ │ __hyp_alloc_pages:129.43 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&║pool->free_area[i]))
~ ║│ └>00009280: f85f03a8 ldur x8, [x29, #-16] <- 0000927c(b)<__hyp_alloc_pages+0x3c>
║│ __hyp_alloc_pages:129.59 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[║i]))
~ ║│ 00009284: b85e43a9 ldur w9, [x29, #-28]
~ ║│ 00009288: 2a0903ea mov w10, w9
║│ __hyp_alloc_pages:129.49 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&pool->║free_area[i]))
~ ║│ 0000928c: 8b0a1108 add x8, x8, x10, lsl #4
║│ __hyp_alloc_pages:129.43 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && list_empty(&║pool->free_area[i]))
~ ║│ 00009290: 91002100 add x0, x8, #0x8
║│ __hyp_alloc_pages:129.31 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER && ║list_empty(&pool->free_area[i]))
~ ║│ 00009294: 940000e6 bl 962c <list_empty>
║│
║│ __hyp_alloc_pages:129.28 (page_alloc.c) sbepe while (i <= HYP_MAX_ORDER ║&& list_empty(&pool->free_area[i]))
~ ║│ 00009298: 71000009 subs w9, w0, #0x0 <- 00009294(bl-succ)<return>
~ ║│ 0000929c: 1a9f07eb cset w11, ne // ne = any
~ ║│ 000092a0: b90007eb str w11, [sp, #4]
~ ║│ ┌─000092a4: 14000001 b 92a8 <__hyp_alloc_pages+0x64>
║│ │
~ ║└>└>000092a8: b94007e8 ldr w8, [sp, #4] <- 00009278(b.cc)<__hyp_alloc_pages+0x64>,000092a4(b)<__hyp_alloc_pages+0x64>
║ __hyp_alloc_pages:129.2 (page_alloc.c) sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i]))
~ ║ ┌──000092ac: 360000c8 tbz w8, #0, 92c4 <__hyp_alloc_pages+0x80>
║ │
~ ║ │┌─000092b0: 14000001 b 92b4 <__hyp_alloc_pages+0x70> <- 000092ac(b.cc-succ)<fallthrough>
║ ││
║ ││ __hyp_alloc_pages:130.4 (page_alloc.c) Sbepe i║++;
~ ║ │└>000092b4: b85e43a8 ldur w8, [x29, #-28] <- 000092b0(b)<__hyp_alloc_pages+0x70>
~ ║ │ 000092b8: 11000508 add w8, w8, #0x1
~ ║ │ 000092bc: b81e43a8 stur w8, [x29, #-28]
║ │ __hyp_alloc_pages:129.2 (page_alloc.c) Sbepe ║while (i <= HYP_MAX_ORDER && list_empty(&pool->free_area[i]))
~ ╚═╪══000092c0: 17ffffea b 9268 <__hyp_alloc_pages+0x24>
│
│ __hyp_alloc_pages:131.6 (page_alloc.c) Sbepe if (║i > HYP_MAX_ORDER)
~ └─>000092c4: b85e43a8 ldur w8, [x29, #-28] <- 000092ac(b.cc)<__hyp_alloc_pages+0x80>
__hyp_alloc_pages:131.6 (page_alloc.c) sbepe if (║i > HYP_MAX_ORDER)
~ 000092c8: 71003108 subs w8, w8, #0xc
~ ┌──000092cc: 540000a3 b.cc 92e0 <__hyp_alloc_pages+0x9c> // b.lo, b.ul, b.last
│
~ │┌─000092d0: 14000001 b 92d4 <__hyp_alloc_pages+0x90> <- 000092cc(b.cc-succ)<fallthrough>
││
~ │└>000092d4: aa1f03e8 mov x8, xzr <- 000092d0(b)<__hyp_alloc_pages+0x90>
│ __hyp_alloc_pages:132.3 (page_alloc.c) Sbepe ║return NULL;
~ │ 000092d8: f81f83a8 stur x8, [x29, #-8]
~ ┌─┼──000092dc: 1400001c b 934c <__hyp_alloc_pages+0x108>
│ │
│ │ __hyp_alloc_pages:135.6 (page_alloc.c) Sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node);
+__mptr var pointer(no type) 0x92e0 0x9310 (DW_OP_breg31 0x10) lexblock:__hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:135
~ │ └─>000092e0: f85f03a8 ldur x8, [x29, #-16] <- 000092cc(b.cc)<__hyp_alloc_pages+0x9c>
~ │ 000092e4: b85e43a9 ldur w9, [x29, #-28]
~ │ 000092e8: 2a0903ea mov w10, w9
~ │ 000092ec: 8b0a1108 add x8, x8, x10, lsl #4
~ │ 000092f0: f9400508 ldr x8, [x8, #8]
~ │ 000092f4: f9000be8 str x8, [sp, #16]
~ │ ┌─000092f8: 14000001 b 92fc <__hyp_alloc_pages+0xb8>
│ │
│ │ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node);
~ │┌─└>000092fc: 14000001 b 9300 <__hyp_alloc_pages+0xbc> <- 000092f8(b)<__hyp_alloc_pages+0xb8>
││
││ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node);
~ │└──>00009300: f9400be8 ldr x8, [sp, #16] <- 000092fc(b)<__hyp_alloc_pages+0xbc>
~ │ 00009304: f1004108 subs x8, x8, #0x10
│ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node);
~ │ 00009308: f90007e8 str x8, [sp, #8]
│ __hyp_alloc_pages:135.6 (page_alloc.c) sbepe p = ║list_first_entry(&pool->free_area[i], struct hyp_page, node);
~ │ 0000930c: f94007e8 ldr x8, [sp, #8]
-__mptr var pointer(no type) 0x92e0 0x9310 (DW_OP_breg31 0x10) lexblock:__hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:135
│ __hyp_alloc_pages:135.4 (page_alloc.c) sbepe p ║= list_first_entry(&pool->free_area[i], struct hyp_page, node);
~ │ 00009310: f9000fe8 str x8, [sp, #24]
│ __hyp_alloc_pages:136.25 (page_alloc.c) Sbepe p = __hyp_extract_page(║pool, p, order);
~ │ 00009314: f85f03a0 ldur x0, [x29, #-16]
│ __hyp_alloc_pages:136.31 (page_alloc.c) sbepe p = __hyp_extract_page(pool, ║p, order);
~ │ 00009318: f9400fe1 ldr x1, [sp, #24]
│ __hyp_alloc_pages:136.34 (page_alloc.c) sbepe p = __hyp_extract_page(pool, p, ║order);
~ │ 0000931c: b85e83a2 ldur w2, [x29, #-24]
│ __hyp_alloc_pages:136.6 (page_alloc.c) sbepe p = ║__hyp_extract_page(pool, p, order);
~ │ 00009320: 94000138 bl 9800 <__hyp_extract_page>
│
│ __hyp_alloc_pages:136.4 (page_alloc.c) sbepe p ║= __hyp_extract_page(pool, p, order);
~ │ 00009324: f9000fe0 str x0, [sp, #24] <- 00009320(bl-succ)<return>
│ __hyp_alloc_pages:138.6 (page_alloc.c) Sbepe if (║mask & HYP_GFP_ZERO)
~ │ 00009328: 385ec3a9 ldurb w9, [x29, #-20]
~ │┌───0000932c: 360000a9 tbz w9, #0, 9340 <__hyp_alloc_pages+0xfc>
││
~ ││ ┌─00009330: 14000001 b 9334 <__hyp_alloc_pages+0xf0> <- 0000932c(b.cc-succ)<fallthrough>
││ │
││ │ __hyp_alloc_pages:139.18 (page_alloc.c) Sbepe clear_hyp_page(║p);
~ ││ └>00009334: f9400fe0 ldr x0, [sp, #24] <- 00009330(b)<__hyp_alloc_pages+0xf0>
││ __hyp_alloc_pages:139.3 (page_alloc.c) sbepe ║clear_hyp_page(p);
~ ││ 00009338: 94000171 bl 98fc <clear_hyp_page>
││
~ ││ ┌─0000933c: 14000001 b 9340 <__hyp_alloc_pages+0xfc> <- 00009338(bl-succ)<return>
││ │
││ │ __hyp_alloc_pages:141.9 (page_alloc.c) Sbepe return p;
~ │└>└>00009340: f9400fe8 ldr x8, [sp, #24] <- 0000932c(b.cc)<__hyp_alloc_pages+0xfc>,0000933c(b)<__hyp_alloc_pages+0xfc>
│ __hyp_alloc_pages:141.2 (page_alloc.c) sbepe ║return p;
~ │ 00009344: f81f83a8 stur x8, [x29, #-8]
~ │ ┌─00009348: 14000001 b 934c <__hyp_alloc_pages+0x108>
│ │
│ │ __hyp_alloc_pages:142.1 (page_alloc.c) Sbepe ║}
~ └─>└>0000934c: f85f83a0 ldur x0, [x29, #-8] <- 000092dc(b)<__hyp_alloc_pages+0x108>,00009348(b)<__hyp_alloc_pages+0x108>
~ 00009350: a9447bfd ldp x29, x30, [sp, #64]
~ 00009354: 910143ff add sp, sp, #0x50
00009250 CFA:r29+16 r29:c-16 r30:c-8
~ 00009358: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9244 0x935c (DW_OP_fbreg -0x10) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122
-mask param typedef(gfp_t=unsigned int (base type, DW_ATE_unsigned size:4)) 0x9244 0x935c (DW_OP_fbreg -0x14) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:122
-order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:123
-i var unsigned int (base type, DW_ATE_unsigned size:4) 0x9244 0x935c (DW_OP_fbreg -0x1c) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:125
-p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9244 0x935c (DW_OP_breg31 0x18) __hyp_alloc_pages:arch/arm64/kvm/hyp/nvhe/page_alloc.c:126
**0000935c <hyp_pool_init>:
+ hyp_pool_init params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10)
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18)
+nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c)
+used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20)
hyp_pool_init:158.0 (page_alloc.c) Sbepe ║{
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156
+phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156
+nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157
+used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157
+p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x935c 0x9544 (DW_OP_breg31 0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:159
+i var int (base type, DW_ATE_signed size:4) 0x935c 0x9544 (DW_OP_breg31 0x14) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:160
~ 0000935c: d10143ff sub sp, sp, #0x50 <- 00009a78(bl)<hyp_pool_init>,0000b420(bl)<hyp_pool_init>,0000b46c(bl)<hyp_pool_init>
~ 00009360: a9047bfd stp x29, x30, [sp, #64]
0000935c CFA:r31 r29:u r30:u
~ 00009364: 910103fd add x29, sp, #0x40
~ 00009368: f81f03a0 stur x0, [x29, #-16]
~ 0000936c: f81e83a1 stur x1, [x29, #-24]
~ 00009370: b81e43a2 stur w2, [x29, #-28]
~ 00009374: b90023e3 str w3, [sp, #32]
hyp_pool_init:162.6 (page_alloc.c) SbePe if (║phys % PAGE_SIZE)
~ 00009378: 785e83a8 ldurh w8, [x29, #-24]
~ 0000937c: 12002d08 and w8, w8, #0xfff
~ ┌───00009380: 340000a8 cbz w8, 9394 <hyp_pool_init+0x38>
│
~ │ ┌─00009384: 14000001 b 9388 <hyp_pool_init+0x2c> <- 00009380(b.cc-succ)<fallthrough>
│ │
~ │ └>00009388: 128002a8 mov w8, #0xffffffea // #-22 <- 00009384(b)<hyp_pool_init+0x2c>
│ hyp_pool_init:163.3 (page_alloc.c) Sbepe ║return -EINVAL;
~ │ 0000938c: b81fc3a8 stur w8, [x29, #-4]
~ ┌┼───00009390: 14000069 b 9534 <hyp_pool_init+0x1d8>
││
││ hyp_pool_init:165.2 (page_alloc.c) Sbepe ║hyp_spin_lock_init(&pool->lock);
~ │└>┌─00009394: 14000001 b 9398 <hyp_pool_init+0x3c> <- 00009380(b.cc)<hyp_pool_init+0x38>
│ │
│ │ hyp_pool_init:165.2 (page_alloc.c) sbepe ║hyp_spin_lock_init(&pool->lock);
~ │ └>00009398: f85f03a8 ldur x8, [x29, #-16] <- 00009394(b)<hyp_pool_init+0x3c>
~ │ 0000939c: 2a1f03e9 mov w9, wzr
~ │ 000093a0: b90013e9 str w9, [sp, #16]
~ │ 000093a4: b94013e9 ldr w9, [sp, #16]
~ │ 000093a8: b9000109 str w9, [x8]
~ │ ┌─000093ac: 14000001 b 93b0 <hyp_pool_init+0x54>
│ │
~ │ └>000093b0: 2a1f03e8 mov w8, wzr <- 000093ac(b)<hyp_pool_init+0x54>
│ hyp_pool_init:166.9 (page_alloc.c) Sbepe for (i ║= 0; i <= HYP_MAX_ORDER; i++)
~ │ 000093b4: b90017e8 str w8, [sp, #20]
│ hyp_pool_init:166.7 (page_alloc.c) sbepe for (║i = 0; i <= HYP_MAX_ORDER; i++)
~ │ ┌─000093b8: 14000001 b 93bc <hyp_pool_init+0x60>
│ │
│ │ hyp_pool_init:166.14 (page_alloc.c) sbepe for (i = 0; ║i <= HYP_MAX_ORDER; i++)
~ │╔>└>000093bc: b94017e8 ldr w8, [sp, #20] <- 000093b8(b)<hyp_pool_init+0x60>,v000093f0(b)<hyp_pool_init+0x60>
│║ hyp_pool_init:166.2 (page_alloc.c) sbepe ║for (i = 0; i <= HYP_MAX_ORDER; i++)
~ │║ 000093c0: 71002d08 subs w8, w8, #0xb
~ │║┌──000093c4: 54000188 b.hi 93f4 <hyp_pool_init+0x98> // b.pmore
│║│
~ │║│┌─000093c8: 14000001 b 93cc <hyp_pool_init+0x70> <- 000093c4(b.cc-succ)<fallthrough>
│║││
│║││ hyp_pool_init:167.19 (page_alloc.c) Sbepe INIT_LIST_HEAD(&║pool->free_area[i]);
~ │║│└>000093cc: f85f03a8 ldur x8, [x29, #-16] <- 000093c8(b)<hyp_pool_init+0x70>
│║│ hyp_pool_init:167.35 (page_alloc.c) sbepe INIT_LIST_HEAD(&pool->free_area[║i]);
~ │║│ 000093d0: b98017e9 ldrsw x9, [sp, #20]
│║│ hyp_pool_init:167.25 (page_alloc.c) sbepe INIT_LIST_HEAD(&pool->║free_area[i]);
~ │║│ 000093d4: 8b091108 add x8, x8, x9, lsl #4
│║│ hyp_pool_init:167.19 (page_alloc.c) sbepe INIT_LIST_HEAD(&║pool->free_area[i]);
~ │║│ 000093d8: 91002100 add x0, x8, #0x8
│║│ hyp_pool_init:167.3 (page_alloc.c) sbepe ║INIT_LIST_HEAD(&pool->free_area[i]);
~ │║│ 000093dc: 9400005a bl 9544 <INIT_LIST_HEAD>
│║│
~ │║│┌─000093e0: 14000001 b 93e4 <hyp_pool_init+0x88> <- 000093dc(bl-succ)<return>
│║││
│║││ hyp_pool_init:166.35 (page_alloc.c) Sbepe for (i = 0; i <= HYP_MAX_ORDER; i║++)
~ │║│└>000093e4: b94017e8 ldr w8, [sp, #20] <- 000093e0(b)<hyp_pool_init+0x88>
~ │║│ 000093e8: 11000508 add w8, w8, #0x1
~ │║│ 000093ec: b90017e8 str w8, [sp, #20]
│║│ hyp_pool_init:166.2 (page_alloc.c) sbepe ║for (i = 0; i <= HYP_MAX_ORDER; i++)
~ │╚╪══000093f0: 17fffff3 b 93bc <hyp_pool_init+0x60>
│ │
│ │ hyp_pool_init:168.22 (page_alloc.c) Sbepe pool->range_start = ║phys;
~ │ └─>000093f4: f85e83a8 ldur x8, [x29, #-24] <- 000093c4(b.cc)<hyp_pool_init+0x98>
│ hyp_pool_init:168.2 (page_alloc.c) sbepe ║pool->range_start = phys;
~ │ 000093f8: f85f03a9 ldur x9, [x29, #-16]
│ hyp_pool_init:168.20 (page_alloc.c) sbepe pool->range_start ║= phys;
~ │ 000093fc: f9006528 str x8, [x9, #200]
│ hyp_pool_init:169.20 (page_alloc.c) Sbepe pool->range_end = ║phys + (nr_pages << PAGE_SHIFT);
~ │ 00009400: f85e83a8 ldur x8, [x29, #-24]
│ hyp_pool_init:169.28 (page_alloc.c) sbepe pool->range_end = phys + (║nr_pages << PAGE_SHIFT);
~ │ 00009404: b85e43aa ldur w10, [x29, #-28]
│ hyp_pool_init:169.37 (page_alloc.c) sbepe pool->range_end = phys + (nr_pages ║<< PAGE_SHIFT);
~ │ 00009408: 53144d4a lsl w10, w10, #12
│ hyp_pool_init:169.27 (page_alloc.c) sbepe pool->range_end = phys + ║(nr_pages << PAGE_SHIFT);
~ │ 0000940c: 2a0a03e9 mov w9, w10
│ hyp_pool_init:169.25 (page_alloc.c) sbepe pool->range_end = phys ║+ (nr_pages << PAGE_SHIFT);
~ │ 00009410: 8b090108 add x8, x8, x9
│ hyp_pool_init:169.2 (page_alloc.c) sbepe ║pool->range_end = phys + (nr_pages << PAGE_SHIFT);
~ │ 00009414: f85f03a9 ldur x9, [x29, #-16]
│ hyp_pool_init:169.18 (page_alloc.c) sbepe pool->range_end ║= phys + (nr_pages << PAGE_SHIFT);
~ │ 00009418: f9006928 str x8, [x9, #208]
│ hyp_pool_init:172.6 (page_alloc.c) Sbepe p = ║hyp_phys_to_page(phys);
~ │ 0000941c: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0>
~ │ 00009420: f944c508 ldr x8, [x8, #2440]
~ │ 00009424: f85e83a9 ldur x9, [x29, #-24]
~ │ 00009428: d347fd29 lsr x9, x9, #7
~ │ 0000942c: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ │ 00009430: 8b090108 add x8, x8, x9
│ hyp_pool_init:172.4 (page_alloc.c) sbepe p ║= hyp_phys_to_page(phys);
~ │ 00009434: f9000fe8 str x8, [sp, #24]
│ hyp_pool_init:173.9 (page_alloc.c) Sbepe memset(║p, 0, sizeof(*p) * nr_pages);
~ │ 00009438: f9400fe0 ldr x0, [sp, #24]
│ hyp_pool_init:173.28 (page_alloc.c) sbepe memset(p, 0, sizeof(*p) * ║nr_pages);
~ │ 0000943c: b85e43aa ldur w10, [x29, #-28]
~ │ 00009440: 2a0a03e8 mov w8, w10
│ hyp_pool_init:173.26 (page_alloc.c) sbepe memset(p, 0, sizeof(*p) ║* nr_pages);
~ │ 00009444: d37be902 lsl x2, x8, #5
~ │ 00009448: 2a1f03ea mov w10, wzr
│ hyp_pool_init:173.2 (page_alloc.c) sbepe ║memset(p, 0, sizeof(*p) * nr_pages);
~ │ 0000944c: 2a0a03e1 mov w1, w10
~ │ 00009450: b9000fea str w10, [sp, #12]
~ │ 00009454: 9400336b bl 16200 <__memset>
│
~ │ 00009458: b9400fea ldr w10, [sp, #12] <- 00009454(bl-succ)<return>
│ hyp_pool_init:174.9 (page_alloc.c) Sbepe for (i ║= 0; i < nr_pages; i++, p++) {
~ │ 0000945c: b90017ea str w10, [sp, #20]
│ hyp_pool_init:174.7 (page_alloc.c) sbepe for (║i = 0; i < nr_pages; i++, p++) {
~ │ ┌─00009460: 14000001 b 9464 <hyp_pool_init+0x108>
│ │
│ │ hyp_pool_init:174.14 (page_alloc.c) sbepe for (i = 0; ║i < nr_pages; i++, p++) {
~ │╔>└>00009464: b94017e8 ldr w8, [sp, #20] <- 00009460(b)<hyp_pool_init+0x108>,v000094ac(b)<hyp_pool_init+0x108>
│║ hyp_pool_init:174.18 (page_alloc.c) sbepe for (i = 0; i < ║nr_pages; i++, p++) {
~ │║ 00009468: b85e43a9 ldur w9, [x29, #-28]
│║ hyp_pool_init:174.2 (page_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++, p++) {
~ │║ 0000946c: 6b090108 subs w8, w8, w9
~ │║┌──00009470: 54000202 b.cs 94b0 <hyp_pool_init+0x154> // b.hs, b.nlast
│║│
~ │║│┌─00009474: 14000001 b 9478 <hyp_pool_init+0x11c> <- 00009470(b.cc-succ)<fallthrough>
│║││
│║││ hyp_pool_init:175.13 (page_alloc.c) Sbepe p->pool = ║pool;
~ │║│└>00009478: f85f03a8 ldur x8, [x29, #-16] <- 00009474(b)<hyp_pool_init+0x11c>
│║│ hyp_pool_init:175.3 (page_alloc.c) sbepe ║p->pool = pool;
~ │║│ 0000947c: f9400fe9 ldr x9, [sp, #24]
│║│ hyp_pool_init:175.11 (page_alloc.c) sbepe p->pool ║= pool;
~ │║│ 00009480: f9000528 str x8, [x9, #8]
│║│ hyp_pool_init:176.19 (page_alloc.c) Sbepe INIT_LIST_HEAD(&║p->node);
~ │║│ 00009484: f9400fe8 ldr x8, [sp, #24]
│║│ hyp_pool_init:176.22 (page_alloc.c) sbepe INIT_LIST_HEAD(&p->║node);
~ │║│ 00009488: 91004100 add x0, x8, #0x10
│║│ hyp_pool_init:176.3 (page_alloc.c) sbepe ║INIT_LIST_HEAD(&p->node);
~ │║│ 0000948c: 9400002e bl 9544 <INIT_LIST_HEAD>
│║│
│║│ hyp_pool_init:177.2 (page_alloc.c) Sbepe }
~ │║│┌─00009490: 14000001 b 9494 <hyp_pool_init+0x138> <- 0000948c(bl-succ)<return>
│║││
│║││ hyp_pool_init:174.29 (page_alloc.c) Sbepe for (i = 0; i < nr_pages; i║++, p++) {
~ │║│└>00009494: b94017e8 ldr w8, [sp, #20] <- 00009490(b)<hyp_pool_init+0x138>
~ │║│ 00009498: 11000508 add w8, w8, #0x1
~ │║│ 0000949c: b90017e8 str w8, [sp, #20]
│║│ hyp_pool_init:174.34 (page_alloc.c) sbepe for (i = 0; i < nr_pages; i++, p║++) {
~ │║│ 000094a0: f9400fe9 ldr x9, [sp, #24]
~ │║│ 000094a4: 91008129 add x9, x9, #0x20
~ │║│ 000094a8: f9000fe9 str x9, [sp, #24]
│║│ hyp_pool_init:174.2 (page_alloc.c) sbepe ║for (i = 0; i < nr_pages; i++, p++) {
~ │╚╪══000094ac: 17ffffee b 9464 <hyp_pool_init+0x108>
│ │
│ │ hyp_pool_init:180.6 (page_alloc.c) Sbepe p = ║hyp_phys_to_page(phys + (used_pages << PAGE_SHIFT));
~ │ └─>000094b0: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> <- 00009470(b.cc)<hyp_pool_init+0x154>
~ │ 000094b4: f944c508 ldr x8, [x8, #2440]
~ │ 000094b8: f85e83a9 ldur x9, [x29, #-24]
~ │ 000094bc: b94023ea ldr w10, [sp, #32]
~ │ 000094c0: 53144d4a lsl w10, w10, #12
~ │ 000094c4: 2a0a03eb mov w11, w10
~ │ 000094c8: 8b0b0129 add x9, x9, x11
~ │ 000094cc: d347fd29 lsr x9, x9, #7
~ │ 000094d0: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ │ 000094d4: 8b090108 add x8, x8, x9
│ hyp_pool_init:180.4 (page_alloc.c) sbepe p ║= hyp_phys_to_page(phys + (used_pages << PAGE_SHIFT));
~ │ 000094d8: f9000fe8 str x8, [sp, #24]
│ hyp_pool_init:181.11 (page_alloc.c) Sbepe for (i = ║used_pages; i < nr_pages; i++, p++)
~ │ 000094dc: b94023ea ldr w10, [sp, #32]
│ hyp_pool_init:181.9 (page_alloc.c) sbepe for (i ║= used_pages; i < nr_pages; i++, p++)
~ │ 000094e0: b90017ea str w10, [sp, #20]
│ hyp_pool_init:181.7 (page_alloc.c) sbepe for (║i = used_pages; i < nr_pages; i++, p++)
~ │ ┌─000094e4: 14000001 b 94e8 <hyp_pool_init+0x18c>
│ │
│ │ hyp_pool_init:181.23 (page_alloc.c) sbepe for (i = used_pages; ║i < nr_pages; i++, p++)
~ │╔>└>000094e8: b94017e8 ldr w8, [sp, #20] <- 000094e4(b)<hyp_pool_init+0x18c>,v00009524(b)<hyp_pool_init+0x18c>
│║ hyp_pool_init:181.27 (page_alloc.c) sbepe for (i = used_pages; i < ║nr_pages; i++, p++)
~ │║ 000094ec: b85e43a9 ldur w9, [x29, #-28]
│║ hyp_pool_init:181.2 (page_alloc.c) sbepe ║for (i = used_pages; i < nr_pages; i++, p++)
~ │║ 000094f0: 6b090108 subs w8, w8, w9
~ │║┌──000094f4: 540001a2 b.cs 9528 <hyp_pool_init+0x1cc> // b.hs, b.nlast
│║│
~ │║│┌─000094f8: 14000001 b 94fc <hyp_pool_init+0x1a0> <- 000094f4(b.cc-succ)<fallthrough>
│║││
│║││ hyp_pool_init:182.21 (page_alloc.c) Sbepe __hyp_attach_page(║pool, p);
~ │║│└>000094fc: f85f03a0 ldur x0, [x29, #-16] <- 000094f8(b)<hyp_pool_init+0x1a0>
│║│ hyp_pool_init:182.27 (page_alloc.c) sbepe __hyp_attach_page(pool, ║p);
~ │║│ 00009500: f9400fe1 ldr x1, [sp, #24]
│║│ hyp_pool_init:182.3 (page_alloc.c) sbepe ║__hyp_attach_page(pool, p);
~ │║│ 00009504: 97fffebe bl 8ffc <__hyp_attach_page>
│║│
~ │║│┌─00009508: 14000001 b 950c <hyp_pool_init+0x1b0> <- 00009504(bl-succ)<return>
│║││
│║││ hyp_pool_init:181.38 (page_alloc.c) Sbepe for (i = used_pages; i < nr_pages; i║++, p++)
~ │║│└>0000950c: b94017e8 ldr w8, [sp, #20] <- 00009508(b)<hyp_pool_init+0x1b0>
~ │║│ 00009510: 11000508 add w8, w8, #0x1
~ │║│ 00009514: b90017e8 str w8, [sp, #20]
│║│ hyp_pool_init:181.43 (page_alloc.c) sbepe for (i = used_pages; i < nr_pages; i++, p║++)
~ │║│ 00009518: f9400fe9 ldr x9, [sp, #24]
~ │║│ 0000951c: 91008129 add x9, x9, #0x20
~ │║│ 00009520: f9000fe9 str x9, [sp, #24]
│║│ hyp_pool_init:181.2 (page_alloc.c) sbepe ║for (i = used_pages; i < nr_pages; i++, p++)
~ │╚╪══00009524: 17fffff1 b 94e8 <hyp_pool_init+0x18c>
│ │
~ │ └─>00009528: 2a1f03e8 mov w8, wzr <- 000094f4(b.cc)<hyp_pool_init+0x1cc>
│ hyp_pool_init:184.2 (page_alloc.c) Sbepe ║return 0;
~ │ 0000952c: b81fc3a8 stur w8, [x29, #-4]
~ │ ┌─00009530: 14000001 b 9534 <hyp_pool_init+0x1d8>
│ │
│ │ hyp_pool_init:185.1 (page_alloc.c) Sbepe ║}
~ └─>└>00009534: b85fc3a0 ldur w0, [x29, #-4] <- 00009390(b)<hyp_pool_init+0x1d8>,00009530(b)<hyp_pool_init+0x1d8>
~ 00009538: a9447bfd ldp x29, x30, [sp, #64]
~ 0000953c: 910143ff add sp, sp, #0x50
00009368 CFA:r29+16 r29:c-16 r30:c-8
~ 00009540: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x935c 0x9544 (DW_OP_fbreg -0x10) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156
-phys param typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x935c 0x9544 (DW_OP_fbreg -0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:156
-nr_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_fbreg -0x1c) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157
-used_pages param unsigned int (base type, DW_ATE_unsigned size:4) 0x935c 0x9544 (DW_OP_breg31 0x20) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:157
-p var pointer(struct hyp_page<6b8fc>/<6b979>) 0x935c 0x9544 (DW_OP_breg31 0x18) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:159
-i var int (base type, DW_ATE_signed size:4) 0x935c 0x9544 (DW_OP_breg31 0x14) hyp_pool_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:160
**00009544 <INIT_LIST_HEAD>:
+ INIT_LIST_HEAD params:
+list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8)
INIT_LIST_HEAD:34.0 (list.h) Sbepe ║{
00009544 CFA:r31
+list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8) INIT_LIST_HEAD:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33
~ 00009544: d10043ff sub sp, sp, #0x10 <- 000093dc(bl)<INIT_LIST_HEAD>,0000948c(bl)<INIT_LIST_HEAD>,0000967c(bl)<INIT_LIST_HEAD>
~ 00009548: f90007e0 str x0, [sp, #8]
INIT_LIST_HEAD:35.2 (list.h) SbePe ║WRITE_ONCE(list->next, list);
~ ┌─0000954c: 14000001 b 9550 <INIT_LIST_HEAD+0xc>
│
│ INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list);
~ ┌─└>00009550: 14000001 b 9554 <INIT_LIST_HEAD+0x10> <- 0000954c(b)<INIT_LIST_HEAD+0xc>
│
│ INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list);
~ ┌─└──>00009554: 14000001 b 9558 <INIT_LIST_HEAD+0x14> <- 00009550(b)<INIT_LIST_HEAD+0x10>
│
│ INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list);
~ ┌─└────>00009558: 14000001 b 955c <INIT_LIST_HEAD+0x18> <- 00009554(b)<INIT_LIST_HEAD+0x14>
│
│ INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list);
~ └──────>0000955c: f94007e8 ldr x8, [sp, #8] <- 00009558(b)<INIT_LIST_HEAD+0x18>
~ 00009560: f9000108 str x8, [x8]
~ ┌─00009564: 14000001 b 9568 <INIT_LIST_HEAD+0x24>
│
│ INIT_LIST_HEAD:35.2 (list.h) sbepe ║WRITE_ONCE(list->next, list);
~ ┌─└>00009568: 14000001 b 956c <INIT_LIST_HEAD+0x28> <- 00009564(b)<INIT_LIST_HEAD+0x24>
│
│ INIT_LIST_HEAD:36.15 (list.h) Sbepe list->prev = ║list;
~ └──>0000956c: f94007e8 ldr x8, [sp, #8] <- 00009568(b)<INIT_LIST_HEAD+0x28>
INIT_LIST_HEAD:36.13 (list.h) sbepe list->prev ║= list;
~ 00009570: f9000508 str x8, [x8, #8]
INIT_LIST_HEAD:37.1 (list.h) Sbepe ║}
~ 00009574: 910043ff add sp, sp, #0x10
00009548 CFA:r31+16
~ 00009578: d65f03c0 ret
-list param pointer(struct list_head<6b8fc>/<6ba74>) 0x9544 0x957c (DW_OP_fbreg 0x8) INIT_LIST_HEAD:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33
**0000957c <__find_buddy>:
+ __find_buddy params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20)
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18)
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14)
__find_buddy:32.0 (page_alloc.c) Sbepe ║{
0000957c CFA:r31
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:31
+addr var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x957c 0x962c (DW_OP_fbreg 0x8) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33
~ 0000957c: d100c3ff sub sp, sp, #0x30 <- 00009048(bl)<__find_buddy>,00009898(bl)<__find_buddy>
~ 00009580: f90013e0 str x0, [sp, #32]
~ 00009584: f9000fe1 str x1, [sp, #24]
~ 00009588: b90017e2 str w2, [sp, #20]
__find_buddy:33.21 (page_alloc.c) SbePe phys_addr_t addr = ║hyp_page_to_phys(p);
~ 0000958c: f9400fe8 ldr x8, [sp, #24]
~ 00009590: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ 00009594: f944c529 ldr x9, [x9, #2440]
~ 00009598: eb090108 subs x8, x8, x9
~ 0000959c: d379e108 lsl x8, x8, #7
__find_buddy:33.14 (page_alloc.c) sbepe phys_addr_t ║addr = hyp_page_to_phys(p);
~ 000095a0: f90007e8 str x8, [sp, #8]
__find_buddy:35.24 (page_alloc.c) Sbepe addr ^= (PAGE_SIZE << ║order);
~ 000095a4: b94017ea ldr w10, [sp, #20]
~ 000095a8: 2a0a03e8 mov w8, w10
~ 000095ac: 5282000a mov w10, #0x1000 // #4096
~ 000095b0: 2a0a03e9 mov w9, w10
__find_buddy:35.21 (page_alloc.c) sbepe addr ^= (PAGE_SIZE ║<< order);
~ 000095b4: 9ac82128 lsl x8, x9, x8
__find_buddy:35.7 (page_alloc.c) sbepe addr ║^= (PAGE_SIZE << order);
~ 000095b8: f94007e9 ldr x9, [sp, #8]
~ 000095bc: ca080128 eor x8, x9, x8
~ 000095c0: f90007e8 str x8, [sp, #8]
__find_buddy:36.6 (page_alloc.c) Sbepe if (║addr < pool->range_start || addr >= pool->range_end)
~ 000095c4: f94007e8 ldr x8, [sp, #8]
__find_buddy:36.13 (page_alloc.c) sbepe if (addr < ║pool->range_start || addr >= pool->range_end)
~ 000095c8: f94013e9 ldr x9, [sp, #32]
__find_buddy:36.19 (page_alloc.c) sbepe if (addr < pool->║range_start || addr >= pool->range_end)
~ 000095cc: f9406529 ldr x9, [x9, #200]
__find_buddy:36.31 (page_alloc.c) sbepe if (addr < pool->range_start ║|| addr >= pool->range_end)
~ 000095d0: eb090108 subs x8, x8, x9
~ ┌────000095d4: 54000103 b.cc 95f4 <__find_buddy+0x78> // b.lo, b.ul, b.last
│
~ │ ┌─000095d8: 14000001 b 95dc <__find_buddy+0x60> <- 000095d4(b.cc-succ)<fallthrough>
│ │
│ │ __find_buddy:36.34 (page_alloc.c) sbepe if (addr < pool->range_start || ║addr >= pool->range_end)
~ │ └>000095dc: f94007e8 ldr x8, [sp, #8] <- 000095d8(b)<__find_buddy+0x60>
│ __find_buddy:36.42 (page_alloc.c) sbepe if (addr < pool->range_start || addr >= ║pool->range_end)
~ │ 000095e0: f94013e9 ldr x9, [sp, #32]
│ __find_buddy:36.48 (page_alloc.c) sbepe if (addr < pool->range_start || addr >= pool->║range_end)
~ │ 000095e4: f9406929 ldr x9, [x9, #208]
│ __find_buddy:36.6 (page_alloc.c) sbepe if (║addr < pool->range_start || addr >= pool->range_end)
~ │ 000095e8: eb090108 subs x8, x8, x9
~ │ ┌──000095ec: 540000a3 b.cc 9600 <__find_buddy+0x84> // b.lo, b.ul, b.last
│ │
~ │ │┌─000095f0: 14000001 b 95f4 <__find_buddy+0x78> <- 000095ec(b.cc-succ)<fallthrough>
│ ││
~ └>│└>000095f4: aa1f03e8 mov x8, xzr <- 000095d4(b.cc)<__find_buddy+0x78>,000095f0(b)<__find_buddy+0x78>
│ __find_buddy:37.3 (page_alloc.c) Sbepe ║return NULL;
~ │ 000095f8: f90017e8 str x8, [sp, #40]
~ ┌┼──000095fc: 14000009 b 9620 <__find_buddy+0xa4>
││
││ __find_buddy:39.9 (page_alloc.c) Sbepe return ║hyp_phys_to_page(addr);
~ │└─>00009600: b0000088 adrp x8, 1a000 <hyp_cpu_logical_map+0xe0> <- 000095ec(b.cc)<__find_buddy+0x84>
~ │ 00009604: f944c508 ldr x8, [x8, #2440]
~ │ 00009608: f94007e9 ldr x9, [sp, #8]
~ │ 0000960c: d347fd29 lsr x9, x9, #7
~ │ 00009610: 927bcd29 and x9, x9, #0x1ffffffffffffe0
~ │ 00009614: 8b090108 add x8, x8, x9
│ __find_buddy:39.2 (page_alloc.c) sbepe ║return hyp_phys_to_page(addr);
~ │ 00009618: f90017e8 str x8, [sp, #40]
~ │ ┌─0000961c: 14000001 b 9620 <__find_buddy+0xa4>
│ │
│ │ __find_buddy:40.1 (page_alloc.c) Sbepe ║}
~ └>└>00009620: f94017e0 ldr x0, [sp, #40] <- 000095fc(b)<__find_buddy+0xa4>,0000961c(b)<__find_buddy+0xa4>
~ 00009624: 9100c3ff add sp, sp, #0x30
00009580 CFA:r31+48
~ 00009628: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x957c 0x962c (DW_OP_fbreg 0x20) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30
-p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x957c 0x962c (DW_OP_fbreg 0x18) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:30
-order param unsigned int (base type, DW_ATE_unsigned size:4) 0x957c 0x962c (DW_OP_fbreg 0x14) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:31
-addr var typedef(phys_addr_t=typedef(u64=typedef(__u64=long long unsigned int (base type, DW_ATE_unsigned size:8)))) 0x957c 0x962c (DW_OP_fbreg 0x8) __find_buddy:arch/arm64/kvm/hyp/nvhe/page_alloc.c:33
**0000962c <list_empty>:
+ list_empty params:
+head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8)
list_empty:281.0 (list.h) Sbepe ║{
0000962c CFA:r31
+head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8) list_empty:arch/arm64/kvm/hyp/nvhe/page_alloc.c:280
~ 0000962c: d10043ff sub sp, sp, #0x10 <- 00009064(bl)<list_empty>,00009294(bl)<list_empty>
~ 00009630: f90007e0 str x0, [sp, #8]
list_empty:282.9 (list.h) SbePe return ║READ_ONCE(head->next) == head;
~ ┌─00009634: 14000001 b 9638 <list_empty+0xc>
│
│ list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head;
~ ┌─└>00009638: 14000001 b 963c <list_empty+0x10> <- 00009634(b)<list_empty+0xc>
│
│ list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head;
~ └──>0000963c: f94007e8 ldr x8, [sp, #8] <- 00009638(b)<list_empty+0x10>
~ 00009640: f9400108 ldr x8, [x8]
list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head;
~ 00009644: f90003e8 str x8, [sp]
list_empty:282.9 (list.h) sbepe return ║READ_ONCE(head->next) == head;
~ 00009648: f94003e8 ldr x8, [sp]
list_empty:282.34 (list.h) sbepe return READ_ONCE(head->next) == ║head;
~ 0000964c: f94007e9 ldr x9, [sp, #8]
list_empty:282.31 (list.h) sbepe return READ_ONCE(head->next) ║== head;
~ 00009650: eb090108 subs x8, x8, x9
~ 00009654: 1a9f17e0 cset w0, eq // eq = none
list_empty:282.2 (list.h) sbepe ║return READ_ONCE(head->next) == head;
~ 00009658: 910043ff add sp, sp, #0x10
00009630 CFA:r31+16
~ 0000965c: d65f03c0 ret
-head param pointer(const(struct list_head<6b8fc>/<6ba74>)) 0x962c 0x9660 (DW_OP_fbreg 0x8) list_empty:arch/arm64/kvm/hyp/nvhe/page_alloc.c:280
**00009660 <list_del_init>:
+ list_del_init params:
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8)
list_del_init:203.0 (list.h) Sbepe ║{
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8) list_del_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:202
~ 00009660: d10083ff sub sp, sp, #0x20 <- 00009094(bl)<list_del_init>,00009858(bl)<list_del_init>
~ 00009664: a9017bfd stp x29, x30, [sp, #16]
00009660 CFA:r31 r29:u r30:u
~ 00009668: 910043fd add x29, sp, #0x10
~ 0000966c: f90007e0 str x0, [sp, #8]
list_del_init:204.19 (list.h) SbePe __list_del_entry(║entry);
~ 00009670: f94007e0 ldr x0, [sp, #8]
list_del_init:204.2 (list.h) sbepe ║__list_del_entry(entry);
~ 00009674: 94000013 bl 96c0 <__list_del_entry>
list_del_init:205.17 (list.h) Sbepe INIT_LIST_HEAD(║entry);
~ 00009678: f94007e0 ldr x0, [sp, #8] <- 00009674(bl-succ)<return>
list_del_init:205.2 (list.h) sbepe ║INIT_LIST_HEAD(entry);
~ 0000967c: 97ffffb2 bl 9544 <INIT_LIST_HEAD>
list_del_init:206.1 (list.h) Sbepe ║}
~ 00009680: a9417bfd ldp x29, x30, [sp, #16] <- 0000967c(bl-succ)<return>
~ 00009684: 910083ff add sp, sp, #0x20
0000966c CFA:r29+16 r29:c-16 r30:c-8
~ 00009688: d65f03c0 ret
-entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9660 0x968c (DW_OP_breg31 0x8) list_del_init:arch/arm64/kvm/hyp/nvhe/page_alloc.c:202
**0000968c <list_add_tail>:
+ list_add_tail params:
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8)
+head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0)
list_add_tail:99.0 (list.h) Sbepe ║{
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98
+head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98
~ 0000968c: d10083ff sub sp, sp, #0x20 <- 00009114(bl)<list_add_tail>,000098cc(bl)<list_add_tail>
~ 00009690: a9017bfd stp x29, x30, [sp, #16]
0000968c CFA:r31 r29:u r30:u
~ 00009694: 910043fd add x29, sp, #0x10
~ 00009698: f90007e0 str x0, [sp, #8]
~ 0000969c: f90003e1 str x1, [sp]
list_add_tail:100.13 (list.h) SbePe __list_add(║new, head->prev, head);
~ 000096a0: f94007e0 ldr x0, [sp, #8]
list_add_tail:100.18 (list.h) sbepe __list_add(new, ║head->prev, head);
~ 000096a4: f94003e8 ldr x8, [sp]
list_add_tail:100.24 (list.h) sbepe __list_add(new, head->║prev, head);
~ 000096a8: f9400501 ldr x1, [x8, #8]
list_add_tail:100.2 (list.h) sbepe ║__list_add(new, head->prev, head);
~ 000096ac: aa0803e2 mov x2, x8
~ 000096b0: 9400002b bl 975c <__list_add>
list_add_tail:101.1 (list.h) Sbepe ║}
~ 000096b4: a9417bfd ldp x29, x30, [sp, #16] <- 000096b0(bl-succ)<return>
~ 000096b8: 910083ff add sp, sp, #0x20
00009698 CFA:r29+16 r29:c-16 r30:c-8
~ 000096bc: d65f03c0 ret
-new param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x8) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98
-head param pointer(struct list_head<6b8fc>/<6ba74>) 0x968c 0x96c0 (DW_OP_breg31 0x0) list_add_tail:arch/arm64/kvm/hyp/nvhe/page_alloc.c:98
**000096c0 <__list_del_entry>:
+ __list_del_entry params:
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8)
__list_del_entry:131.0 (list.h) Sbepe ║{
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8) __list_del_entry:arch/arm64/kvm/hyp/nvhe/page_alloc.c:130
~ 000096c0: d10083ff sub sp, sp, #0x20 <- 00009674(bl)<__list_del_entry>
~ 000096c4: a9017bfd stp x29, x30, [sp, #16]
000096c0 CFA:r31 r29:u r30:u
~ 000096c8: 910043fd add x29, sp, #0x10
~ 000096cc: f90007e0 str x0, [sp, #8]
__list_del_entry:132.30 (list.h) SbePe if (!__list_del_entry_valid(║entry))
~ 000096d0: f94007e0 ldr x0, [sp, #8]
__list_del_entry:132.7 (list.h) sbepe if (!║__list_del_entry_valid(entry))
~ 000096d4: 9400000c bl 9704 <__list_del_entry_valid>
__list_del_entry:132.6 (list.h) sbepe if (║!__list_del_entry_valid(entry))
~ ┌──000096d8: 37000060 tbnz w0, #0, 96e4 <__list_del_entry+0x24> <- 000096d4(bl-succ)<return>
│
~ │┌─000096dc: 14000001 b 96e0 <__list_del_entry+0x20> <- 000096d8(b.cc-succ)<fallthrough>
││
││ __list_del_entry:133.3 (list.h) Sbepe ║return;
~ ┌┼└>000096e0: 14000006 b 96f8 <__list_del_entry+0x38> <- 000096dc(b)<__list_del_entry+0x20>
││
││ __list_del_entry:135.13 (list.h) Sbepe __list_del(║entry->prev, entry->next);
~ │└─>000096e4: f94007e8 ldr x8, [sp, #8] <- 000096d8(b.cc)<__list_del_entry+0x24>
│ __list_del_entry:135.20 (list.h) sbepe __list_del(entry->║prev, entry->next);
~ │ 000096e8: f9400500 ldr x0, [x8, #8]
│ __list_del_entry:135.33 (list.h) sbepe __list_del(entry->prev, entry->║next);
~ │ 000096ec: f9400101 ldr x1, [x8]
│ __list_del_entry:135.2 (list.h) sbepe ║__list_del(entry->prev, entry->next);
~ │ 000096f0: 9400000a bl 9718 <__list_del>
│
│ __list_del_entry:136.1 (list.h) Sbepe ║}
~ │ ┌─000096f4: 14000001 b 96f8 <__list_del_entry+0x38> <- 000096f0(bl-succ)<return>
│ │
~ └>└>000096f8: a9417bfd ldp x29, x30, [sp, #16] <- 000096e0(b)<__list_del_entry+0x38>,000096f4(b)<__list_del_entry+0x38>
~ 000096fc: 910083ff add sp, sp, #0x20
000096cc CFA:r29+16 r29:c-16 r30:c-8
~ 00009700: d65f03c0 ret
-entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x96c0 0x9704 (DW_OP_breg31 0x8) __list_del_entry:arch/arm64/kvm/hyp/nvhe/page_alloc.c:130
**00009704 <__list_del_entry_valid>:
+ __list_del_entry_valid params:
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8)
__list_del_entry_valid:52.0 (list.h) Sbepe ║{
00009704 CFA:r31
+entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8) __list_del_entry_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:51
~ 00009704: d10043ff sub sp, sp, #0x10 <- 000096d4(bl)<__list_del_entry_valid>
~ 00009708: f90007e0 str x0, [sp, #8]
~ 0000970c: 52800020 mov w0, #0x1 // #1
__list_del_entry_valid:53.2 (list.h) SbePe ║return true;
~ 00009710: 910043ff add sp, sp, #0x10
00009708 CFA:r31+16
~ 00009714: d65f03c0 ret
-entry param pointer(struct list_head<6b8fc>/<6ba74>) 0x9704 0x9718 (DW_OP_fbreg 0x8) __list_del_entry_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:51
**00009718 <__list_del>:
+ __list_del params:
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8)
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0)
__list_del:111.0 (list.h) Sbepe ║{
00009718 CFA:r31
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110
~ 00009718: d10043ff sub sp, sp, #0x10 <- 000096f0(bl)<__list_del>
~ 0000971c: f90007e0 str x0, [sp, #8]
~ 00009720: f90003e1 str x1, [sp]
__list_del:112.15 (list.h) SbePe next->prev = ║prev;
~ 00009724: f94007e8 ldr x8, [sp, #8]
__list_del:112.2 (list.h) sbepe ║next->prev = prev;
~ 00009728: f94003e9 ldr x9, [sp]
__list_del:112.13 (list.h) sbepe next->prev ║= prev;
~ 0000972c: f9000528 str x8, [x9, #8]
__list_del:113.2 (list.h) Sbepe ║WRITE_ONCE(prev->next, next);
~ ┌─00009730: 14000001 b 9734 <__list_del+0x1c>
│
│ __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next);
~ ┌─└>00009734: 14000001 b 9738 <__list_del+0x20> <- 00009730(b)<__list_del+0x1c>
│
│ __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next);
~ ┌─└──>00009738: 14000001 b 973c <__list_del+0x24> <- 00009734(b)<__list_del+0x20>
│
│ __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next);
~ ┌─└────>0000973c: 14000001 b 9740 <__list_del+0x28> <- 00009738(b)<__list_del+0x24>
│
│ __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next);
~ └──────>00009740: f94003e8 ldr x8, [sp] <- 0000973c(b)<__list_del+0x28>
~ 00009744: f94007e9 ldr x9, [sp, #8]
~ 00009748: f9000128 str x8, [x9]
~ ┌─0000974c: 14000001 b 9750 <__list_del+0x38>
│
│ __list_del:113.2 (list.h) sbepe ║WRITE_ONCE(prev->next, next);
~ ┌─└>00009750: 14000001 b 9754 <__list_del+0x3c> <- 0000974c(b)<__list_del+0x38>
│
│ __list_del:114.1 (list.h) Sbepe ║}
~ └──>00009754: 910043ff add sp, sp, #0x10 <- 00009750(b)<__list_del+0x3c>
0000971c CFA:r31+16
~ 00009758: d65f03c0 ret
-prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x8) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110
-next param pointer(struct list_head<6b8fc>/<6ba74>) 0x9718 0x975c (DW_OP_fbreg 0x0) __list_del:arch/arm64/kvm/hyp/nvhe/page_alloc.c:110
**0000975c <__list_add>:
+ __list_add params:
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8)
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10)
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8)
__list_add:66.0 (list.h) Sbepe ║{
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:63
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:64
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65
~ 0000975c: d100c3ff sub sp, sp, #0x30 <- 000096b0(bl)<__list_add>
~ 00009760: a9027bfd stp x29, x30, [sp, #32]
0000975c CFA:r31 r29:u r30:u
~ 00009764: 910083fd add x29, sp, #0x20
~ 00009768: f81f83a0 stur x0, [x29, #-8]
~ 0000976c: f9000be1 str x1, [sp, #16]
~ 00009770: f90007e2 str x2, [sp, #8]
__list_add:67.24 (list.h) SbePe if (!__list_add_valid(║new, prev, next))
~ 00009774: f85f83a0 ldur x0, [x29, #-8]
__list_add:67.29 (list.h) sbepe if (!__list_add_valid(new, ║prev, next))
~ 00009778: f9400be1 ldr x1, [sp, #16]
__list_add:67.35 (list.h) sbepe if (!__list_add_valid(new, prev, ║next))
~ 0000977c: f94007e2 ldr x2, [sp, #8]
__list_add:67.7 (list.h) sbepe if (!║__list_add_valid(new, prev, next))
~ 00009780: 94000019 bl 97e4 <__list_add_valid>
__list_add:67.6 (list.h) sbepe if (║!__list_add_valid(new, prev, next))
~ ┌──00009784: 37000060 tbnz w0, #0, 9790 <__list_add+0x34> <- 00009780(bl-succ)<return>
│
~ │┌─00009788: 14000001 b 978c <__list_add+0x30> <- 00009784(b.cc-succ)<fallthrough>
││
││ __list_add:68.3 (list.h) Sbepe ║return;
~ ┌───┼└>0000978c: 14000013 b 97d8 <__list_add+0x7c> <- 00009788(b)<__list_add+0x30>
│ │
│ │ __list_add:70.15 (list.h) Sbepe next->prev = ║new;
~ │ └─>00009790: f85f83a8 ldur x8, [x29, #-8] <- 00009784(b.cc)<__list_add+0x34>
│ __list_add:70.2 (list.h) sbepe ║next->prev = new;
~ │ 00009794: f94007e9 ldr x9, [sp, #8]
│ __list_add:70.13 (list.h) sbepe next->prev ║= new;
~ │ 00009798: f9000528 str x8, [x9, #8]
│ __list_add:71.14 (list.h) Sbepe new->next = ║next;
~ │ 0000979c: f94007e8 ldr x8, [sp, #8]
│ __list_add:71.2 (list.h) sbepe ║new->next = next;
~ │ 000097a0: f85f83a9 ldur x9, [x29, #-8]
│ __list_add:71.12 (list.h) sbepe new->next ║= next;
~ │ 000097a4: f9000128 str x8, [x9]
│ __list_add:72.14 (list.h) Sbepe new->prev = ║prev;
~ │ 000097a8: f9400be8 ldr x8, [sp, #16]
│ __list_add:72.2 (list.h) sbepe ║new->prev = prev;
~ │ 000097ac: f85f83a9 ldur x9, [x29, #-8]
│ __list_add:72.12 (list.h) sbepe new->prev ║= prev;
~ │ 000097b0: f9000528 str x8, [x9, #8]
│ __list_add:73.2 (list.h) Sbepe ║WRITE_ONCE(prev->next, new);
~ │ ┌─000097b4: 14000001 b 97b8 <__list_add+0x5c>
│ │
│ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new);
~ │ ┌─└>000097b8: 14000001 b 97bc <__list_add+0x60> <- 000097b4(b)<__list_add+0x5c>
│ │
│ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new);
~ │┌─└──>000097bc: 14000001 b 97c0 <__list_add+0x64> <- 000097b8(b)<__list_add+0x60>
││
││ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new);
~ ┌┼└────>000097c0: 14000001 b 97c4 <__list_add+0x68> <- 000097bc(b)<__list_add+0x64>
││
││ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new);
~ └┼─────>000097c4: f85f83a8 ldur x8, [x29, #-8] <- 000097c0(b)<__list_add+0x68>
~ │ 000097c8: f9400be9 ldr x9, [sp, #16]
~ │ 000097cc: f9000128 str x8, [x9]
~ │ ┌─000097d0: 14000001 b 97d4 <__list_add+0x78>
│ │
│ │ __list_add:73.2 (list.h) sbepe ║WRITE_ONCE(prev->next, new);
~ │ ┌─└>000097d4: 14000001 b 97d8 <__list_add+0x7c> <- 000097d0(b)<__list_add+0x78>
│ │
│ │ __list_add:74.1 (list.h) Sbepe ║}
~ └─>└──>000097d8: a9427bfd ldp x29, x30, [sp, #32] <- 0000978c(b)<__list_add+0x7c>,000097d4(b)<__list_add+0x7c>
~ 000097dc: 9100c3ff add sp, sp, #0x30
00009768 CFA:r29+16 r29:c-16 r30:c-8
~ 000097e0: d65f03c0 ret
-new param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_fbreg -0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:63
-prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x10) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:64
-next param pointer(struct list_head<6b8fc>/<6ba74>) 0x975c 0x97e4 (DW_OP_breg31 0x8) __list_add:arch/arm64/kvm/hyp/nvhe/page_alloc.c:65
**000097e4 <__list_add_valid>:
+ __list_add_valid params:
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18)
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10)
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8)
__list_add_valid:48.0 (list.h) Sbepe ║{
000097e4 CFA:r31
+new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45
+prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46
+next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:47
~ 000097e4: d10083ff sub sp, sp, #0x20 <- 00009780(bl)<__list_add_valid>
~ 000097e8: f9000fe0 str x0, [sp, #24]
~ 000097ec: f9000be1 str x1, [sp, #16]
~ 000097f0: f90007e2 str x2, [sp, #8]
~ 000097f4: 52800020 mov w0, #0x1 // #1
__list_add_valid:49.2 (list.h) SbePe ║return true;
~ 000097f8: 910083ff add sp, sp, #0x20
000097e8 CFA:r31+32
~ 000097fc: d65f03c0 ret
-new param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x18) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:45
-prev param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x10) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:46
-next param pointer(struct list_head<6b8fc>/<6ba74>) 0x97e4 0x9800 (DW_OP_fbreg 0x8) __list_add_valid:arch/arm64/kvm/hyp/nvhe/page_alloc.c:47
**00009800 <__hyp_extract_page>:
+ __hyp_extract_page params:
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10)
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18)
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14)
__hyp_extract_page:93.0 (page_alloc.c) Sbepe ║{
+pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:90
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:91
+order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:92
+buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x8) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:94
~ 00009800: d10103ff sub sp, sp, #0x40 <- 00009320(bl)<__hyp_extract_page>
~ 00009804: a9037bfd stp x29, x30, [sp, #48]
00009800 CFA:r31 r29:u r30:u
~ 00009808: 9100c3fd add x29, sp, #0x30
~ 0000980c: f81f03a0 stur x0, [x29, #-16]
~ 00009810: f9000fe1 str x1, [sp, #24]
~ 00009814: b90017e2 str w2, [sp, #20]
__hyp_extract_page:96.6 (page_alloc.c) SbePe if (║p->order == HYP_NO_ORDER || p->order < order)
~ 00009818: f9400fe8 ldr x8, [sp, #24]
__hyp_extract_page:96.9 (page_alloc.c) sbepe if (p->║order == HYP_NO_ORDER || p->order < order)
~ 0000981c: b9400509 ldr w9, [x8, #4]
__hyp_extract_page:96.31 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER ║|| p->order < order)
~ 00009820: 31000529 adds w9, w9, #0x1
~ ┌────00009824: 54000100 b.eq 9844 <__hyp_extract_page+0x44> // b.none
│
~ │ ┌─00009828: 14000001 b 982c <__hyp_extract_page+0x2c> <- 00009824(b.cc-succ)<fallthrough>
│ │
│ │ __hyp_extract_page:96.34 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || ║p->order < order)
~ │ └>0000982c: f9400fe8 ldr x8, [sp, #24] <- 00009828(b)<__hyp_extract_page+0x2c>
│ __hyp_extract_page:96.37 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || p->║order < order)
~ │ 00009830: b9400509 ldr w9, [x8, #4]
│ __hyp_extract_page:96.45 (page_alloc.c) sbepe if (p->order == HYP_NO_ORDER || p->order < ║order)
~ │ 00009834: b94017ea ldr w10, [sp, #20]
│ __hyp_extract_page:96.6 (page_alloc.c) sbepe if (║p->order == HYP_NO_ORDER || p->order < order)
~ │ 00009838: 6b0a0129 subs w9, w9, w10
~ │ ┌──0000983c: 540000a2 b.cs 9850 <__hyp_extract_page+0x50> // b.hs, b.nlast
│ │
~ │ │┌─00009840: 14000001 b 9844 <__hyp_extract_page+0x44> <- 0000983c(b.cc-succ)<fallthrough>
│ ││
~ └>│└>00009844: aa1f03e8 mov x8, xzr <- 00009824(b.cc)<__hyp_extract_page+0x44>,00009840(b)<__hyp_extract_page+0x44>
│ __hyp_extract_page:97.3 (page_alloc.c) Sbepe ║return NULL;
~ │ 00009848: f81f83a8 stur x8, [x29, #-8]
~ ┌─┼──0000984c: 14000028 b 98ec <__hyp_extract_page+0xec>
│ │
│ │ __hyp_extract_page:99.17 (page_alloc.c) Sbepe list_del_init(&║p->node);
~ │ └─>00009850: f9400fe8 ldr x8, [sp, #24] <- 0000983c(b.cc)<__hyp_extract_page+0x50>
│ __hyp_extract_page:99.20 (page_alloc.c) sbepe list_del_init(&p->║node);
~ │ 00009854: 91004100 add x0, x8, #0x10
│ __hyp_extract_page:99.2 (page_alloc.c) sbepe ║list_del_init(&p->node);
~ │ 00009858: 97ffff82 bl 9660 <list_del_init>
│
│ __hyp_extract_page:102.2 (page_alloc.c) Sbepe ║while (p->order > order) {
~ │ ┌─0000985c: 14000001 b 9860 <__hyp_extract_page+0x60> <- 00009858(bl-succ)<return>
│ │
│ │ __hyp_extract_page:102.9 (page_alloc.c) sbepe while (║p->order > order) {
~ │╔>└>00009860: f9400fe8 ldr x8, [sp, #24] <- 0000985c(b)<__hyp_extract_page+0x60>,v000098d0(b)<__hyp_extract_page+0x60>
│║ __hyp_extract_page:102.12 (page_alloc.c) sbepe while (p->║order > order) {
~ │║ 00009864: b9400509 ldr w9, [x8, #4]
│║ __hyp_extract_page:102.20 (page_alloc.c) sbepe while (p->order > ║order) {
~ │║ 00009868: b94017ea ldr w10, [sp, #20]
│║ __hyp_extract_page:102.2 (page_alloc.c) sbepe ║while (p->order > order) {
~ │║ 0000986c: 6b0a0129 subs w9, w9, w10
~ │║┌──00009870: 54000329 b.ls 98d4 <__hyp_extract_page+0xd4> // b.plast
│║│
~ │║│┌─00009874: 14000001 b 9878 <__hyp_extract_page+0x78> <- 00009870(b.cc-succ)<fallthrough>
│║││
│║││ __hyp_extract_page:103.3 (page_alloc.c) Sbepe ║p->order--;
~ │║│└>00009878: f9400fe8 ldr x8, [sp, #24] <- 00009874(b)<__hyp_extract_page+0x78>
│║│ __hyp_extract_page:103.11 (page_alloc.c) sbepe p->order║--;
~ │║│ 0000987c: b9400509 ldr w9, [x8, #4]
~ │║│ 00009880: 71000529 subs w9, w9, #0x1
~ │║│ 00009884: b9000509 str w9, [x8, #4]
│║│ __hyp_extract_page:104.24 (page_alloc.c) Sbepe buddy = __find_buddy(║pool, p, p->order);
~ │║│ 00009888: f85f03a0 ldur x0, [x29, #-16]
│║│ __hyp_extract_page:104.30 (page_alloc.c) sbepe buddy = __find_buddy(pool, ║p, p->order);
~ │║│ 0000988c: f9400fe8 ldr x8, [sp, #24]
│║│ __hyp_extract_page:104.36 (page_alloc.c) sbepe buddy = __find_buddy(pool, p, p->║order);
~ │║│ 00009890: b9400502 ldr w2, [x8, #4]
│║│ __hyp_extract_page:104.11 (page_alloc.c) sbepe buddy = ║__find_buddy(pool, p, p->order);
~ │║│ 00009894: aa0803e1 mov x1, x8
~ │║│ 00009898: 97ffff39 bl 957c <__find_buddy>
│║│
│║│ __hyp_extract_page:104.9 (page_alloc.c) sbepe buddy ║= __find_buddy(pool, p, p->order);
~ │║│ 0000989c: f90007e0 str x0, [sp, #8] <- 00009898(bl-succ)<return>
│║│ __hyp_extract_page:105.18 (page_alloc.c) Sbepe buddy->order = ║p->order;
~ │║│ 000098a0: f9400fe8 ldr x8, [sp, #24]
│║│ __hyp_extract_page:105.21 (page_alloc.c) sbepe buddy->order = p->║order;
~ │║│ 000098a4: b9400509 ldr w9, [x8, #4]
│║│ __hyp_extract_page:105.3 (page_alloc.c) sbepe ║buddy->order = p->order;
~ │║│ 000098a8: f94007e8 ldr x8, [sp, #8]
│║│ __hyp_extract_page:105.16 (page_alloc.c) sbepe buddy->order ║= p->order;
~ │║│ 000098ac: b9000509 str w9, [x8, #4]
│║│ __hyp_extract_page:106.18 (page_alloc.c) Sbepe list_add_tail(&║buddy->node, &pool->free_area[buddy->order]);
~ │║│ 000098b0: f94007e8 ldr x8, [sp, #8]
│║│ __hyp_extract_page:106.25 (page_alloc.c) sbepe list_add_tail(&buddy->║node, &pool->free_area[buddy->order]);
~ │║│ 000098b4: 91004100 add x0, x8, #0x10
│║│ __hyp_extract_page:106.32 (page_alloc.c) sbepe list_add_tail(&buddy->node, &║pool->free_area[buddy->order]);
~ │║│ 000098b8: f85f03aa ldur x10, [x29, #-16]
│║│ __hyp_extract_page:106.55 (page_alloc.c) sbepe list_add_tail(&buddy->node, &pool->free_area[buddy->║order]);
~ │║│ 000098bc: b9400509 ldr w9, [x8, #4]
~ │║│ 000098c0: 2a0903e8 mov w8, w9
│║│ __hyp_extract_page:106.38 (page_alloc.c) sbepe list_add_tail(&buddy->node, &pool->║free_area[buddy->order]);
~ │║│ 000098c4: 8b081148 add x8, x10, x8, lsl #4
│║│ __hyp_extract_page:106.32 (page_alloc.c) sbepe list_add_tail(&buddy->node, &║pool->free_area[buddy->order]);
~ │║│ 000098c8: 91002101 add x1, x8, #0x8
│║│ __hyp_extract_page:106.3 (page_alloc.c) sbepe ║list_add_tail(&buddy->node, &pool->free_area[buddy->order]);
~ │║│ 000098cc: 97ffff70 bl 968c <list_add_tail>
│║│
│║│ __hyp_extract_page:102.2 (page_alloc.c) Sbepe ║while (p->order > order) {
~ │╚╪══000098d0: 17ffffe4 b 9860 <__hyp_extract_page+0x60> <- 000098cc(bl-succ)<return>
│ │
│ │ __hyp_extract_page:109.2 (page_alloc.c) Sbepe ║p->refcount = 1;
~ │ └─>000098d4: f9400fe8 ldr x8, [sp, #24] <- 00009870(b.cc)<__hyp_extract_page+0xd4>
~ │ 000098d8: 52800029 mov w9, #0x1 // #1
│ __hyp_extract_page:109.14 (page_alloc.c) sbepe p->refcount ║= 1;
~ │ 000098dc: b9000109 str w9, [x8]
│ __hyp_extract_page:111.9 (page_alloc.c) Sbepe return p;
~ │ 000098e0: f9400fe8 ldr x8, [sp, #24]
│ __hyp_extract_page:111.2 (page_alloc.c) sbepe ║return p;
~ │ 000098e4: f81f83a8 stur x8, [x29, #-8]
~ │ ┌─000098e8: 14000001 b 98ec <__hyp_extract_page+0xec>
│ │
│ │ __hyp_extract_page:112.1 (page_alloc.c) Sbepe ║}
~ └─>└>000098ec: f85f83a0 ldur x0, [x29, #-8] <- 0000984c(b)<__hyp_extract_page+0xec>,000098e8(b)<__hyp_extract_page+0xec>
~ 000098f0: a9437bfd ldp x29, x30, [sp, #48]
~ 000098f4: 910103ff add sp, sp, #0x40
0000980c CFA:r29+16 r29:c-16 r30:c-8
~ 000098f8: d65f03c0 ret
-pool param pointer(struct hyp_pool<6b8fc>/<6b9b7>) 0x9800 0x98fc (DW_OP_fbreg -0x10) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:90
-p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x18) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:91
-order param unsigned int (base type, DW_ATE_unsigned size:4) 0x9800 0x98fc (DW_OP_breg31 0x14) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:92
-buddy var pointer(struct hyp_page<6b8fc>/<6b979>) 0x9800 0x98fc (DW_OP_breg31 0x8) __hyp_extract_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:94
**000098fc <clear_hyp_page>:
+ clear_hyp_page params:
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8)
clear_hyp_page:115.0 (page_alloc.c) Sbepe ║{
+p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:114
+i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x98fc 0x9988 (DW_OP_breg31 0x0) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:116
~ 000098fc: d10083ff sub sp, sp, #0x20 <- 00009338(bl)<clear_hyp_page>
~ 00009900: a9017bfd stp x29, x30, [sp, #16]
000098fc CFA:r31 r29:u r30:u
~ 00009904: 910043fd add x29, sp, #0x10
~ 00009908: f90007e0 str x0, [sp, #8]
~ 0000990c: aa1f03e8 mov x8, xzr
clear_hyp_page:118.9 (page_alloc.c) SbePe for (i ║= 0; i < (1 << p->order); i++)
~ 00009910: f90003e8 str x8, [sp]
clear_hyp_page:118.7 (page_alloc.c) sbepe for (║i = 0; i < (1 << p->order); i++)
~ ┌─00009914: 14000001 b 9918 <clear_hyp_page+0x1c>
│
│ clear_hyp_page:118.14 (page_alloc.c) sbepe for (i = 0; ║i < (1 << p->order); i++)
~ ╔>└>00009918: f94003e8 ldr x8, [sp] <- 00009914(b)<clear_hyp_page+0x1c>,v00009978(b)<clear_hyp_page+0x1c>
║ clear_hyp_page:118.24 (page_alloc.c) sbepe for (i = 0; i < (1 << ║p->order); i++)
~ ║ 0000991c: f94007e9 ldr x9, [sp, #8]
║ clear_hyp_page:118.27 (page_alloc.c) sbepe for (i = 0; i < (1 << p->║order); i++)
~ ║ 00009920: b940052a ldr w10, [x9, #4]
~ ║ 00009924: 2a0a03e0 mov w0, w10
~ ║ 00009928: 5280002a mov w10, #0x1 // #1
║ clear_hyp_page:118.21 (page_alloc.c) sbepe for (i = 0; i < (1 ║<< p->order); i++)
~ ║ 0000992c: 1ac0214a lsl w10, w10, w0
║ clear_hyp_page:118.2 (page_alloc.c) sbepe ║for (i = 0; i < (1 << p->order); i++)
~ ║ 00009930: eb2ac108 subs x8, x8, w10, sxtw
~ ║┌──00009934: 54000242 b.cs 997c <clear_hyp_page+0x80> // b.hs, b.nlast
║│
~ ║│┌─00009938: 14000001 b 993c <clear_hyp_page+0x40> <- 00009934(b.cc-succ)<fallthrough>
║││
║││ clear_hyp_page:119.14 (page_alloc.c) Sbepe clear_page(║hyp_page_to_virt(p) + (i << PAGE_SHIFT));
~ ║│└>0000993c: f94007e8 ldr x8, [sp, #8] <- 00009938(b)<clear_hyp_page+0x40>
~ ║│ 00009940: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ ║│ 00009944: f944c529 ldr x9, [x9, #2440]
~ ║│ 00009948: eb090108 subs x8, x8, x9
~ ║│ 0000994c: d379e108 lsl x8, x8, #7
~ ║│ 00009950: b0000089 adrp x9, 1a000 <hyp_cpu_logical_map+0xe0>
~ ║│ 00009954: f9439d29 ldr x9, [x9, #1848]
~ ║│ 00009958: eb090108 subs x8, x8, x9
║│ clear_hyp_page:119.37 (page_alloc.c) sbepe clear_page(hyp_page_to_virt(p) + (║i << PAGE_SHIFT));
~ ║│ 0000995c: f94003e9 ldr x9, [sp]
║│ clear_hyp_page:119.34 (page_alloc.c) sbepe clear_page(hyp_page_to_virt(p) ║+ (i << PAGE_SHIFT));
~ ║│ 00009960: 8b093100 add x0, x8, x9, lsl #12
║│ clear_hyp_page:119.3 (page_alloc.c) sbepe ║clear_page(hyp_page_to_virt(p) + (i << PAGE_SHIFT));
~ ║│ 00009964: 94003180 bl 15f64 <__pi_clear_page>
║│
~ ║│┌─00009968: 14000001 b 996c <clear_hyp_page+0x70> <- 00009964(bl-succ)<return>
║││
║││ clear_hyp_page:118.36 (page_alloc.c) Sbepe for (i = 0; i < (1 << p->order); i║++)
~ ║│└>0000996c: f94003e8 ldr x8, [sp] <- 00009968(b)<clear_hyp_page+0x70>
~ ║│ 00009970: 91000508 add x8, x8, #0x1
~ ║│ 00009974: f90003e8 str x8, [sp]
║│ clear_hyp_page:118.2 (page_alloc.c) sbepe ║for (i = 0; i < (1 << p->order); i++)
~ ╚╪══00009978: 17ffffe8 b 9918 <clear_hyp_page+0x1c>
│
│ clear_hyp_page:120.1 (page_alloc.c) Sbepe ║}
~ └─>0000997c: a9417bfd ldp x29, x30, [sp, #16] <- 00009934(b.cc)<clear_hyp_page+0x80>
~ 00009980: 910083ff add sp, sp, #0x20
~ 00009984: d65f03c0 ret
-p param pointer(struct hyp_page<6b8fc>/<6b979>) 0x98fc 0x9988 (DW_OP_breg31 0x8) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:114
-i var long unsigned int (base type, DW_ATE_unsigned size:8) 0x98fc 0x9988 (DW_OP_breg31 0x0) clear_hyp_page:arch/arm64/kvm/hyp/nvhe/page_alloc.c:116
~ 00009988: 52a0002b mov w11, #0x10000 // #65536
~ 0000998c: b8ab0109 ldadda w11, w9, [x8]
~ 00009990: d503201f nop
~ 00009994: d503201f nop
~ 00009998: d503201f nop
~ 0000999c: 52800029 mov w9, #0x1 // #1
~ 000099a0: 7869011f staddlh w9, [x8]
00009908 CFA:r29+16 r29:c-16 r30:c-8
~ 000099a4: d503201f nop