Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .arch armv6k
- .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
- .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
- .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
- .eabi_attribute 24, 1 @ Tag_ABI_align8_needed
- .eabi_attribute 25, 1 @ Tag_ABI_align8_preserved
- .eabi_attribute 26, 2 @ Tag_ABI_enum_size
- .eabi_attribute 30, 2 @ Tag_ABI_optimization_goals
- .eabi_attribute 34, 1 @ Tag_CPU_unaligned_access
- .eabi_attribute 18, 2 @ Tag_ABI_PCS_wchar_t
- .file "core.c"
- @ GNU C89 (GCC) version 11.1.0 (arm-linux-gnueabi)
- @ compiled by GNU C version 8.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
- @ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
- @Versions of loaded plugins:
- @randomize_layout_plugin: 201402201816vanilla
- @ options passed: -mlittle-endian -mapcs -mno-sched-prolog -mabi=aapcs-linux -mfpu=vfp -marm -mtune=arm1136j-s -mfloat-abi=soft -mtls-dialect=gnu -march=armv6k -O2 -std=gnu90 -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -fno-dwarf2-cfi-asm -fno-ipa-sra -fno-delete-null-pointer-checks -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -fno-inline-functions-called-once -falign-functions=64 -fno-strict-overflow -fstack-check=no -fconserve-stack -fplugin=./scripts/gcc-plugins/randomize_layout_plugin.so -fsanitize=kernel-address -fasan-shadow-offset=0x5f000000 --param=asan-globals=1 --param=asan-instrumentation-with-call-threshold=10000 --param=asan-instrument-allocas=1 --param=asan-stack=1
- .text
- .syntax divided
- .syntax unified
- .arm
- .syntax unified
- .section .kprobes.text,"ax",%progbits
- .align 2
- .p2align 6,,63
- .global __kretprobe_trampoline
- .syntax unified
- .arm
- .fpu softvfp
- .type __kretprobe_trampoline, %function
- __kretprobe_trampoline:
- .LASANPC3680:
- @ Naked Function: prologue and epilogue provided by programmer.
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:378: __asm__ __volatile__ (
- .syntax divided
- @ 378 "/git/arm-soc/arch/arm/probes/kprobes/core.c" 1
- ldr lr, =__kretprobe_trampoline
- stmdb sp, {fp, sp, lr, pc}
- sub sp, sp, #16
- stmdb sp!, {r0 - r11}
- add fp, sp, #60
- mov r0, sp
- bl trampoline_handler
- mov lr, r0
- ldmia sp!, {r0 - r11}
- add sp, sp, #16
- mov pc, lr
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:412: }
- .arm
- .syntax unified
- .size __kretprobe_trampoline, .-__kretprobe_trampoline
- .section .rodata.str1.4,"aMS",%progbits,1
- .align 2
- .LC0:
- .ascii "1 32 8 11 tmp_insn:51\000"
- .section .kprobes.text
- .align 2
- .p2align 6,,63
- .global arch_prepare_kprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_prepare_kprobe, %function
- arch_prepare_kprobe:
- .LASANPC3665:
- @ args = 0, pretend = 0, frame = 136
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- sub sp, sp, #148 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- sub r3, fp, #44 @ tmp476,,
- bic r6, r3, #31 @ tmp268, tmp476,
- ldr r2, .L74 @ tmp271,
- sub r3, r6, #96 @ tmp270, tmp268,
- str r2, [r6, #-96] @ tmp271,
- ldr r2, .L74+4 @ tmp272,
- lsr r5, r3, #3 @ tmp274, tmp270,
- str r2, [r6, #-92] @ tmp272,
- ldr r2, .L74+8 @ tmp273,
- mov r4, r0 @ p, tmp467
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- add r0, r0, #20 @ _43, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- str r2, [r6, #-88] @ tmp273,
- add r5, r5, #1593835520 @ tmp464, tmp274,
- ldr r2, .L74+12 @ tmp277,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- lsr r3, r0, #3 @ tmp285, _43,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- str r2, [r5] @ tmp277,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- add r3, r3, #1593835520 @ tmp287, tmp285,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- ldr r2, .L74+16 @ tmp278,
- str r2, [r5, #4] @ tmp278,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- ldrsb r2, [r3] @ _56, *_51
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- ldr r3, .L74+20 @ tmp470,
- ldr r3, [r3] @ tmp470
- str r3, [fp, #-48] @ tmp470, D.44129
- mov r3, #0 @ tmp470
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- and r3, r0, #7 @ tmp288, _43,
- add r3, r3, #3 @ tmp292, tmp288,
- cmp r3, r2 @ tmp298, _56
- movlt r3, #0 @ tmp298,
- movge r3, #1 @ tmp298,
- cmp r2, #0 @ _56,
- moveq r3, #0 @ tmp298,
- cmp r3, #0 @ tmp298,
- bne .L61 @,
- .L4:
- ldr r7, [r4, #20] @ _1, p_24(D)->addr
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:76: if (addr & 0x3)
- tst r7, #3 @ _1,
- bne .L22 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:78: insn = __mem_to_opcode_arm(*p->addr);
- lsr r2, r7, #3 @ tmp300, _1,
- add r2, r2, #1593835520 @ tmp302, tmp300,
- and r3, r7, #7 @ tmp303, _1,
- ldrsb r2, [r2] @ _69, *_68
- add r3, r3, #3 @ tmp307, tmp303,
- cmp r3, r2 @ tmp313, _69
- movlt r3, #0 @ tmp313,
- movge r3, #1 @ tmp313,
- cmp r2, #0 @ _69,
- moveq r3, #0 @ tmp313,
- cmp r3, #0 @ tmp313,
- bne .L62 @,
- .L6:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:84: p->opcode = insn;
- add r0, r4, #40 @ _76, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:78: insn = __mem_to_opcode_arm(*p->addr);
- ldr r10, [r7] @ insn, *_1
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:84: p->opcode = insn;
- lsr r3, r0, #3 @ tmp314, _76,
- add r3, r3, #1593835520 @ tmp316, tmp314,
- ldrsb r2, [r3] @ _80, *_79
- and r3, r0, #7 @ tmp317, _76,
- add r3, r3, #3 @ tmp321, tmp317,
- cmp r3, r2 @ tmp327, _80
- movlt r3, #0 @ tmp327,
- movge r3, #1 @ tmp327,
- cmp r2, #0 @ _80,
- moveq r3, #0 @ tmp327,
- cmp r3, #0 @ tmp327,
- bne .L63 @,
- .L7:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:85: p->ainsn.insn = tmp_insn;
- add r8, r4, #44 @ _40, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:84: p->opcode = insn;
- str r10, [r4, #40] @ insn, p_24(D)->opcode
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:85: p->ainsn.insn = tmp_insn;
- lsr r9, r8, #3 @ tmp466, _40,
- add r3, r9, #1593835520 @ tmp330, tmp466,
- and r7, r8, #7 @ tmp465, _40,
- ldrsb r2, [r3] @ _91, *_90
- add r3, r7, #3 @ tmp335, tmp465,
- cmp r3, r2 @ tmp341, _91
- movlt r3, #0 @ tmp341,
- movge r3, #1 @ tmp341,
- cmp r2, #0 @ _91,
- moveq r3, #0 @ tmp341,
- cmp r3, #0 @ tmp341,
- bne .L64 @,
- .L8:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:87: switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) {
- ldr r3, .L74+24 @ tmp344,
- mov r0, r10 @, insn
- str r3, [sp] @ tmp344,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:85: p->ainsn.insn = tmp_insn;
- sub r3, r6, #64 @ tmp342, tmp268,
- str r3, [r4, #44] @ tmp342, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:87: switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) {
- mov r2, #1 @,
- ldr r3, .L74+28 @,
- mov r1, r8 @, _40
- bl arm_probes_decode_insn @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:87: switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) {
- cmp r0, #1 @ _4,
- beq .L9 @,
- cmp r0, #2 @ _4,
- beq .L10 @,
- cmp r0, #0 @ _4,
- beq .L22 @,
- .L12:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:113: if ((p->ainsn.stack_space < 0) ||
- add r0, r4, #64 @ _175, p,
- and r3, r0, #7 @ tmp451, _175,
- lsr r2, r0, #3 @ tmp448, _175,
- add r2, r2, #1593835520 @ tmp450, tmp448,
- add r3, r3, #3 @ tmp455, tmp451,
- ldrsb r2, [r2] @ _179, *_178
- cmp r3, r2 @ tmp461, _179
- movlt r3, #0 @ tmp461,
- movge r3, #1 @ tmp461,
- cmp r2, #0 @ _179,
- moveq r3, #0 @ tmp461,
- cmp r3, #0 @ tmp461,
- bne .L65 @,
- .L20:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:113: if ((p->ainsn.stack_space < 0) ||
- ldr r3, [r4, #64] @ p_24(D)->ainsn.stack_space, p_24(D)->ainsn.stack_space
- cmp r3, #64 @ p_24(D)->ainsn.stack_space,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:117: return 0;
- movls r0, #0 @ <retval>,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:113: if ((p->ainsn.stack_space < 0) ||
- bhi .L22 @,
- .L3:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:49: {
- mov r3, #0 @ tmp282,
- str r3, [r5] @ tmp282,
- str r3, [r5, #4] @ tmp282,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:118: }
- ldr r3, .L74+20 @ tmp472,
- ldr r2, [r3] @ tmp473, tmp472
- ldr r3, [fp, #-48] @ tmp472, D.44129
- eors r2, r3, r2 @ tmp473, tmp472
- mov r3, #0 @ tmp472
- bne .L66 @,
- sub sp, fp, #40 @,,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} @
- .L22:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:87: switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) {
- mvn r0, #21 @ <retval>,
- b .L3 @
- .L10:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:104: p->ainsn.insn = NULL;
- add r9, r9, #1593835520 @ tmp435, tmp466,
- add r7, r7, #3 @ tmp440, tmp465,
- ldrsb r3, [r9] @ _168, *_167
- cmp r7, r3 @ tmp446, _168
- movlt r7, #0 @ tmp446,
- movge r7, #1 @ tmp446,
- cmp r3, #0 @ _168,
- moveq r7, #0 @ tmp446,
- cmp r7, #0 @ tmp446,
- bne .L67 @,
- .L19:
- mov r3, #0 @ tmp447,
- str r3, [r4, #44] @ tmp447, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:105: break;
- b .L12 @
- .L9:
- @ /git/arm-soc/include/linux/kprobes.h:322: DEFINE_INSN_CACHE_OPS(insn);
- ldr r0, .L74+32 @,
- bl __get_insn_slot @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:92: p->ainsn.insn = get_insn_slot();
- add r3, r9, #1593835520 @ tmp348, tmp466,
- ldrsb r2, [r3] @ _102, *_101
- add r3, r7, #3 @ tmp353, tmp465,
- cmp r3, r2 @ tmp359, _102
- movlt r3, #0 @ tmp359,
- movge r3, #1 @ tmp359,
- cmp r2, #0 @ _102,
- moveq r3, #0 @ tmp359,
- cmp r3, #0 @ tmp359,
- @ /git/arm-soc/include/linux/kprobes.h:322: DEFINE_INSN_CACHE_OPS(insn);
- mov r10, r0 @ _37, tmp469
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:92: p->ainsn.insn = get_insn_slot();
- bne .L68 @,
- .L13:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:93: if (!p->ainsn.insn)
- cmp r10, #0 @ _37,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:92: p->ainsn.insn = get_insn_slot();
- str r10, [r4, #44] @ _37, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:93: if (!p->ainsn.insn)
- beq .L23 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- lsr r3, r10, #3 @ tmp360, _37,
- add r3, r3, #1593835520 @ tmp362, tmp360,
- ldrsb r2, [r3] @ _113, *_112
- and r3, r10, #7 @ tmp363, _37,
- add r3, r3, #3 @ tmp367, tmp363,
- cmp r3, r2 @ tmp373, _113
- movlt r3, #0 @ tmp373,
- movge r3, #1 @ tmp373,
- cmp r2, #0 @ _113,
- moveq r3, #0 @ tmp373,
- cmp r3, #0 @ tmp373,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- ldr r3, [r6, #-64] @ _45, tmp_insn[0]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- bne .L69 @,
- .L14:
- str r3, [r10] @ _45, MEM[(probes_opcode_t *)_37]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- ldr r10, [r6, #-60] @ _54, tmp_insn[1]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- ldr r6, [r4, #44] @ _50, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- add r0, r6, #4 @ _120, _50,
- and r3, r0, #7 @ tmp377, _120,
- lsr r2, r0, #3 @ tmp374, _120,
- add r2, r2, #1593835520 @ tmp376, tmp374,
- add r3, r3, #3 @ tmp381, tmp377,
- ldrsb r2, [r2] @ _124, *_123
- cmp r3, r2 @ tmp387, _124
- movlt r3, #0 @ tmp387,
- movge r3, #1 @ tmp387,
- cmp r2, #0 @ _124,
- moveq r3, #0 @ tmp387,
- cmp r3, #0 @ tmp387,
- bne .L70 @,
- .L15:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:97: flush_insns(p->ainsn.insn,
- ldr r0, .L74+36 @ _131,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- str r10, [r6, #4] @ _54, MEM[(probes_opcode_t *)_50 + 4B]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:97: flush_insns(p->ainsn.insn,
- and r3, r0, #7 @ tmp391, _131,
- lsr r2, r0, #3 @ tmp388, _131,
- add r2, r2, #1593835520 @ tmp390, tmp388,
- add r3, r3, #3 @ tmp395, tmp391,
- ldrsb r2, [r2] @ _135, *_134
- cmp r3, r2 @ tmp401, _135
- movlt r3, #0 @ tmp401,
- movge r3, #1 @ tmp401,
- cmp r2, #0 @ _135,
- moveq r3, #0 @ tmp401,
- cmp r3, #0 @ tmp401,
- bne .L71 @,
- .L16:
- ldr r3, .L74+40 @ tmp403,
- ldr r0, [r4, #44] @ _12, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:100: ((uintptr_t)p->ainsn.insn | thumb);
- add r9, r9, #1593835520 @ tmp407, tmp466,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:97: flush_insns(p->ainsn.insn,
- ldr r3, [r3, #20] @ cpu_cache.coherent_kern_range, cpu_cache.coherent_kern_range
- add r1, r0, #8 @, _12,
- blx r3 @ cpu_cache.coherent_kern_range
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:100: ((uintptr_t)p->ainsn.insn | thumb);
- ldrsb r3, [r9] @ _146, *_145
- add r7, r7, #3 @ tmp412, tmp465,
- cmp r7, r3 @ tmp418, _146
- movlt r7, #0 @ tmp418,
- movge r7, #1 @ tmp418,
- cmp r3, #0 @ _146,
- moveq r7, #0 @ tmp418,
- cmp r7, #0 @ tmp418,
- bne .L72 @,
- .L17:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:99: p->ainsn.insn_fn = (probes_insn_fn_t *)
- add r0, r4, #60 @ _153, p,
- and r3, r0, #7 @ tmp422, _153,
- lsr r2, r0, #3 @ tmp419, _153,
- add r2, r2, #1593835520 @ tmp421, tmp419,
- add r3, r3, #3 @ tmp426, tmp422,
- ldrsb r2, [r2] @ _157, *_156
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:99: p->ainsn.insn_fn = (probes_insn_fn_t *)
- ldr r6, [r4, #44] @ _15, p_24(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:99: p->ainsn.insn_fn = (probes_insn_fn_t *)
- cmp r3, r2 @ tmp432, _157
- movlt r3, #0 @ tmp432,
- movge r3, #1 @ tmp432,
- cmp r2, #0 @ _157,
- moveq r3, #0 @ tmp432,
- cmp r3, #0 @ tmp432,
- bne .L73 @,
- .L18:
- str r6, [r4, #60] @ _15, p_24(D)->ainsn.insn_fn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:101: break;
- b .L12 @
- .L23:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:94: return -ENOMEM;
- mvn r0, #11 @ <retval>,
- b .L3 @
- .L61:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:52: unsigned long addr = (unsigned long)p->addr;
- bl __asan_report_load4_noabort @
- b .L4 @
- .L64:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:85: p->ainsn.insn = tmp_insn;
- mov r0, r8 @, _40
- bl __asan_report_store4_noabort @
- b .L8 @
- .L63:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:84: p->opcode = insn;
- bl __asan_report_store4_noabort @
- b .L7 @
- .L62:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:78: insn = __mem_to_opcode_arm(*p->addr);
- mov r0, r7 @, _1
- bl __asan_report_load4_noabort @
- b .L6 @
- .L65:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:113: if ((p->ainsn.stack_space < 0) ||
- bl __asan_report_load4_noabort @
- b .L20 @
- .L66:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:118: }
- bl __stack_chk_fail @
- .L69:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- mov r0, r10 @, _37
- str r3, [fp, #-176] @ _45, %sfp
- bl __asan_report_store4_noabort @
- ldr r3, [fp, #-176] @ _45, %sfp
- b .L14 @
- .L73:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:99: p->ainsn.insn_fn = (probes_insn_fn_t *)
- bl __asan_report_store4_noabort @
- b .L18 @
- .L67:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:104: p->ainsn.insn = NULL;
- mov r0, r8 @, _40
- bl __asan_report_store4_noabort @
- b .L19 @
- .L70:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:96: p->ainsn.insn[is] = tmp_insn[is];
- bl __asan_report_store4_noabort @
- b .L15 @
- .L71:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:97: flush_insns(p->ainsn.insn,
- bl __asan_report_load4_noabort @
- b .L16 @
- .L72:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:100: ((uintptr_t)p->ainsn.insn | thumb);
- mov r0, r8 @, _40
- bl __asan_report_load4_noabort @
- b .L17 @
- .L68:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:92: p->ainsn.insn = get_insn_slot();
- mov r0, r8 @, _40
- bl __asan_report_store4_noabort @
- b .L13 @
- .L75:
- .align 2
- .L74:
- .word 1102416563
- .word .LC0
- .word .LASANPC3665
- .word -235802127
- .word -202116352
- .word __stack_chk_guard
- .word kprobes_arm_checkers
- .word kprobes_arm_actions
- .word kprobe_insn_slots
- .word cpu_cache+20
- .word cpu_cache
- .size arch_prepare_kprobe, .-arch_prepare_kprobe
- .align 2
- .p2align 6,,63
- .global arch_arm_kprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_arm_kprobe, %function
- arch_arm_kprobe:
- .LASANPC3666:
- @ args = 0, pretend = 0, frame = 8
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- sub sp, sp, #12 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:121: {
- mov r4, r0 @ p, tmp172
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:134: kprobe_opcode_t insn = p->opcode;
- add r0, r0, #40 @ _13, p,
- and r3, r0, #7 @ tmp145, _13,
- lsr r2, r0, #3 @ tmp142, _13,
- add r2, r2, #1593835520 @ tmp144, tmp142,
- add r3, r3, #3 @ tmp149, tmp145,
- ldrsb r2, [r2] @ _17, *_16
- cmp r3, r2 @ tmp155, _17
- movlt r3, #0 @ tmp155,
- movge r3, #1 @ tmp155,
- cmp r2, #0 @ _17,
- moveq r3, #0 @ tmp155,
- cmp r3, #0 @ tmp155,
- bne .L87 @,
- .L77:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:136: addr = p->addr;
- add r0, r4, #20 @ _24, p,
- and r3, r0, #7 @ tmp159, _24,
- lsr r2, r0, #3 @ tmp156, _24,
- add r2, r2, #1593835520 @ tmp158, tmp156,
- add r3, r3, #3 @ tmp163, tmp159,
- ldrsb r2, [r2] @ _28, *_27
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:134: kprobe_opcode_t insn = p->opcode;
- ldr r1, [r4, #40] @ insn, p_3(D)->opcode
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:136: addr = p->addr;
- cmp r3, r2 @ tmp169, _28
- movlt r3, #0 @ tmp169,
- movge r3, #1 @ tmp169,
- cmp r2, #0 @ _28,
- moveq r3, #0 @ tmp169,
- cmp r3, #0 @ tmp169,
- bne .L88 @,
- .L78:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:139: if (insn >= 0xe0000000)
- cmn r1, #536870913 @ insn,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:142: brkp |= insn & 0xf0000000; /* Copy condition from insn */
- andls r1, r1, #-268435456 @ tmp170, insn,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:142: brkp |= insn & 0xf0000000; /* Copy condition from insn */
- orrls r1, r1, #133169152 @ brkp, tmp170,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:136: addr = p->addr;
- ldr r0, [r4, #20] @ addr, p_3(D)->addr
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:140: brkp |= 0xe0000000; /* Unconditional instruction */
- ldrhi r1, .L89 @ brkp,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:142: brkp |= insn & 0xf0000000; /* Copy condition from insn */
- orrls r1, r1, #504 @ brkp, brkp,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:145: patch_text(addr, brkp);
- bl patch_text @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:146: }
- sub sp, fp, #16 @,,
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, fp, sp, pc} @
- .L87:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:134: kprobe_opcode_t insn = p->opcode;
- bl __asan_report_load4_noabort @
- b .L77 @
- .L88:
- str r1, [fp, #-24] @ insn, %sfp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:136: addr = p->addr;
- bl __asan_report_load4_noabort @
- ldr r1, [fp, #-24] @ insn, %sfp
- b .L78 @
- .L90:
- .align 2
- .L89:
- .word -403701256
- .size arch_arm_kprobe, .-arch_arm_kprobe
- .align 2
- .p2align 6,,63
- .global kprobes_remove_breakpoint
- .syntax unified
- .arm
- .fpu softvfp
- .type kprobes_remove_breakpoint, %function
- kprobes_remove_breakpoint:
- .LASANPC3668:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, r6, r7, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:169: {
- mov r4, r0 @ addr, tmp129
- mov r5, r1 @ insn, tmp130
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:29: asm volatile(
- .syntax divided
- @ 29 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- mrs r6, cpsr @ arch_local_irq_save @ flags
- cpsid i
- @ 0 "" 2
- @ /git/arm-soc/include/linux/stop_machine.h:136: local_irq_save(flags);
- .arm
- .syntax unified
- tst r6, #128 @ flags,
- beq .L96 @,
- @ /git/arm-soc/arch/arm/include/asm/patch.h:10: __patch_text_real(addr, insn, true);
- mov r2, #1 @,
- bl __patch_text_real @
- .L94:
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:159: asm volatile(
- .syntax divided
- @ 159 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- mrs r2, cpsr @ local_save_flags @ flags
- @ 0 "" 2
- @ /git/arm-soc/include/linux/stop_machine.h:138: local_irq_restore(flags);
- .arm
- .syntax unified
- mov r3, #0 @,
- ands r4, r2, #128 @ _12, flags,
- moveq r1, #1 @,
- movne r1, r3 @,
- ldr r0, .L98 @,
- mov r2, r3 @,
- bl ftrace_likely_update @
- cmp r4, #0 @ _12,
- beq .L97 @,
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:171: asm volatile(
- .syntax divided
- @ 171 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- msr cpsr_c, r6 @ local_irq_restore @ flags
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:176: }
- .arm
- .syntax unified
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} @
- .L96:
- @ /git/arm-soc/include/linux/stop_machine.h:136: local_irq_save(flags);
- bl trace_hardirqs_off @
- @ /git/arm-soc/arch/arm/include/asm/patch.h:10: __patch_text_real(addr, insn, true);
- mov r2, #1 @,
- mov r1, r5 @, insn
- mov r0, r4 @, addr
- bl __patch_text_real @
- @ /git/arm-soc/include/linux/stop_machine.h:138: local_irq_restore(flags);
- bl trace_hardirqs_on @
- b .L94 @
- .L97:
- bl warn_bogus_irq_restore @
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:171: asm volatile(
- .syntax divided
- @ 171 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- msr cpsr_c, r6 @ local_irq_restore @ flags
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:176: }
- .arm
- .syntax unified
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} @
- .L99:
- .align 2
- .L98:
- .word .LANCHOR0
- .size kprobes_remove_breakpoint, .-kprobes_remove_breakpoint
- .align 2
- .p2align 6,,63
- .global arch_disarm_kprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_disarm_kprobe, %function
- arch_disarm_kprobe:
- .LASANPC3669:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:179: {
- mov r4, r0 @ p, tmp173
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- add r0, r0, #20 @ _13, p,
- and r3, r0, #7 @ tmp146, _13,
- lsr r2, r0, #3 @ tmp143, _13,
- add r2, r2, #1593835520 @ tmp145, tmp143,
- add r3, r3, #3 @ tmp150, tmp146,
- ldrsb r2, [r2] @ _17, *_16
- cmp r3, r2 @ tmp156, _17
- movlt r3, #0 @ tmp156,
- movge r3, #1 @ tmp156,
- cmp r2, #0 @ _17,
- moveq r3, #0 @ tmp156,
- cmp r3, #0 @ tmp156,
- bne .L109 @,
- .L101:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- add r0, r4, #40 @ _24, p,
- and r3, r0, #7 @ tmp161, _24,
- lsr r2, r0, #3 @ tmp158, _24,
- add r2, r2, #1593835520 @ tmp160, tmp158,
- add r3, r3, #3 @ tmp165, tmp161,
- ldrsb r2, [r2] @ _28, *_27
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- ldr r5, [r4, #20] @ p_7(D)->addr, p_7(D)->addr
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- cmp r3, r2 @ tmp171, _28
- movlt r3, #0 @ tmp171,
- movge r3, #1 @ tmp171,
- cmp r2, #0 @ _28,
- moveq r3, #0 @ tmp171,
- cmp r3, #0 @ tmp171,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- bic r5, r5, #1 @ _4, p_7(D)->addr,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- bne .L110 @,
- .L102:
- ldr r1, [r4, #40] @, p_7(D)->opcode
- mov r0, r5 @, _4
- bl kprobes_remove_breakpoint @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:182: }
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, fp, sp, pc} @
- .L109:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- bl __asan_report_load4_noabort @
- b .L101 @
- .L110:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:180: kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1),
- bl __asan_report_load4_noabort @
- b .L102 @
- .size arch_disarm_kprobe, .-arch_disarm_kprobe
- .align 2
- .p2align 6,,63
- .global arch_remove_kprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_remove_kprobe, %function
- arch_remove_kprobe:
- .LASANPC3670:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, r6, r7, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:186: if (p->ainsn.insn) {
- add r7, r0, #44 @ _7, p,
- and r5, r7, #7 @ tmp168, _7,
- lsr r6, r7, #3 @ tmp169, _7,
- add r2, r6, #1593835520 @ tmp140, tmp169,
- add r3, r5, #3 @ tmp145, tmp168,
- ldrsb r2, [r2] @ _14, *_13
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:185: {
- mov r4, r0 @ p, tmp170
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:186: if (p->ainsn.insn) {
- cmp r3, r2 @ tmp151, _14
- movlt r3, #0 @ tmp151,
- movge r3, #1 @ tmp151,
- cmp r2, #0 @ _14,
- moveq r3, #0 @ tmp151,
- cmp r3, #0 @ tmp151,
- bne .L124 @,
- .L112:
- ldr r1, [r4, #44] @ _1, p_4(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:186: if (p->ainsn.insn) {
- cmp r1, #0 @ _1,
- mov r0, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc} @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:188: p->ainsn.insn = NULL;
- add r6, r6, #1593835520 @ tmp155, tmp169,
- @ /git/arm-soc/include/linux/kprobes.h:322: DEFINE_INSN_CACHE_OPS(insn);
- ldr r0, .L126 @,
- mov r2, #0 @,
- bl __free_insn_slot @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:188: p->ainsn.insn = NULL;
- ldrsb r3, [r6] @ _25, *_24
- add r5, r5, #3 @ tmp160, tmp168,
- cmp r5, r3 @ tmp166, _25
- movlt r5, #0 @ tmp166,
- movge r5, #1 @ tmp166,
- cmp r3, #0 @ _25,
- moveq r5, #0 @ tmp166,
- cmp r5, #0 @ tmp166,
- bne .L125 @,
- .L114:
- mov r3, #0 @ tmp167,
- str r3, [r4, #44] @ tmp167, p_4(D)->ainsn.insn
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:190: }
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, fp, sp, pc} @
- .L124:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:186: if (p->ainsn.insn) {
- mov r0, r7 @, _7
- bl __asan_report_load4_noabort @
- b .L112 @
- .L125:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:188: p->ainsn.insn = NULL;
- mov r0, r7 @, _7
- bl __asan_report_store4_noabort @
- b .L114 @
- .L127:
- .align 2
- .L126:
- .word kprobe_insn_slots
- .size arch_remove_kprobe, .-arch_remove_kprobe
- .align 2
- .p2align 6,,63
- .global kprobe_handler
- .syntax unified
- .arm
- .fpu softvfp
- .type kprobe_handler, %function
- kprobe_handler:
- .LASANPC3676:
- @ args = 0, pretend = 0, frame = 8
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- sub sp, sp, #12 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- add r8, r0, #60 @ _54, regs,
- and r6, r8, #7 @ tmp433, _54,
- lsr r7, r8, #3 @ tmp434, _54,
- add r3, r7, #1593835520 @ tmp259, tmp434,
- @ /git/arm-soc/include/linux/kprobes.h:373: return __this_cpu_read(current_kprobe);
- ldr r9, .L201 @ tmp432,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- ldrsb r2, [r3] @ _11, *_74
- add r3, r6, #3 @ tmp264, tmp433,
- @ /git/arm-soc/include/linux/kprobes.h:373: return __this_cpu_read(current_kprobe);
- ldr r10, [r9] @ pscr_ret__, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- cmp r3, r2 @ tmp270, _11
- movlt r3, #0 @ tmp270,
- movge r3, #1 @ tmp270,
- cmp r2, #0 @ _11,
- moveq r3, #0 @ tmp270,
- cmp r3, #0 @ tmp270,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:237: {
- mov r5, r0 @ regs, tmp435
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- bne .L190 @,
- .L129:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- ldr r0, [r5, #60] @, regs_17(D)->uregs[15]
- bl get_kprobe @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:258: if (p) {
- subs r4, r0, #0 @ p, tmp436
- beq .L128 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- add r0, r4, #52 @ _83, p,
- and r3, r0, #7 @ tmp275, _83,
- lsr r2, r0, #3 @ tmp272, _83,
- add r2, r2, #1593835520 @ tmp274, tmp272,
- add r3, r3, #3 @ tmp279, tmp275,
- ldrsb r2, [r2] @ _87, *_86
- cmp r3, r2 @ tmp285, _87
- movlt r3, #0 @ tmp285,
- movge r3, #1 @ tmp285,
- cmp r2, #0 @ _87,
- moveq r3, #0 @ tmp285,
- cmp r3, #0 @ tmp285,
- bne .L191 @,
- .L131:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- add r0, r5, #64 @ _94, regs,
- and r3, r0, #7 @ tmp289, _94,
- lsr r2, r0, #3 @ tmp286, _94,
- add r2, r2, #1593835520 @ tmp288, tmp286,
- add r3, r3, #3 @ tmp293, tmp289,
- ldrsb r2, [r2] @ _98, *_97
- cmp r3, r2 @ tmp299, _98
- movlt r3, #0 @ tmp299,
- movge r3, #1 @ tmp299,
- cmp r2, #0 @ _98,
- moveq r3, #0 @ tmp299,
- cmp r3, #0 @ tmp299,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- ldr r3, [r4, #52] @ _3, p_19->ainsn.insn_check_cc
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- bne .L192 @,
- .L132:
- ldr r0, [r5, #64] @, regs_17(D)->uregs[16]
- blx r3 @ _3
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- cmp r0, #0 @ tmp437,
- bne .L133 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:219: regs->ARM_pc += 4;
- add r7, r7, #1593835520 @ tmp303, tmp434,
- add r6, r6, #3 @ tmp308, tmp433,
- ldrsb r3, [r7] @ _109, *_108
- cmp r6, r3 @ tmp314, _109
- movlt r6, #0 @ tmp314,
- movge r6, #1 @ tmp314,
- cmp r3, #0 @ _109,
- moveq r6, #0 @ tmp314,
- cmp r6, #0 @ tmp314,
- bne .L193 @,
- .L134:
- ldr r3, [r5, #60] @ regs_17(D)->uregs[15], regs_17(D)->uregs[15]
- add r3, r3, #4 @ tmp315, regs_17(D)->uregs[15],
- str r3, [r5, #60] @ tmp315, regs_17(D)->uregs[15]
- .L128:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:320: }
- sub sp, fp, #40 @,,
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} @
- .L133:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:267: } else if (cur) {
- cmp r10, #0 @ pscr_ret__,
- beq .L135 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:269: switch (kcb->kprobe_status) {
- ldr r6, .L201+4 @ tmp431,
- ldr r3, [r6] @ _6, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:269: switch (kcb->kprobe_status) {
- cmp r3, #8 @ _6,
- beq .L136 @,
- bhi .L137 @,
- cmp r3, #2 @ _6,
- bhi .L138 @,
- cmp r3, #0 @ _6,
- beq .L137 @,
- .L136:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:274: kprobes_inc_nmissed_count(p);
- mov r0, r4 @, p
- bl kprobes_inc_nmissed_count @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:194: kcb->prev_kprobe.kp = kprobe_running();
- ldr r3, [r9] @ current_kprobe, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- add r0, r4, #56 @ _116, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:194: kcb->prev_kprobe.kp = kprobe_running();
- str r3, [r6, #4] @ current_kprobe, kprobe_ctlblk.prev_kprobe.kp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:195: kcb->prev_kprobe.status = kcb->kprobe_status;
- ldr r3, [r6] @ kprobe_ctlblk.kprobe_status, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:206: __this_cpu_write(current_kprobe, p);
- str r4, [r9] @ p, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:195: kcb->prev_kprobe.status = kcb->kprobe_status;
- str r3, [r6, #8] @ kprobe_ctlblk.kprobe_status, kprobe_ctlblk.prev_kprobe.status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:277: kcb->kprobe_status = KPROBE_REENTER;
- mov r3, #4 @ tmp326,
- str r3, [r6] @ tmp326, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- lsr r3, r0, #3 @ tmp327, _116,
- add r3, r3, #1593835520 @ tmp329, tmp327,
- ldrsb r2, [r3] @ _120, *_119
- and r3, r0, #7 @ tmp330, _116,
- add r3, r3, #3 @ tmp334, tmp330,
- cmp r3, r2 @ tmp340, _120
- movlt r3, #0 @ tmp340,
- movge r3, #1 @ tmp340,
- cmp r2, #0 @ _120,
- moveq r3, #0 @ tmp340,
- cmp r3, #0 @ tmp340,
- bne .L194 @,
- .L140:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- add r0, r4, #40 @ _127, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- ldr r7, [r4, #56] @ _34, p_19->ainsn.insn_singlestep
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- lsr r3, r0, #3 @ tmp341, _127,
- add r3, r3, #1593835520 @ tmp343, tmp341,
- ldrsb r2, [r3] @ _131, *_130
- and r3, r0, #7 @ tmp344, _127,
- add r3, r3, #3 @ tmp348, tmp344,
- cmp r3, r2 @ tmp354, _131
- movlt r3, #0 @ tmp354,
- movge r3, #1 @ tmp354,
- cmp r2, #0 @ _131,
- moveq r3, #0 @ tmp354,
- cmp r3, #0 @ tmp354,
- bne .L195 @,
- .L141:
- mov r2, r5 @, regs
- ldr r0, [r4, #40] @, p_19->opcode
- add r1, r4, #44 @, p,
- blx r7 @ _34
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:201: kcb->kprobe_status = kcb->prev_kprobe.status;
- ldrd r2, [r6, #4] @, tmp431,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:200: __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp);
- str r2, [r9] @ kprobe_ctlblk.prev_kprobe.kp, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:201: kcb->kprobe_status = kcb->prev_kprobe.status;
- str r3, [r6] @ kprobe_ctlblk.prev_kprobe.status, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:320: }
- sub sp, fp, #40 @,,
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} @
- .L138:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:269: switch (kcb->kprobe_status) {
- cmp r3, #4 @ _6,
- beq .L196 @,
- .L137:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:288: BUG();
- .syntax divided
- @ 288 "/git/arm-soc/arch/arm/probes/kprobes/core.c" 1
- .long ((0xe7f001f2) & 0xFFFFFFFF)
- @ 0 "" 2
- .arm
- .syntax unified
- .L135:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:293: kcb->kprobe_status = KPROBE_HIT_ACTIVE;
- ldr r6, .L201+4 @ tmp431,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- add r0, r4, #32 @ _138, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:293: kcb->kprobe_status = KPROBE_HIT_ACTIVE;
- mov r3, #1 @ tmp366,
- str r3, [r6] @ tmp366, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- lsr r3, r0, #3 @ tmp367, _138,
- add r3, r3, #1593835520 @ tmp369, tmp367,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:206: __this_cpu_write(current_kprobe, p);
- str r4, [r9] @ p, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- ldrsb r2, [r3] @ _142, *_141
- and r3, r0, #7 @ tmp370, _138,
- add r3, r3, #3 @ tmp374, tmp370,
- cmp r3, r2 @ tmp380, _142
- movlt r3, #0 @ tmp380,
- movge r3, #1 @ tmp380,
- cmp r2, #0 @ _142,
- moveq r3, #0 @ tmp380,
- cmp r3, #0 @ tmp380,
- bne .L197 @,
- .L142:
- ldr r3, [r4, #32] @ _7, p_19->pre_handler
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- cmp r3, #0 @ _7,
- beq .L149 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- mov r1, r5 @, regs
- mov r0, r4 @, p
- blx r3 @ _7
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- cmp r0, #0 @ tmp438,
- bne .L150 @,
- .L149:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- add r0, r4, #56 @ _149, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:303: kcb->kprobe_status = KPROBE_HIT_SS;
- mov r3, #2 @ tmp382,
- str r3, [r6] @ tmp382, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- lsr r3, r0, #3 @ tmp383, _149,
- add r3, r3, #1593835520 @ tmp385, tmp383,
- ldrsb r2, [r3] @ _153, *_152
- and r3, r0, #7 @ tmp386, _149,
- add r3, r3, #3 @ tmp390, tmp386,
- cmp r3, r2 @ tmp396, _153
- movlt r3, #0 @ tmp396,
- movge r3, #1 @ tmp396,
- cmp r2, #0 @ _153,
- moveq r3, #0 @ tmp396,
- cmp r3, #0 @ tmp396,
- bne .L198 @,
- .L144:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- add r0, r4, #40 @ _160, p,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- ldr r7, [r4, #56] @ _39, p_19->ainsn.insn_singlestep
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- lsr r3, r0, #3 @ tmp397, _160,
- add r3, r3, #1593835520 @ tmp399, tmp397,
- ldrsb r2, [r3] @ _164, *_163
- and r3, r0, #7 @ tmp400, _160,
- add r3, r3, #3 @ tmp404, tmp400,
- cmp r3, r2 @ tmp410, _164
- movlt r3, #0 @ tmp410,
- movge r3, #1 @ tmp410,
- cmp r2, #0 @ _164,
- moveq r3, #0 @ tmp410,
- cmp r3, #0 @ tmp410,
- bne .L199 @,
- .L145:
- ldr r0, [r4, #40] @, p_19->opcode
- mov r2, r5 @, regs
- add r1, r4, #44 @, p,
- blx r7 @ _39
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:305: if (p->post_handler) {
- add r0, r4, #36 @ _171, p,
- lsr r3, r0, #3 @ tmp413, _171,
- add r3, r3, #1593835520 @ tmp415, tmp413,
- ldrsb r2, [r3] @ _175, *_174
- and r3, r0, #7 @ tmp416, _171,
- add r3, r3, #3 @ tmp420, tmp416,
- cmp r3, r2 @ tmp426, _175
- movlt r3, #0 @ tmp426,
- movge r3, #1 @ tmp426,
- cmp r2, #0 @ _175,
- moveq r3, #0 @ tmp426,
- cmp r3, #0 @ tmp426,
- bne .L200 @,
- .L146:
- ldr r3, [r4, #36] @ _9, p_19->post_handler
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:305: if (p->post_handler) {
- cmp r3, #0 @ _9,
- beq .L150 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:306: kcb->kprobe_status = KPROBE_HIT_SSDONE;
- mov r2, #8 @ tmp428,
- str r2, [r6] @ tmp428, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:307: p->post_handler(p, regs, 0);
- mov r1, r5 @, regs
- mov r0, r4 @, p
- mov r2, #0 @,
- blx r3 @ _9
- .L150:
- @ /git/arm-soc/include/linux/kprobes.h:378: __this_cpu_write(current_kprobe, NULL);
- mov r3, #0 @ tmp430,
- str r3, [r9] @ tmp430, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:320: }
- sub sp, fp, #40 @,,
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc} @
- .L190:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:255: p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc);
- mov r0, r8 @, _54
- bl __asan_report_load4_noabort @
- b .L129 @
- .L192:
- str r3, [fp, #-48] @ _3, %sfp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- bl __asan_report_load4_noabort @
- ldr r3, [fp, #-48] @ _3, %sfp
- b .L132 @
- .L191:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:259: if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
- bl __asan_report_load4_noabort @
- b .L131 @
- .L193:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:219: regs->ARM_pc += 4;
- mov r0, r8 @, _54
- bl __asan_report_load4_noabort @
- b .L134 @
- .L197:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:302: if (!p->pre_handler || !p->pre_handler(p, regs)) {
- bl __asan_report_load4_noabort @
- b .L142 @
- .L194:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- bl __asan_report_load4_noabort @
- b .L140 @
- .L195:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- bl __asan_report_load4_noabort @
- b .L141 @
- .L199:
- bl __asan_report_load4_noabort @
- b .L145 @
- .L198:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:226: p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs);
- bl __asan_report_load4_noabort @
- b .L144 @
- .L200:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:305: if (p->post_handler) {
- bl __asan_report_load4_noabort @
- b .L146 @
- .L196:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:283: pr_warn("Failed to recover from reentered kprobes.\n");
- ldr r0, .L201+8 @,
- bl _printk @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:284: dump_kprobe(p);
- mov r0, r4 @, p
- bl dump_kprobe @
- b .L137 @
- .L202:
- .align 2
- .L201:
- .word current_kprobe
- .word kprobe_ctlblk
- .word .LANCHOR1
- .size kprobe_handler, .-kprobe_handler
- .align 2
- .p2align 6,,63
- .syntax unified
- .arm
- .fpu softvfp
- .type kprobe_trap_handler, %function
- kprobe_trap_handler:
- .LASANPC3677:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:323: {
- mov r4, r0 @ regs, tmp132
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:29: asm volatile(
- .syntax divided
- @ 29 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- mrs r5, cpsr @ arch_local_irq_save @ flags
- cpsid i
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:325: local_irq_save(flags);
- .arm
- .syntax unified
- tst r5, #128 @ flags,
- beq .L208 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:326: kprobe_handler(regs);
- bl kprobe_handler @
- .L206:
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:159: asm volatile(
- .syntax divided
- @ 159 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- mrs r2, cpsr @ local_save_flags @ flags
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:327: local_irq_restore(flags);
- .arm
- .syntax unified
- mov r3, #0 @,
- ands r4, r2, #128 @ _8, flags,
- moveq r1, #1 @,
- movne r1, r3 @,
- ldr r0, .L210 @,
- mov r2, r3 @,
- bl ftrace_likely_update @
- cmp r4, #0 @ _8,
- beq .L209 @,
- .L205:
- @ /git/arm-soc/arch/arm/include/asm/irqflags.h:171: asm volatile(
- .syntax divided
- @ 171 "/git/arm-soc/arch/arm/include/asm/irqflags.h" 1
- msr cpsr_c, r5 @ local_irq_restore @ flags
- @ 0 "" 2
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:329: }
- .arm
- .syntax unified
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, fp, sp, pc} @
- .L208:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:325: local_irq_save(flags);
- bl trace_hardirqs_off @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:326: kprobe_handler(regs);
- mov r0, r4 @, regs
- bl kprobe_handler @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:327: local_irq_restore(flags);
- bl trace_hardirqs_on @
- b .L206 @
- .L209:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:327: local_irq_restore(flags);
- bl warn_bogus_irq_restore @
- b .L205 @
- .L211:
- .align 2
- .L210:
- .word .LANCHOR0+24
- .size kprobe_trap_handler, .-kprobe_trap_handler
- .align 2
- .p2align 6,,63
- .global kprobe_fault_handler
- .syntax unified
- .arm
- .fpu softvfp
- .type kprobe_fault_handler, %function
- kprobe_fault_handler:
- .LASANPC3678:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:336: switch (kcb->kprobe_status) {
- ldr r5, .L226 @ tmp189,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:332: {
- mov r4, r0 @ regs, tmp191
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:336: switch (kcb->kprobe_status) {
- ldr r6, [r5] @ _1, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:336: switch (kcb->kprobe_status) {
- sub r3, r6, #2 @ tmp149, _1,
- bics r3, r3, #2 @ tmp193, tmp149,
- beq .L223 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:356: }
- mov r0, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} @
- .L223:
- @ /git/arm-soc/include/linux/kprobes.h:373: return __this_cpu_read(current_kprobe);
- ldr r7, .L226+4 @ tmp190,
- ldr r8, [r7] @ pscr_ret__, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- add r0, r8, #20 @ _20, pscr_ret__,
- and r3, r0, #7 @ tmp155, _20,
- lsr r2, r0, #3 @ tmp152, _20,
- add r2, r2, #1593835520 @ tmp154, tmp152,
- add r3, r3, #3 @ tmp159, tmp155,
- ldrsb r2, [r2] @ _24, *_23
- cmp r3, r2 @ tmp165, _24
- movlt r3, #0 @ tmp165,
- movge r3, #1 @ tmp165,
- cmp r2, #0 @ _24,
- moveq r3, #0 @ tmp165,
- cmp r3, #0 @ tmp165,
- bne .L224 @,
- .L214:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- add r0, r4, #60 @ _31, regs,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- ldr r8, [r8, #20] @ _3, pscr_ret___7->addr
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- lsr r3, r0, #3 @ tmp166, _31,
- add r3, r3, #1593835520 @ tmp168, tmp166,
- ldrsb r2, [r3] @ _35, *_34
- and r3, r0, #7 @ tmp169, _31,
- add r3, r3, #3 @ tmp173, tmp169,
- cmp r3, r2 @ tmp179, _35
- movlt r3, #0 @ tmp179,
- movge r3, #1 @ tmp179,
- cmp r2, #0 @ _35,
- moveq r3, #0 @ tmp179,
- cmp r3, #0 @ tmp179,
- bne .L225 @,
- .L215:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:347: if (kcb->kprobe_status == KPROBE_REENTER) {
- cmp r6, #4 @ _1,
- @ /git/arm-soc/include/linux/kprobes.h:378: __this_cpu_write(current_kprobe, NULL);
- movne r3, #0 @ tmp187,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:201: kcb->kprobe_status = kcb->prev_kprobe.status;
- ldrdeq r2, [r5, #4] @, tmp189,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:356: }
- mov r0, #0 @,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- str r8, [r4, #60] @ _3, regs_8(D)->uregs[15]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:200: __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp);
- streq r2, [r7] @ kprobe_ctlblk.prev_kprobe.kp, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:201: kcb->kprobe_status = kcb->prev_kprobe.status;
- streq r3, [r5] @ kprobe_ctlblk.prev_kprobe.status, kprobe_ctlblk.kprobe_status
- @ /git/arm-soc/include/linux/kprobes.h:378: __this_cpu_write(current_kprobe, NULL);
- strne r3, [r7] @ tmp187, current_kprobe
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:356: }
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc} @
- .L225:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- bl __asan_report_store4_noabort @
- b .L215 @
- .L224:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:346: regs->ARM_pc = (long)cur->addr;
- bl __asan_report_load4_noabort @
- b .L214 @
- .L227:
- .align 2
- .L226:
- .word kprobe_ctlblk
- .word current_kprobe
- .size kprobe_fault_handler, .-kprobe_fault_handler
- .align 2
- .p2align 6,,63
- .global kprobe_exceptions_notify
- .syntax unified
- .arm
- .fpu softvfp
- .type kprobe_exceptions_notify, %function
- kprobe_exceptions_notify:
- .LASANPC3679:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:366: }
- mov r0, #0 @,
- mov ip, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .size kprobe_exceptions_notify, .-kprobe_exceptions_notify
- .align 2
- .p2align 6,,63
- .syntax unified
- .arm
- .fpu softvfp
- .type trampoline_handler, %function
- trampoline_handler:
- .LASANPC3681:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:416: {
- mov r4, r0 @ regs, tmp145
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:417: return (void *)kretprobe_trampoline_handler(regs, (void *)regs->ARM_fp);
- add r0, r0, #44 @ _12, regs,
- and r3, r0, #7 @ tmp133, _12,
- lsr r2, r0, #3 @ tmp130, _12,
- add r2, r2, #1593835520 @ tmp132, tmp130,
- add r3, r3, #3 @ tmp137, tmp133,
- ldrsb r2, [r2] @ _16, *_15
- cmp r3, r2 @ tmp143, _16
- movlt r3, #0 @ tmp143,
- movge r3, #1 @ tmp143,
- cmp r2, #0 @ _16,
- moveq r3, #0 @ tmp143,
- cmp r3, #0 @ tmp143,
- bne .L234 @,
- .L230:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:417: return (void *)kretprobe_trampoline_handler(regs, (void *)regs->ARM_fp);
- ldr r5, [r4, #44] @ _2, regs_4(D)->uregs[11]
- @ /git/arm-soc/include/linux/kprobes.h:220: kprobe_busy_begin();
- bl kprobe_busy_begin @
- @ /git/arm-soc/include/linux/kprobes.h:221: ret = __kretprobe_trampoline_handler(regs, frame_pointer);
- mov r1, r5 @, _2
- mov r0, r4 @, regs
- bl __kretprobe_trampoline_handler @
- mov r4, r0 @ ret, tmp146
- @ /git/arm-soc/include/linux/kprobes.h:222: kprobe_busy_end();
- bl kprobe_busy_end @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:418: }
- mov r0, r4 @, ret
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {r4, r5, fp, sp, pc} @
- .L234:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:417: return (void *)kretprobe_trampoline_handler(regs, (void *)regs->ARM_fp);
- bl __asan_report_load4_noabort @
- b .L230 @
- .size trampoline_handler, .-trampoline_handler
- .align 2
- .p2align 6,,63
- .global arch_prepare_kretprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_prepare_kretprobe, %function
- arch_prepare_kretprobe:
- .LASANPC3682:
- @ args = 0, pretend = 0, frame = 8
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {r4, r5, fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- sub sp, sp, #8 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- add ip, r1, #56 @ _20, regs,
- and r3, ip, #7 @ tmp171, _20,
- lsr r2, ip, #3 @ tmp168, _20,
- add r2, r2, #1593835520 @ tmp170, tmp168,
- add r3, r3, #3 @ tmp175, tmp171,
- ldrsb r2, [r2] @ _24, *_23
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:422: {
- mov r4, r0 @ ri, tmp225
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- cmp r3, r2 @ tmp181, _24
- movlt r3, #0 @ tmp181,
- movge r3, #1 @ tmp181,
- cmp r2, #0 @ _24,
- moveq r3, #0 @ tmp181,
- cmp r3, #0 @ tmp181,
- bne .L252 @,
- .L236:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- add r0, r4, #16 @ _31, ri,
- and r3, r0, #7 @ tmp185, _31,
- lsr r2, r0, #3 @ tmp182, _31,
- add r2, r2, #1593835520 @ tmp184, tmp182,
- add r3, r3, #3 @ tmp189, tmp185,
- ldrsb r2, [r2] @ _35, *_34
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- ldr r5, [r1, #56] @ _2, regs_7(D)->uregs[14]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- cmp r3, r2 @ tmp195, _35
- movlt r3, #0 @ tmp195,
- movge r3, #1 @ tmp195,
- cmp r2, #0 @ _35,
- moveq r3, #0 @ tmp195,
- cmp r3, #0 @ tmp195,
- bne .L253 @,
- .L237:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- add r0, r1, #44 @ _42, regs,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- str r5, [r4, #16] @ _2, ri_8(D)->ret_addr
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- lsr r2, r0, #3 @ tmp196, _42,
- add r2, r2, #1593835520 @ tmp198, tmp196,
- and r3, r0, #7 @ tmp199, _42,
- ldrsb r2, [r2] @ _46, *_45
- add r3, r3, #3 @ tmp203, tmp199,
- cmp r3, r2 @ tmp209, _46
- movlt r3, #0 @ tmp209,
- movge r3, #1 @ tmp209,
- cmp r2, #0 @ _46,
- moveq r3, #0 @ tmp209,
- cmp r3, #0 @ tmp209,
- bne .L254 @,
- .L238:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- add r0, r4, #20 @ _53, ri,
- and r3, r0, #7 @ tmp213, _53,
- lsr r2, r0, #3 @ tmp210, _53,
- add r2, r2, #1593835520 @ tmp212, tmp210,
- add r3, r3, #3 @ tmp217, tmp213,
- ldrsb r2, [r2] @ _57, *_56
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- ldr r5, [r1, #44] @ _4, regs_7(D)->uregs[11]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- cmp r3, r2 @ tmp223, _57
- movlt r3, #0 @ tmp223,
- movge r3, #1 @ tmp223,
- cmp r2, #0 @ _57,
- moveq r3, #0 @ tmp223,
- cmp r3, #0 @ tmp223,
- bne .L255 @,
- .L239:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:427: regs->ARM_lr = (unsigned long)&__kretprobe_trampoline;
- ldr r3, .L256 @ tmp224,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- str r5, [r4, #20] @ _4, ri_8(D)->fp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:427: regs->ARM_lr = (unsigned long)&__kretprobe_trampoline;
- str r3, [r1, #56] @ tmp224, regs_7(D)->uregs[14]
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:428: }
- sub sp, fp, #20 @,,
- mov r0, #0 @,
- mov r1, #0 @,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {r4, r5, fp, sp, pc} @
- .L252:
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- mov r0, ip @, _20
- str r1, [fp, #-24] @ regs, %sfp
- bl __asan_report_load4_noabort @
- ldr r1, [fp, #-24] @ regs, %sfp
- b .L236 @
- .L255:
- str r1, [fp, #-24] @ regs, %sfp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- bl __asan_report_store4_noabort @
- ldr r1, [fp, #-24] @ regs, %sfp
- b .L239 @
- .L254:
- str r1, [fp, #-24] @ regs, %sfp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:424: ri->fp = (void *)regs->ARM_fp;
- bl __asan_report_load4_noabort @
- ldr r1, [fp, #-24] @ regs, %sfp
- b .L238 @
- .L253:
- str r1, [fp, #-24] @ regs, %sfp
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:423: ri->ret_addr = (kprobe_opcode_t *)regs->ARM_lr;
- bl __asan_report_store4_noabort @
- ldr r1, [fp, #-24] @ regs, %sfp
- b .L237 @
- .L257:
- .align 2
- .L256:
- .word __kretprobe_trampoline
- .size arch_prepare_kretprobe, .-arch_prepare_kretprobe
- .align 2
- .p2align 6,,63
- .global arch_trampoline_kprobe
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_trampoline_kprobe, %function
- arch_trampoline_kprobe:
- .LASANPC3683:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:433: }
- mov r0, #0 @,
- mov ip, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .size arch_trampoline_kprobe, .-arch_trampoline_kprobe
- .section .init.text,"ax",%progbits
- .align 2
- .global arch_init_kprobes
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_init_kprobes, %function
- arch_init_kprobes:
- .LASANPC3684:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:467: arm_probes_decode_init();
- bl arm_probes_decode_init @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:472: register_undef_hook(&kprobes_arm_break_hook);
- ldr r0, .L260 @,
- bl register_undef_hook @
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:475: }
- mov r0, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L261:
- .align 2
- .L260:
- .word .LANCHOR2
- .size arch_init_kprobes, .-arch_init_kprobes
- .text
- .align 2
- .p2align 6,,63
- .global arch_within_kprobe_blacklist
- .syntax unified
- .arm
- .fpu softvfp
- .type arch_within_kprobe_blacklist, %function
- arch_within_kprobe_blacklist:
- .LASANPC3685:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- @ /git/arm-soc/arch/arm/include/asm/traps.h:27: return ptr >= (unsigned long)&__irqentry_text_start &&
- ldr r3, .L273 @ tmp121,
- cmp r0, r3 @ addr, tmp121
- bcc .L263 @,
- ldr r3, .L273+4 @ tmp122,
- cmp r0, r3 @ addr, tmp122
- bcs .L263 @,
- .L271:
- mov r0, #1 @ <retval>,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L263:
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- ldr r3, .L273+8 @ tmp123,
- cmp r0, r3 @ addr, tmp123
- bcc .L265 @,
- ldr r3, .L273+12 @ tmp125,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- add r2, r0, #1 @ tmp124, addr,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- cmp r2, r3 @ tmp124, tmp125
- bls .L271 @,
- .L265:
- ldr r3, .L273+16 @ tmp134,
- cmp r0, r3 @ addr, tmp134
- bcs .L268 @,
- .L266:
- ldr r3, .L273+20 @ tmp133,
- cmp r0, r3 @ addr, tmp133
- bcs .L267 @,
- mov r0, #0 @ <retval>,
- @ /git/arm-soc/arch/arm/probes/kprobes/core.c:485: }
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L268:
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- ldr r3, .L273+24 @ tmp127,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- add r2, r0, #1 @ tmp126, addr,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- cmp r2, r3 @ tmp126, tmp127
- bls .L271 @,
- b .L266 @
- .L267:
- ldr r3, .L273+28 @ tmp130,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- add r0, r0, #1 @ tmp128, addr,
- @ /git/arm-soc/include/asm-generic/sections.h:81: return virt >= begin && virt + size <= end;
- cmp r0, r3 @ tmp128, tmp130
- movhi r0, #0 @ <retval>,
- movls r0, #1 @ <retval>,
- mov r2, #0 @,
- mov r3, #0 @,
- mov ip, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L274:
- .align 2
- .L273:
- .word __irqentry_text_start
- .word __irqentry_text_end
- .word __entry_text_start
- .word __entry_text_end
- .word __idmap_text_start
- .word __kprobes_text_start
- .word __idmap_text_end
- .word __kprobes_text_end
- .size arch_within_kprobe_blacklist, .-arch_within_kprobe_blacklist
- .global __pcpu_unique_kprobe_ctlblk
- .global __pcpu_unique_current_kprobe
- .weak kprobe_ctlblk
- .global __pcpu_scope_kprobe_ctlblk
- .weak current_kprobe
- .global __pcpu_scope_current_kprobe
- .section .rodata.str1.4
- .align 2
- .LC5:
- .ascii "/git/arm-soc/arch/arm/probes/kprobes/core.c\000"
- .align 2
- .LC6:
- .ascii "/git/arm-soc/include/linux/stop_machine.h\000"
- .align 2
- .LC7:
- .ascii "__func__\000"
- .align 2
- .LC8:
- .ascii "kprobes_arm_break_hook\000"
- .align 2
- .LC9:
- .ascii "*.LC3\000"
- .align 2
- .LC10:
- .ascii "*.LC2\000"
- .align 2
- .LC11:
- .ascii "*.LC4\000"
- .section .text.exit,"ax",%progbits
- .align 2
- .p2align 6,,63
- .syntax unified
- .arm
- .fpu softvfp
- .type _sub_D_65535_0, %function
- _sub_D_65535_0:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- ldr r0, .L276 @,
- mov r1, #6 @,
- bl __asan_unregister_globals @
- mov r0, #0 @,
- mov r1, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L277:
- .align 2
- .L276:
- .word .LANCHOR2+104
- .size _sub_D_65535_0, .-_sub_D_65535_0
- .section .fini_array,"aw",%fini_array
- .align 2
- .word _sub_D_65535_0(target1)
- .section .text.startup,"ax",%progbits
- .align 2
- .p2align 6,,63
- .syntax unified
- .arm
- .fpu softvfp
- .type _sub_I_65535_1, %function
- _sub_I_65535_1:
- @ args = 0, pretend = 0, frame = 0
- @ frame_needed = 1, uses_anonymous_args = 0
- mov ip, sp @,
- push {fp, ip, lr, pc} @
- sub fp, ip, #4 @,,
- ldr r0, .L279 @,
- mov r1, #6 @,
- bl __asan_register_globals @
- mov r0, #0 @,
- mov r1, #0 @,
- mov ip, #0 @,
- mov lr, #0 @,
- ldmfd sp, {fp, sp, pc} @
- .L280:
- .align 2
- .L279:
- .word .LANCHOR2+104
- .size _sub_I_65535_1, .-_sub_I_65535_1
- .section .init_array,"aw",%init_array
- .align 2
- .word _sub_I_65535_1(target1)
- .section .rodata
- .align 5
- .set .LANCHOR1,. + 0
- .LC2:
- .ascii "\0014kprobes: Failed to recover from reentered kpro"
- .ascii "bes.\012\000"
- .space 42
- .type __func__.0, %object
- .size __func__.0, 20
- __func__.0:
- .ascii "kprobe_trap_handler\000"
- .space 44
- .type __func__.1, %object
- .size __func__.1, 24
- __func__.1:
- .ascii "stop_machine_cpuslocked\000"
- .space 40
- .LC3:
- .ascii "arch/arm/probes/kprobes/core.c\000"
- .space 33
- .LC4:
- .ascii "include/linux/stop_machine.h\000"
- .space 35
- .data
- .align 5
- .set .LANCHOR2,. + 0
- .type kprobes_arm_break_hook, %object
- .size kprobes_arm_break_hook, 28
- kprobes_arm_break_hook:
- @ instr_mask:
- .space 8
- .word 268435455
- @ instr_val:
- .word 133169656
- @ cpsr_mask:
- .word 31
- @ cpsr_val:
- .word 19
- @ fn:
- .word kprobe_trap_handler
- .space 36
- .type .LASANLOC1, %object
- .size .LASANLOC1, 12
- .LASANLOC1:
- @ __filename:
- .word .LC5
- @ __line:
- .word 327
- @ __column:
- .word 2
- .type .LASANLOC2, %object
- .size .LASANLOC2, 12
- .LASANLOC2:
- @ __filename:
- .word .LC6
- @ __line:
- .word 138
- @ __column:
- .word 2
- .type .LASANLOC3, %object
- .size .LASANLOC3, 12
- .LASANLOC3:
- @ __filename:
- .word .LC5
- @ __line:
- .word 455
- @ __column:
- .word 26
- .space 4
- .type .LASAN0, %object
- .size .LASAN0, 192
- .LASAN0:
- @ __beg:
- .word __func__.0
- @ __size:
- .word 20
- @ __size_with_redzone:
- .word 64
- @ __name:
- .word .LC7
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word .LASANLOC1
- @ __odr_indicator:
- .word 0
- @ __beg:
- .word __func__.1
- @ __size:
- .word 24
- @ __size_with_redzone:
- .word 64
- @ __name:
- .word .LC7
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word .LASANLOC2
- @ __odr_indicator:
- .word 0
- @ __beg:
- .word kprobes_arm_break_hook
- @ __size:
- .word 28
- @ __size_with_redzone:
- .word 64
- @ __name:
- .word .LC8
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word .LASANLOC3
- @ __odr_indicator:
- .word 0
- @ __beg:
- .word .LC3
- @ __size:
- .word 31
- @ __size_with_redzone:
- .word 64
- @ __name:
- .word .LC9
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word 0
- @ __odr_indicator:
- .word 0
- @ __beg:
- .word .LC2
- @ __size:
- .word 54
- @ __size_with_redzone:
- .word 96
- @ __name:
- .word .LC10
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word 0
- @ __odr_indicator:
- .word 0
- @ __beg:
- .word .LC4
- @ __size:
- .word 29
- @ __size_with_redzone:
- .word 64
- @ __name:
- .word .LC11
- @ __module_name:
- .word .LC5
- @ __has_dynamic_init:
- .word 0
- @ __location:
- .word 0
- @ __odr_indicator:
- .word 0
- .space 32
- .section .data,"aw"
- .align 2
- .type kprobe_ctlblk, %object
- .size kprobe_ctlblk, 12
- kprobe_ctlblk:
- .space 12
- .type current_kprobe, %object
- .size current_kprobe, 4
- current_kprobe:
- .space 4
- .section .discard,"aw"
- .type __pcpu_unique_kprobe_ctlblk, %object
- .size __pcpu_unique_kprobe_ctlblk, 1
- __pcpu_unique_kprobe_ctlblk:
- .space 1
- .type __pcpu_unique_current_kprobe, %object
- .size __pcpu_unique_current_kprobe, 1
- __pcpu_unique_current_kprobe:
- .space 1
- .type __pcpu_scope_kprobe_ctlblk, %object
- .size __pcpu_scope_kprobe_ctlblk, 1
- __pcpu_scope_kprobe_ctlblk:
- .space 1
- .type __pcpu_scope_current_kprobe, %object
- .size __pcpu_scope_current_kprobe, 1
- __pcpu_scope_current_kprobe:
- .space 1
- .section _ftrace_annotated_branch,"aw"
- .align 2
- .set .LANCHOR0,. + 0
- .type ______f.3, %object
- .size ______f.3, 24
- ______f.3:
- @ data:
- @ func:
- .word __func__.1
- @ file:
- .word .LC4
- @ line:
- .word 138
- .space 8
- .space 4
- .type ______f.2, %object
- .size ______f.2, 24
- ______f.2:
- @ data:
- @ func:
- .word __func__.0
- @ file:
- .word .LC3
- @ line:
- .word 327
- .space 8
- .space 4
- .ident "GCC: (GNU) 11.1.0"
- .section .note.GNU-stack,"",%progbits
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement