/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2023 Rockchip Electronics Co. Ltd. */ .arch armv8-a .file "fixup_fault.c" .text .align 2 .p2align 3,,7 .type get_data, %function get_data: cmp w0, 31 hint 25 // paciasp bls .L39 mov x0, 0 .L1: hint 29 // autiasp ret .p2align 2,,3 .L39: adrp x2, .L4 add x2, x2, :lo12:.L4 ldrh w0, [x2,w0,uxtw #1] adr x2, .Lrtx4 add x0, x2, w0, sxth #2 br x0 .Lrtx4: .section .rodata .align 0 .align 2 .L4: .2byte (.L35 - .Lrtx4) / 4 .2byte (.L34 - .Lrtx4) / 4 .2byte (.L33 - .Lrtx4) / 4 .2byte (.L32 - .Lrtx4) / 4 .2byte (.L31 - .Lrtx4) / 4 .2byte (.L30 - .Lrtx4) / 4 .2byte (.L29 - .Lrtx4) / 4 .2byte (.L28 - .Lrtx4) / 4 .2byte (.L27 - .Lrtx4) / 4 .2byte (.L26 - .Lrtx4) / 4 .2byte (.L25 - .Lrtx4) / 4 .2byte (.L24 - .Lrtx4) / 4 .2byte (.L23 - .Lrtx4) / 4 .2byte (.L22 - .Lrtx4) / 4 .2byte (.L21 - .Lrtx4) / 4 .2byte (.L20 - .Lrtx4) / 4 .2byte (.L19 - .Lrtx4) / 4 .2byte (.L18 - .Lrtx4) / 4 .2byte (.L17 - .Lrtx4) / 4 .2byte (.L16 - .Lrtx4) / 4 .2byte (.L15 - .Lrtx4) / 4 .2byte (.L14 - .Lrtx4) / 4 .2byte (.L13 - .Lrtx4) / 4 .2byte (.L12 - .Lrtx4) / 4 .2byte (.L11 - .Lrtx4) / 4 .2byte (.L10 - .Lrtx4) / 4 .2byte (.L9 - .Lrtx4) / 4 .2byte (.L8 - .Lrtx4) / 4 .2byte (.L7 - .Lrtx4) / 4 .2byte (.L6 - .Lrtx4) / 4 .2byte (.L5 - .Lrtx4) / 4 .2byte (.L3 - .Lrtx4) / 4 .text .p2align 2,,3 .L5: #APP cbnz w1, 1f mov x0, v30.d[0] b 2f 1: mov x0, v30.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L6: #APP cbnz w1, 1f mov x0, v29.d[0] b 2f 1: mov x0, v29.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L7: #APP cbnz w1, 1f mov x0, v28.d[0] b 2f 1: mov x0, v28.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L8: #APP cbnz w1, 1f mov x0, v27.d[0] b 2f 1: mov x0, v27.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L9: #APP cbnz w1, 1f mov x0, v26.d[0] b 2f 1: mov x0, v26.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L10: #APP cbnz w1, 1f mov x0, v25.d[0] b 2f 1: mov x0, v25.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L11: #APP cbnz w1, 1f mov x0, v24.d[0] b 2f 1: mov x0, v24.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L12: #APP cbnz w1, 1f mov x0, v23.d[0] b 2f 1: mov x0, v23.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L13: #APP cbnz w1, 1f mov x0, v22.d[0] b 2f 1: mov x0, v22.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L14: #APP cbnz w1, 1f mov x0, v21.d[0] b 2f 1: mov x0, v21.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L15: #APP cbnz w1, 1f mov x0, v20.d[0] b 2f 1: mov x0, v20.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L16: #APP cbnz w1, 1f mov x0, v19.d[0] b 2f 1: mov x0, v19.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L17: #APP cbnz w1, 1f mov x0, v18.d[0] b 2f 1: mov x0, v18.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L18: #APP cbnz w1, 1f mov x0, v17.d[0] b 2f 1: mov x0, v17.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L19: #APP cbnz w1, 1f mov x0, v16.d[0] b 2f 1: mov x0, v16.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L20: #APP cbnz w1, 1f mov x0, v15.d[0] b 2f 1: mov x0, v15.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L21: #APP cbnz w1, 1f mov x0, v14.d[0] b 2f 1: mov x0, v14.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L22: #APP cbnz w1, 1f mov x0, v13.d[0] b 2f 1: mov x0, v13.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L23: #APP cbnz w1, 1f mov x0, v12.d[0] b 2f 1: mov x0, v12.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L24: #APP cbnz w1, 1f mov x0, v11.d[0] b 2f 1: mov x0, v11.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L25: #APP cbnz w1, 1f mov x0, v10.d[0] b 2f 1: mov x0, v10.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L26: #APP cbnz w1, 1f mov x0, v9.d[0] b 2f 1: mov x0, v9.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L27: #APP cbnz w1, 1f mov x0, v8.d[0] b 2f 1: mov x0, v8.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L28: #APP cbnz w1, 1f mov x0, v7.d[0] b 2f 1: mov x0, v7.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L29: #APP cbnz w1, 1f mov x0, v6.d[0] b 2f 1: mov x0, v6.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L30: #APP cbnz w1, 1f mov x0, v5.d[0] b 2f 1: mov x0, v5.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L31: #APP cbnz w1, 1f mov x0, v4.d[0] b 2f 1: mov x0, v4.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L32: #APP cbnz w1, 1f mov x0, v3.d[0] b 2f 1: mov x0, v3.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L33: #APP cbnz w1, 1f mov x0, v2.d[0] b 2f 1: mov x0, v2.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L34: #APP cbnz w1, 1f mov x0, v1.d[0] b 2f 1: mov x0, v1.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L35: #APP cbnz w1, 1f mov x0, v0.d[0] b 2f 1: mov x0, v0.d[1] 2: // 0 "" 2 #NO_APP b .L1 .p2align 2,,3 .L3: #APP cbnz w1, 1f mov x0, v31.d[0] b 2f 1: mov x0, v31.d[1] 2: // 0 "" 2 #NO_APP b .L1 .size get_data, .-get_data .align 2 .p2align 3,,7 .type set_data, %function set_data: cmp w0, 31 hint 25 // paciasp bhi .L40 adrp x3, .L43 add x3, x3, :lo12:.L43 ldrh w0, [x3,w0,uxtw #1] adr x3, .Lrtx43 add x0, x3, w0, sxth #2 br x0 .Lrtx43: .section .rodata .align 0 .align 2 .L43: .2byte (.L74 - .Lrtx43) / 4 .2byte (.L73 - .Lrtx43) / 4 .2byte (.L72 - .Lrtx43) / 4 .2byte (.L71 - .Lrtx43) / 4 .2byte (.L70 - .Lrtx43) / 4 .2byte (.L69 - .Lrtx43) / 4 .2byte (.L68 - .Lrtx43) / 4 .2byte (.L67 - .Lrtx43) / 4 .2byte (.L66 - .Lrtx43) / 4 .2byte (.L65 - .Lrtx43) / 4 .2byte (.L64 - .Lrtx43) / 4 .2byte (.L63 - .Lrtx43) / 4 .2byte (.L62 - .Lrtx43) / 4 .2byte (.L61 - .Lrtx43) / 4 .2byte (.L60 - .Lrtx43) / 4 .2byte (.L59 - .Lrtx43) / 4 .2byte (.L58 - .Lrtx43) / 4 .2byte (.L57 - .Lrtx43) / 4 .2byte (.L56 - .Lrtx43) / 4 .2byte (.L55 - .Lrtx43) / 4 .2byte (.L54 - .Lrtx43) / 4 .2byte (.L53 - .Lrtx43) / 4 .2byte (.L52 - .Lrtx43) / 4 .2byte (.L51 - .Lrtx43) / 4 .2byte (.L50 - .Lrtx43) / 4 .2byte (.L49 - .Lrtx43) / 4 .2byte (.L48 - .Lrtx43) / 4 .2byte (.L47 - .Lrtx43) / 4 .2byte (.L46 - .Lrtx43) / 4 .2byte (.L45 - .Lrtx43) / 4 .2byte (.L44 - .Lrtx43) / 4 .2byte (.L42 - .Lrtx43) / 4 .text .p2align 2,,3 .L42: #APP cbnz w1, 1f mov v31.d[0], x2 b 2f 1: mov v31.d[1], x2 2: // 0 "" 2 #NO_APP .L40: hint 29 // autiasp ret .p2align 2,,3 .L44: #APP cbnz w1, 1f mov v30.d[0], x2 b 2f 1: mov v30.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L45: #APP cbnz w1, 1f mov v29.d[0], x2 b 2f 1: mov v29.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L46: #APP cbnz w1, 1f mov v28.d[0], x2 b 2f 1: mov v28.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L47: #APP cbnz w1, 1f mov v27.d[0], x2 b 2f 1: mov v27.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L48: #APP cbnz w1, 1f mov v26.d[0], x2 b 2f 1: mov v26.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L49: #APP cbnz w1, 1f mov v25.d[0], x2 b 2f 1: mov v25.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L50: #APP cbnz w1, 1f mov v24.d[0], x2 b 2f 1: mov v24.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L51: #APP cbnz w1, 1f mov v23.d[0], x2 b 2f 1: mov v23.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L52: #APP cbnz w1, 1f mov v22.d[0], x2 b 2f 1: mov v22.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L53: #APP cbnz w1, 1f mov v21.d[0], x2 b 2f 1: mov v21.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L54: #APP cbnz w1, 1f mov v20.d[0], x2 b 2f 1: mov v20.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L55: #APP cbnz w1, 1f mov v19.d[0], x2 b 2f 1: mov v19.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L56: #APP cbnz w1, 1f mov v18.d[0], x2 b 2f 1: mov v18.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L57: #APP cbnz w1, 1f mov v17.d[0], x2 b 2f 1: mov v17.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L58: #APP cbnz w1, 1f mov v16.d[0], x2 b 2f 1: mov v16.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L59: #APP cbnz w1, 1f mov v15.d[0], x2 b 2f 1: mov v15.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L60: #APP cbnz w1, 1f mov v14.d[0], x2 b 2f 1: mov v14.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L61: #APP cbnz w1, 1f mov v13.d[0], x2 b 2f 1: mov v13.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L62: #APP cbnz w1, 1f mov v12.d[0], x2 b 2f 1: mov v12.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L63: #APP cbnz w1, 1f mov v11.d[0], x2 b 2f 1: mov v11.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L64: #APP cbnz w1, 1f mov v10.d[0], x2 b 2f 1: mov v10.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L65: #APP cbnz w1, 1f mov v9.d[0], x2 b 2f 1: mov v9.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L66: #APP cbnz w1, 1f mov v8.d[0], x2 b 2f 1: mov v8.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L67: #APP cbnz w1, 1f mov v7.d[0], x2 b 2f 1: mov v7.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L68: #APP cbnz w1, 1f mov v6.d[0], x2 b 2f 1: mov v6.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L69: #APP cbnz w1, 1f mov v5.d[0], x2 b 2f 1: mov v5.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L70: #APP cbnz w1, 1f mov v4.d[0], x2 b 2f 1: mov v4.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L71: #APP cbnz w1, 1f mov v3.d[0], x2 b 2f 1: mov v3.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L72: #APP cbnz w1, 1f mov v2.d[0], x2 b 2f 1: mov v2.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L73: #APP cbnz w1, 1f mov v1.d[0], x2 b 2f 1: mov v1.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .p2align 2,,3 .L74: #APP cbnz w1, 1f mov v0.d[0], x2 b 2f 1: mov v0.d[1], x2 2: // 0 "" 2 #NO_APP b .L40 .size set_data, .-set_data .align 2 .p2align 3,,7 .type rk_align_wr, %function rk_align_wr: hint 25 // paciasp stp x29, x30, [sp, -48]! cmp w1, 4 mov x29, sp str x19, [sp, 16] mrs x19, sp_el0 ldr x4, [x19, 1368] str x4, [sp, 40] mov x4,0 beq .L77 bgt .L78 cmp w1, 1 beq .L79 cmp w1, 2 bne .L88 strh w2, [sp, 32] mov x3, 4294963200 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2] tst w2, 4194304 bne .L84 .L126: adrp x2, vabits_actual mov x3, 1 ldr x2, [x2, #:lo12:vabits_actual] lsl x3, x3, x2 .L84: sxtw x2, w1 cmp x0, x3 bcs .L85 add x8, sp, 32 mov x4, x0 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x5, sp_el0 // 0 "" 2 #NO_APP lsl x3, x0, 8 sub x8, x8, x0 ldr w0, [x5, 52] mov x13, x5 mov x12, x5 adrp x7, cpu_hwcaps mov w11, 0 ldr x1, [x5, 8] tbnz x0, 21, .L86 .p2align 3,,7 .L123: ldr x6, [x5] mov x0, x4 tbnz x6, 26, .L86 #APP // 79 "./arch/arm64/include/asm/uaccess.h" 1 adds x0, x0, 1 csel x1, xzr, x1, hi csinv x0, x0, xzr, cc sbcs xzr, x0, x1 cset x0, ls // 0 "" 2 #NO_APP cbz x0, .L88 .L124: and x0, x4, x3, asr 8 ldr x1, [x13, 8] #APP // 289 "./arch/arm64/include/asm/uaccess.h" 1 bics xzr, x0, x1 csel x9, x4, xzr, eq // 0 "" 2 // 297 "./arch/arm64/include/asm/uaccess.h" 1 hint #20 // 0 "" 2 #NO_APP ldrb w6, [x8, x4] #APP // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L89 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L89 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L91 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L92: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x0, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x0, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w1, w0, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w1, w0, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w1, .L121 .L94: ldr x1, [x12, 16] #APP // 141 "./arch/arm64/include/asm/uaccess.h" 1 mrs x10, ttbr1_el1 // 0 "" 2 #NO_APP mov x14, x1 bfi x14, x10, 0, 48 #APP // 144 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x14 // 0 "" 2 // 145 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 148 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x1 // 0 "" 2 // 149 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x0 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x0 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L96 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP .L93: mov w0, w11 #APP 1: sttrb w6, [x9] 2: .section .fixup,"ax" .align 2 3: mov w0, -14 b 2b .previous .pushsection __ex_table, "a" .align 3 .long (1b - .), (3b - .) .popsection // 0 "" 2 // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L97 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L97 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L98 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L100: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x6, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x6, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w1, w6, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w1, w6, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w1, .L122 .L102: #APP // 117 "./arch/arm64/include/asm/uaccess.h" 1 mrs x1, ttbr1_el1 // 0 "" 2 #NO_APP and x1, x1, 281474976710655 sub x9, x1, #4096 #APP // 120 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x9 // 0 "" 2 // 121 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 123 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x1 // 0 "" 2 // 124 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x6 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x6 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L104 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP .L101: cbnz w0, .L88 add x4, x4, 1 add x3, x3, 256 subs x2, x2, #1 beq .L76 ldr w0, [x5, 52] ldr x1, [x5, 8] tbz x0, 21, .L123 .L86: and x0, x4, x3, asr 8 #APP // 79 "./arch/arm64/include/asm/uaccess.h" 1 adds x0, x0, 1 csel x1, xzr, x1, hi csinv x0, x0, xzr, cc sbcs xzr, x0, x1 cset x0, ls // 0 "" 2 #NO_APP cbnz x0, .L124 .p2align 3,,7 .L88: mov w0, 1 .L76: add x19, x19, 1368 ldr x1, [sp, 40] ldr x2, [x19] subs x1, x1, x2 mov x2, 0 bne .L125 ldr x19, [sp, 16] ldp x29, x30, [sp], 48 hint 29 // autiasp ret .p2align 2,,3 .L78: cmp w1, 8 bne .L88 str x2, [sp, 32] mov x3, 4294963200 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2] tst w2, 4194304 bne .L84 b .L126 .p2align 2,,3 .L85: add x1, sp, 32 bl __memcpy_toio mov w0, 0 b .L76 .p2align 2,,3 .L97: ldr x1, [x7, #:lo12:cpu_hwcaps] tst w1, 16 beq .L100 .L98: #APP // 271 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L101 .p2align 2,,3 .L89: ldr x0, [x7, #:lo12:cpu_hwcaps] tst w0, 16 beq .L92 .L91: #APP // 276 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L93 .p2align 2,,3 .L96: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L93 .p2align 2,,3 .L104: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L101 .p2align 2,,3 .L122: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L110 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x1, 96 .L103: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x1 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L102 .p2align 2,,3 .L121: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L109 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x1, 96 .L95: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x1 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L94 .p2align 2,,3 .L110: mov x1, 160 b .L103 .p2align 2,,3 .L109: mov x1, 160 b .L95 .p2align 2,,3 .L79: strb w2, [sp, 32] mov x3, 4294963200 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2] tst w2, 4194304 bne .L84 b .L126 .p2align 2,,3 .L77: str w2, [sp, 32] mov x3, 4294963200 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2] tst w2, 4194304 bne .L84 b .L126 .L125: bl __stack_chk_fail .size rk_align_wr, .-rk_align_wr .align 2 .p2align 3,,7 .type rk_align_rd, %function rk_align_rd: hint 25 // paciasp stp x29, x30, [sp, -64]! mov x29, sp stp x19, x20, [sp, 16] mrs x20, sp_el0 mov w19, w1 ldr x1, [x20, 1368] str x1, [sp, 56] mov x1,0 sub w3, w19, #1 sub w1, w19, #4 tst w1, -5 ccmp w3, 1, 0, ne bhi .L158 str x21, [sp, 32] mov x1, x0 mov x21, x2 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x0, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x0] mov x0, 4294963200 tst w2, 4194304 bne .L130 adrp x2, vabits_actual mov x0, 1 ldr x2, [x2, #:lo12:vabits_actual] lsl x0, x0, x2 .L130: cmp x1, x0 sxtw x2, w19 bcc .L176 add x0, sp, 48 bl __memcpy_fromio .L152: cmp w19, 4 beq .L153 bgt .L154 cmp w19, 1 beq .L155 cmp w19, 2 bne .L174 ldrh w1, [sp, 48] mov w0, 0 str x1, [x21] ldr x21, [sp, 32] .p2align 3,,7 .L127: add x20, x20, 1368 ldr x1, [sp, 56] ldr x2, [x20] subs x1, x1, x2 mov x2, 0 bne .L177 ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 64 hint 29 // autiasp ret .p2align 2,,3 .L176: #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x5, sp_el0 // 0 "" 2 #NO_APP ldr w0, [x5, 52] lsl x4, x1, 8 mov x13, x5 mov x12, x5 add x9, sp, 48 adrp x8, cpu_hwcaps mov w11, 0 ldr x3, [x5, 8] tbnz x0, 21, .L132 .p2align 3,,7 .L180: ldr x6, [x5] mov x0, x1 tbnz x6, 26, .L132 #APP // 79 "./arch/arm64/include/asm/uaccess.h" 1 adds x0, x0, 1 csel x3, xzr, x3, hi csinv x0, x0, xzr, cc sbcs xzr, x0, x3 cset x0, ls // 0 "" 2 #NO_APP cbz x0, .L173 .L181: and x0, x1, x4, asr 8 ldr x6, [x13, 8] #APP // 289 "./arch/arm64/include/asm/uaccess.h" 1 bics xzr, x0, x6 csel x3, x1, xzr, eq // 0 "" 2 // 297 "./arch/arm64/include/asm/uaccess.h" 1 hint #20 // 0 "" 2 // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L135 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L135 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L137 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L138: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x0, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x0, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w6, w0, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w6, w0, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w6, .L178 .L140: ldr x6, [x12, 16] #APP // 141 "./arch/arm64/include/asm/uaccess.h" 1 mrs x7, ttbr1_el1 // 0 "" 2 #NO_APP mov x10, x6 bfi x10, x7, 0, 48 #APP // 144 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x10 // 0 "" 2 // 145 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 148 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x6 // 0 "" 2 // 149 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x0 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x0 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L142 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP .L139: mov w0, w11 #APP 1: ldtrb w6, [x3] 2: .section .fixup, "ax" .align 2 3: mov w0, -14 mov x6, #0 b 2b .previous .pushsection __ex_table, "a" .align 3 .long (1b - .), (3b - .) .popsection // 0 "" 2 #NO_APP and w6, w6, 255 #APP // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L143 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L143 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L144 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L146: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x7, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x7, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w3, w7, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w3, w7, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w3, .L179 .L148: #APP // 117 "./arch/arm64/include/asm/uaccess.h" 1 mrs x3, ttbr1_el1 // 0 "" 2 #NO_APP and x3, x3, 281474976710655 sub x10, x3, #4096 #APP // 120 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x10 // 0 "" 2 // 121 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 123 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x3 // 0 "" 2 // 124 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x7 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x7 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L150 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP .L147: strb w6, [x9], 1 cbnz w0, .L173 add x1, x1, 1 add x4, x4, 256 subs x2, x2, #1 beq .L152 ldr w0, [x5, 52] ldr x3, [x5, 8] tbz x0, 21, .L180 .L132: and x0, x1, x4, asr 8 #APP // 79 "./arch/arm64/include/asm/uaccess.h" 1 adds x0, x0, 1 csel x3, xzr, x3, hi csinv x0, x0, xzr, cc sbcs xzr, x0, x3 cset x0, ls // 0 "" 2 #NO_APP cbnz x0, .L181 .L173: ldr x21, [sp, 32] .L158: mov w0, 1 b .L127 .p2align 2,,3 .L143: ldr x3, [x8, #:lo12:cpu_hwcaps] tst w3, 16 beq .L146 .L144: #APP // 271 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L147 .p2align 2,,3 .L135: ldr x0, [x8, #:lo12:cpu_hwcaps] tst w0, 16 beq .L138 .L137: #APP // 276 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L139 .p2align 2,,3 .L142: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L139 .p2align 2,,3 .L150: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L147 .p2align 2,,3 .L154: cmp w19, 8 bne .L174 ldr x1, [sp, 48] str x1, [x21] mov w0, 0 ldr x21, [sp, 32] b .L127 .p2align 2,,3 .L178: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L162 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x6, 96 .L141: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x6 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L140 .p2align 2,,3 .L179: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L163 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x3, 96 .L149: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x3 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L148 .p2align 2,,3 .L162: mov x6, 160 b .L141 .p2align 2,,3 .L163: mov x3, 160 b .L149 .p2align 2,,3 .L174: mov w0, 1 ldr x21, [sp, 32] b .L127 .p2align 2,,3 .L153: ldr w1, [sp, 48] mov w0, 0 str x1, [x21] ldr x21, [sp, 32] b .L127 .p2align 2,,3 .L155: ldrb w1, [sp, 48] mov w0, 0 str x1, [x21] ldr x21, [sp, 32] b .L127 .L177: str x21, [sp, 32] bl __stack_chk_fail .size rk_align_rd, .-rk_align_rd .align 2 .p2align 3,,7 .global alignment_fixup_helper .type alignment_fixup_helper, %function alignment_fixup_helper: hint 25 // paciasp stp x29, x30, [sp, -176]! mov x29, sp stp x19, x20, [sp, 16] mov x20, x2 mrs x19, sp_el0 stp x21, x22, [sp, 32] mov x22, x0 ldr x1, [x20, 264] ldr x2, [x19, 1368] str x2, [sp, 168] mov x2,0 tst x1, 15 bne .L183 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x0, sp_el0 // 0 "" 2 #NO_APP ldr x0, [x0] mov x1, 4294963200 tst w0, 4194304 bne .L184 adrp x0, vabits_actual mov x1, 1 ldr x0, [x0, #:lo12:vabits_actual] lsl x1, x1, x0 .L184: cmp x22, x1 bcc .L185 .L189: mov w0, 1 .L182: add x19, x19, 1368 ldr x1, [sp, 168] ldr x2, [x19] subs x1, x1, x2 mov x2, 0 bne .L442 ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x29, x30, [sp], 176 hint 29 // autiasp ret .p2align 2,,3 .L185: #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x1, sp_el0 // 0 "" 2 #NO_APP ldr w3, [x1, 52] ldr x0, [x1, 8] ldr x2, [x20, 256] tbz x3, 21, .L443 .L187: sbfx x1, x2, 0, 56 and x1, x1, x2 .L188: #APP // 79 "./arch/arm64/include/asm/uaccess.h" 1 adds x1, x1, 4 csel x0, xzr, x0, hi csinv x1, x1, xzr, cc sbcs xzr, x1, x0 cset x1, ls // 0 "" 2 #NO_APP cbz x1, .L189 sbfx x0, x2, 0, 56 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x1, sp_el0 // 0 "" 2 #NO_APP and x0, x0, x2 ldr x3, [x1, 8] #APP // 289 "./arch/arm64/include/asm/uaccess.h" 1 bics xzr, x0, x3 csel x1, x2, xzr, eq // 0 "" 2 // 297 "./arch/arm64/include/asm/uaccess.h" 1 hint #20 // 0 "" 2 // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L190 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L190 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L192 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L193: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x0, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x0, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w2, w0, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w2, w0, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w2, .L444 .L195: #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2, 16] #APP // 141 "./arch/arm64/include/asm/uaccess.h" 1 mrs x3, ttbr1_el1 // 0 "" 2 #NO_APP mov x4, x2 bfi x4, x3, 0, 48 #APP // 144 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x4 // 0 "" 2 // 145 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 148 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x2 // 0 "" 2 // 149 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x0 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x0 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L197 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP b .L194 .p2align 2,,3 .L183: ldr x0, [x20, 256] add x1, sp, 132 bl aarch64_insn_read cbnz w0, .L189 ldr w0, [sp, 132] .L206: bl aarch64_get_insn_class cmp w0, 4 beq .L207 cmp w0, 5 mov w0, 1 bne .L182 ldr w1, [sp, 132] mov w2, 29728 movk w2, 0xd50b, lsl 16 and w1, w1, -32 cmp w1, w2 bne .L189 #APP .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x21, (((3) << 19) | ((3) << 16) | ((0) << 12) | ((0) << 8) | ((7) << 5)) .purgem mrs_s // 0 "" 2 #NO_APP and w21, w21, 15 mov x1, 4294963200 add w21, w21, 2 #APP // 19 "./arch/arm64/include/asm/current.h" 1 mrs x2, sp_el0 // 0 "" 2 #NO_APP ldr x2, [x2] lsl w21, w0, w21 neg w0, w21 sxtw x0, w0 tst w2, 4194304 and x22, x0, x22 bne .L208 adrp x0, vabits_actual mov x1, 1 ldr x0, [x0, #:lo12:vabits_actual] lsl x1, x1, x0 .L208: cmp x22, x1 bcs .L209 .p2align 3,,7 .L210: mov x0, x22 mov x2, 0 mov w1, 1 bl rk_align_wr cbnz w0, .L189 subs w21, w21, #1 bne .L210 .L211: ldr x1, [x20, 256] mov w0, 0 add x1, x1, 4 str x1, [x20, 256] b .L182 .p2align 2,,3 .L443: ldr x3, [x1] mov x1, x2 tst w3, 67108864 beq .L188 b .L187 .p2align 2,,3 .L207: ldr w21, [sp, 132] stp x23, x24, [sp, 48] uxtw x0, w21 ubfx x22, x21, 28, 2 ubfx x23, x21, 26, 1 cmp w22, 2 beq .L445 cmp w22, 3 beq .L446 ldp x23, x24, [sp, 48] b .L189 .p2align 2,,3 .L190: adrp x0, cpu_hwcaps ldr x0, [x0, #:lo12:cpu_hwcaps] tst w0, 16 beq .L193 .L192: #APP // 276 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP .L194: mov w0, 0 #APP 1: ldtr w2, [x1] 2: .section .fixup, "ax" .align 2 3: mov w0, -14 mov x2, #0 b 2b .previous .pushsection __ex_table, "a" .align 3 .long (1b - .), (3b - .) .popsection // 0 "" 2 // 38 "./arch/arm64/include/asm/jump_label.h" 1 1: b .L198 .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L198 - . .quad arm64_const_caps_ready+1 - . .popsection // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L199 - . .quad cpu_hwcap_keys+64 - . .popsection // 0 "" 2 #NO_APP .L201: #APP // 72 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: mrs x3, daif 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro mrs_s, rt, sreg .inst (0xd5200000|(\sreg)|(.L__reg_num_\rt)) .endm mrs_s x3, (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)) .purgem mrs_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 87 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: and w1, w3, #0x00000080 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: eor w1, w3, #0xe0 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP cbz w1, .L447 .L203: #APP // 117 "./arch/arm64/include/asm/uaccess.h" 1 mrs x1, ttbr1_el1 // 0 "" 2 #NO_APP and x1, x1, 281474976710655 sub x4, x1, #4096 #APP // 120 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr0_el1, x4 // 0 "" 2 // 121 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 123 "./arch/arm64/include/asm/uaccess.h" 1 msr ttbr1_el1, x1 // 0 "" 2 // 124 "./arch/arm64/include/asm/uaccess.h" 1 isb // 0 "" 2 // 124 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daif, x3 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x3 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L205 - . .quad gic_pmr_sync - . .popsection // 0 "" 2 #NO_APP .L202: cbnz w0, .L189 mov w0, w2 str w2, [sp, 132] b .L206 .p2align 2,,3 .L198: adrp x1, cpu_hwcaps ldr x1, [x1, #:lo12:cpu_hwcaps] tst w1, 16 beq .L201 .L199: #APP // 271 "./arch/arm64/include/asm/uaccess.h" 1 .if 1 == 1 661: nop 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 10 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8)) 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L202 .p2align 2,,3 .L197: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L194 .p2align 2,,3 .L205: #APP // 132 "./arch/arm64/include/asm/irqflags.h" 1 dsb sy // 0 "" 2 #NO_APP b .L202 .p2align 2,,3 .L446: stp x25, x26, [sp, 64] ubfx x24, x0, 10, 2 tbnz x0, 24, .L252 cmp x24, 2 ubfx x0, x0, 16, 6 cset w25, ne ands w0, w0, 32 csel w25, w25, wzr, eq cbnz w25, .L252 cmp w0, 0 ccmp x24, 2, 0, ne beq .L448 ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] b .L189 .p2align 2,,3 .L445: and w0, w21, 16777216 stp x25, x26, [sp, 64] lsr w24, w21, 30 stp x27, x28, [sp, 80] and w26, w21, 8388608 ubfx x25, x21, 22, 1 str w0, [sp, 108] mov w1, w21 mov w0, 1 cbnz x23, .L213 bl aarch64_insn_decode_register mov w27, w0 mov w1, w21 mov w0, 0 bl aarch64_insn_decode_register mov w28, w0 mov w1, w21 mov w0, w22 bl aarch64_insn_decode_register mov w22, w0 mov w1, w21 mov w0, 7 bl aarch64_insn_decode_immediate eor w1, w25, 1 and w7, w24, 1 tst w24, w1 mov w5, w1 bne .L320 cmp w24, 3 beq .L320 cbz w26, .L215 cmp w27, w28 ccmp w27, w22, 4, ne ccmp w27, 31, 4, eq bne .L320 .L215: cmp w28, w22 csel w2, w25, wzr, eq cbnz w2, .L320 asr w4, w24, 1 mov w6, 8 add w4, w4, 2 and w2, w27, 536870911 cmp w2, 32 lsl w6, w6, w4 asr w1, w6, 3 sxtw x24, w1 beq .L216 bhi .L217 cmp w2, 30 bhi .L449 ldr x25, [x20, x2, lsl 3] .L220: sbfx x21, x0, 0, 7 ldr w0, [sp, 108] lsl x21, x21, x4 cmp w0, 0 add x0, x25, x21 csel x25, x0, x25, ne cbz w5, .L223 cmp w28, 31 mov x2, 0 beq .L224 ldr x2, [x20, w28, sxtw 3] .L224: str x2, [sp, 152] cmp w22, 31 beq .L225 ldr x23, [x20, w22, sxtw 3] .L225: mov x0, x25 str w1, [sp, 112] str x23, [sp, 160] bl rk_align_wr ldr w1, [sp, 112] cbnz w0, .L320 ldr x2, [sp, 160] add x0, x24, x25 bl rk_align_wr cbnz w0, .L320 .L227: cbz w26, .L435 ldr w0, [sp, 108] cbnz w0, .L232 add x25, x25, x21 .L232: cmp w27, 31 beq .L450 str x25, [x20, w27, sxtw 3] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L460: cbnz x24, .L320 tbz x25, 0, .L435 .p2align 3,,7 .L320: mov w0, 1 ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L182 .p2align 2,,3 .L447: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L339 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x1, 96 .L204: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x1 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L203 .p2align 2,,3 .L444: #APP // 21 "./arch/arm64/include/asm/jump_label.h" 1 1: nop .pushsection __jump_table, "aw" .align 3 .long 1b - ., .L338 - . .quad gic_nonsecure_priorities - . .popsection // 0 "" 2 #NO_APP mov x2, 96 .L196: #APP // 56 "./arch/arm64/include/asm/irqflags.h" 1 .if 1 == 1 661: msr daifset, #2 // arch_local_irq_disable 662: .pushsection .altinstructions,"a" .word 661b - . .word 663f - . .hword 42 .byte 662b-661b .byte 664f-663f .popsection .subsection 1 663: .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 .equ .L__reg_num_x\num, \num .endr .equ .L__reg_num_xzr, 31 .macro msr_s, sreg, rt .inst (0xd5000000|(\sreg)|(.L__reg_num_\rt)) .endm msr_s (((3) << 19) | ((0) << 16) | ((4) << 12) | ((6) << 8) | ((0) << 5)), x2 .purgem msr_s 664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .previous .endif // 0 "" 2 #NO_APP b .L195 .p2align 2,,3 .L213: bl aarch64_insn_decode_register mov w27, w0 mov w1, w21 mov w0, 0 bl aarch64_insn_decode_register mov w23, w0 mov w1, w21 mov w0, w22 bl aarch64_insn_decode_register mov w22, w0 mov w1, w21 mov w0, 7 bl aarch64_insn_decode_immediate cmp w24, 3 beq .L320 cmp w23, w22 csel w1, w25, wzr, eq cbnz w1, .L320 add w24, w24, 2 mov w3, 8 and w1, w27, 536870911 lsl w3, w3, w24 cmp w1, 32 asr w3, w3, 3 sxtw x2, w3 str x2, [sp, 112] beq .L235 bhi .L236 cmp w1, 30 bhi .L451 ldr x28, [x20, x1, lsl 3] .L239: sbfx x0, x0, 0, 7 ldr w1, [sp, 108] lsl x21, x0, x24 add x0, x28, x21 cmp w1, 0 csel x28, x0, x28, ne cbnz w25, .L242 mov w1, 0 mov w0, w23 str w3, [sp, 120] bl get_data mov x5, x0 mov w1, 0 mov w0, w22 str x5, [sp, 136] bl get_data str x0, [sp, 152] ldr w3, [sp, 120] cmp w24, 4 beq .L452 mov x2, x5 mov w1, w3 mov x0, x28 str w3, [sp, 120] bl rk_align_wr cbnz w0, .L320 ldr w3, [sp, 120] ldr x2, [sp, 152] mov w1, w3 ldr x0, [sp, 112] add x0, x0, x28 bl rk_align_wr cbnz w0, .L320 .L245: cbz w26, .L435 ldr w0, [sp, 108] cbnz w0, .L250 add x28, x28, x21 .L250: cmp w27, 31 beq .L453 str x28, [x20, w27, sxtw 3] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .p2align 2,,3 .L252: and w22, w21, 33553408 stp x27, x28, [sp, 80] and w22, w22, -16775169 lsr w28, w21, 30 lsr w25, w21, 22 cmp w22, 1024 eor x2, x21, 2048 cbnz x23, .L254 ubfx x2, x2, 11, 1 mov w1, w21 csel w2, w2, wzr, eq mov w0, 1 str w2, [sp, 108] bl aarch64_insn_decode_register mov w27, w0 mov w1, w21 mov w0, 0 bl aarch64_insn_decode_register mov w26, w0 mov w1, w21 tbnz x21, 24, .L256 mov w0, 6 bl aarch64_insn_decode_immediate sbfx x21, x0, 0, 9 .L257: tbnz x25, 1, .L258 mvn w0, w25 cmp w28, 3 mov w25, 64 mov w1, 32 and w0, w0, 1 csel w25, w25, w1, eq mov w4, 0 .L259: cmp w27, w26 ccmp w27, 31, 4, eq bne .L320 and w1, w27, 536870911 cmp w1, 32 beq .L263 bhi .L264 cmp w1, 30 bhi .L454 ldr x24, [x20, x1, lsl 3] .L267: mov w1, 8 ldr w2, [sp, 108] lsl w28, w1, w28 asr w1, w28, 3 cmp w2, 0 add x2, x24, x21 csel x24, x2, x24, eq cbz w0, .L270 cmp w26, 31 beq .L271 ldr x23, [x20, w26, sxtw 3] .L271: mov x2, x23 mov x0, x24 str x23, [sp, 160] bl rk_align_wr cbnz w0, .L320 .L272: cmp w22, 1024 beq .L455 .L435: ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .p2align 2,,3 .L339: mov x1, 160 b .L204 .p2align 2,,3 .L338: mov x2, 160 b .L196 .L209: sxtw x2, w21 mov x0, x22 mov w1, 0 bl __memset_io b .L211 .L451: cmp w1, 31 bne .L437 ldr x28, [x20, 248] b .L239 .L236: cmp w1, 33 bne .L437 ldr x28, [x20, 264] b .L239 .L254: ubfx x2, x2, 11, 1 lsl w0, w25, 1 and w0, w0, 4 csel w24, w2, wzr, eq mov w1, w21 orr w23, w0, w28 mov w0, 1 bl aarch64_insn_decode_register mov w1, w21 mov w26, w0 mov w0, 0 bl aarch64_insn_decode_register cmp w23, 4 mov w27, w0 bhi .L320 mov w1, w21 tbnz x21, 24, .L281 mov w0, 6 bl aarch64_insn_decode_immediate sbfx x28, x0, 0, 9 .L282: and w0, w26, 536870911 mov w1, 8 cmp w0, 32 lsl w3, w1, w23 beq .L283 bhi .L284 cmp w0, 30 bhi .L456 ldr x21, [x20, x0, lsl 3] .L287: cmp w24, 0 add x0, x21, x28 csel x21, x0, x21, eq tbnz x25, 0, .L290 mov w0, w27 mov w1, 0 bl get_data str x0, [sp, 152] mov x4, x0 cmp w23, 4 beq .L457 mov x2, x0 asr w1, w3, 3 mov x0, x21 bl rk_align_wr cbnz w0, .L320 .L293: cmp w22, 1024 bne .L435 cbz w24, .L298 add x21, x21, x28 .L298: cmp w26, 31 beq .L458 str x21, [x20, w26, sxtw 3] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .p2align 2,,3 .L448: stp x27, x28, [sp, 80] ubfx x1, x21, 13, 1 lsr w26, w21, 30 lsr w28, w21, 22 ubfx x0, x21, 12, 1 cmp w1, 0 cbnz x23, .L300 mov w1, 64 mov w27, 32 csel w27, w27, w1, eq cmp w0, 0 csel w0, w26, wzr, ne mov w1, w21 str w0, [sp, 108] mov w0, 1 bl aarch64_insn_decode_register mov w24, w0 mov w1, w21 mov w0, 0 bl aarch64_insn_decode_register mov w1, w21 mov w21, w0 mov w0, w22 bl aarch64_insn_decode_register mov w1, w0 tbnz x28, 1, .L303 mvn w25, w28 and w25, w25, 1 .L304: cmp w24, w21 ccmp w24, 31, 4, eq bne .L320 cmp w1, 31 mov x0, 0 beq .L308 ldr x0, [x20, w1, sxtw 3] .L308: cmp w27, 32 and x1, x0, 4294967295 and w24, w24, 536870911 csel x0, x1, x0, eq ldrb w1, [sp, 108] cmp w24, 32 lsl x0, x0, x1 beq .L310 bhi .L311 cmp w24, 30 bhi .L459 ldr x3, [x20, x24, lsl 3] .L314: mov w1, 8 lsl w1, w1, w26 add x0, x0, x3 asr w1, w1, 3 cbz w25, .L316 cmp w21, 31 beq .L317 ldr x23, [x20, w21, sxtw 3] .L317: mov x2, x23 str x23, [sp, 160] bl rk_align_wr cbz w0, .L435 b .L320 .p2align 2,,3 .L449: cmp w2, 31 bne .L436 ldr x25, [x20, 248] b .L220 .L217: cmp w2, 33 bne .L436 ldr x25, [x20, 264] b .L220 .L456: cmp w0, 31 bne .L439 ldr x21, [x20, 248] b .L287 .L284: cmp w0, 33 bne .L439 ldr x21, [x20, 264] b .L287 .L437: mov x28, 0 b .L239 .L258: cmp w28, 3 beq .L460 and w25, w25, 1 cmp w28, 2 beq .L461 cmp w25, 0 mov w0, 32 mov w25, 64 mov w4, 1 csel w25, w25, w0, eq mov w0, 0 b .L259 .L256: mov w0, 5 bl aarch64_insn_decode_immediate lsl x21, x0, x28 b .L257 .L242: add x2, sp, 136 cmp w24, 4 beq .L462 mov w1, w3 mov x0, x28 str w3, [sp, 120] bl rk_align_rd cbnz w0, .L320 ldr w3, [sp, 120] add x2, sp, 152 ldr x0, [sp, 112] mov w1, w3 add x0, x0, x28 bl rk_align_rd cbnz w0, .L320 str xzr, [sp, 144] str xzr, [sp, 160] .L248: ldr x2, [sp, 136] mov w0, w23 mov w1, 0 bl set_data ldr x2, [sp, 144] mov w0, w23 mov w1, 1 bl set_data ldr x2, [sp, 152] mov w0, w22 mov w1, 0 bl set_data ldr x2, [sp, 160] mov w0, w22 mov w1, 1 bl set_data b .L245 .L300: mov w1, 64 lsl w23, w28, 1 mov w25, 32 csel w25, w25, w1, eq cmp w0, 0 and w23, w23, 4 orr w23, w23, w26 mov w1, w21 csel w26, w23, wzr, ne mov w0, 1 bl aarch64_insn_decode_register mov w24, w0 mov w1, w21 mov w0, 0 bl aarch64_insn_decode_register mov w27, w0 mov w1, w21 mov w0, w22 bl aarch64_insn_decode_register mov w1, w0 tbz x28, 1, .L320 cmp w24, w27 ccmp w24, 31, 4, eq bne .L320 cmp w0, 31 mov x0, 0 beq .L321 ldr x0, [x20, w1, sxtw 3] .L321: cmp w25, 32 and x1, x0, 4294967295 and w24, w24, 536870911 csel x0, x1, x0, eq cmp w24, 32 lsl x0, x0, x26 beq .L323 bhi .L324 cmp w24, 30 bhi .L463 ldr x21, [x20, x24, lsl 3] .L327: mov w22, 8 add x21, x0, x21 lsl w4, w22, w23 tbnz x28, 0, .L329 mov w0, w27 mov w1, 0 bl get_data str x0, [sp, 152] mov x3, x0 cmp w23, 4 beq .L464 mov x2, x0 asr w1, w4, 3 mov x0, x21 bl rk_align_wr cbz w0, .L435 b .L320 .p2align 2,,3 .L436: mov x25, 0 b .L220 .L454: cmp w1, 31 bne .L438 ldr x24, [x20, 248] b .L267 .L264: cmp w1, 33 bne .L438 ldr x24, [x20, 264] b .L267 .L439: mov x21, 0 b .L287 .L281: mov w0, 5 bl aarch64_insn_decode_immediate lsl x28, x0, x23 b .L282 .L290: cmp w23, 4 beq .L465 asr w1, w3, 3 add x2, sp, 152 mov x0, x21 bl rk_align_rd cbnz w0, .L320 str xzr, [sp, 160] .L296: ldr x2, [sp, 152] mov w0, w27 mov w1, 0 bl set_data ldr x2, [sp, 160] mov w0, w27 mov w1, 1 bl set_data b .L293 .L223: add x2, sp, 152 mov x0, x25 str w1, [sp, 112] stp w6, w7, [sp, 120] bl rk_align_rd cbnz w0, .L320 ldr w1, [sp, 112] add x0, x24, x25 add x2, sp, 160 bl rk_align_rd cbnz w0, .L320 ldr w7, [sp, 124] cbz w7, .L228 ldp x2, x1, [sp, 152] mov w0, 64 ldr w6, [sp, 120] sub w6, w0, w6 lsl x2, x2, x6 lsl x0, x1, x6 asr x1, x2, x6 asr x6, x0, x6 stp x1, x6, [sp, 152] .L228: cmp w28, 31 beq .L229 ldr x0, [sp, 152] str x0, [x20, w28, sxtw 3] .L229: cmp w22, 31 beq .L227 ldr x0, [sp, 160] str x0, [x20, w22, sxtw 3] b .L227 .L459: cmp w24, 31 bne .L440 ldr x3, [x20, 248] b .L314 .L311: cmp w24, 33 bne .L440 ldr x3, [x20, 264] b .L314 .L303: cmp w26, 3 beq .L466 cmp w26, 2 bne .L304 tbz x28, 0, .L304 b .L320 .p2align 2,,3 .L438: mov x24, 0 b .L267 .L235: ldr x28, [x20, 256] b .L239 .L463: cmp w24, 31 bne .L441 ldr x21, [x20, 248] b .L327 .L324: cmp w24, 33 bne .L441 ldr x21, [x20, 264] b .L327 .L462: mov x0, x28 mov w1, 8 bl rk_align_rd cbnz w0, .L320 add x2, sp, 144 add x0, x28, 8 mov w1, 8 bl rk_align_rd cbnz w0, .L320 add x2, sp, 152 add x0, x28, 16 mov w1, 8 bl rk_align_rd cbnz w0, .L320 add x2, sp, 160 add x0, x28, 24 mov w1, 8 bl rk_align_rd cbz w0, .L248 b .L320 .p2align 2,,3 .L452: mov w1, 1 mov w0, w23 bl get_data mov x2, x0 mov w1, 1 mov w0, w22 str x2, [sp, 144] bl get_data mov x3, x0 mov x2, x5 mov x0, x28 mov w1, 8 str x3, [sp, 160] bl rk_align_wr cbnz w0, .L320 ldr x2, [sp, 144] add x0, x28, 8 mov w1, 8 bl rk_align_wr cbnz w0, .L320 ldr x2, [sp, 152] add x0, x28, 16 mov w1, 8 bl rk_align_wr cbnz w0, .L320 ldr x2, [sp, 160] add x0, x28, 24 mov w1, 8 bl rk_align_wr cbz w0, .L245 b .L320 .p2align 2,,3 .L216: ldr x25, [x20, 256] b .L220 .L283: ldr x21, [x20, 256] b .L287 .L440: mov x3, 0 b .L314 .L270: add x2, sp, 160 mov x0, x24 str w4, [sp, 112] bl rk_align_rd cbnz w0, .L320 ldr w4, [sp, 112] cbz w4, .L273 sub w28, w28, #1 mov w0, 31 ldr x1, [sp, 160] sub w2, w0, w28, sxtb mov w0, 63 cmp w25, 32 sub w28, w0, w28, sxtb lsl w0, w1, w2 asr w0, w0, w2 sxtw x0, w0 lsl x1, x1, x28 asr x1, x1, x28 csel x0, x0, x1, eq str x0, [sp, 160] .L273: cmp w26, 31 beq .L272 ldr x0, [sp, 160] str x0, [x20, w26, sxtw 3] b .L272 .L465: add x2, sp, 152 mov x0, x21 mov w1, 8 bl rk_align_rd cbnz w0, .L320 add x2, sp, 160 add x0, x21, 8 mov w1, 8 bl rk_align_rd cbz w0, .L296 b .L320 .L457: mov w1, 1 mov w0, w27 bl get_data mov x3, x0 mov x2, x4 mov x0, x21 mov w1, 8 str x3, [sp, 160] bl rk_align_wr cbnz w0, .L320 ldr x2, [sp, 160] add x0, x21, 8 mov w1, 8 bl rk_align_wr cbz w0, .L293 b .L320 .L461: cbnz w25, .L320 mov w25, 64 mov w4, 1 mov w0, 0 b .L259 .L329: cmp w23, 4 beq .L467 asr w1, w4, 3 mov x0, x21 add x2, sp, 152 bl rk_align_rd cbnz w0, .L320 str xzr, [sp, 160] .L334: ldr x2, [sp, 152] mov w0, w27 mov w1, 0 bl set_data ldr x2, [sp, 160] mov w0, w27 mov w1, 1 bl set_data ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L441: mov x21, 0 b .L327 .L455: ldr w0, [sp, 108] cbz w0, .L277 add x24, x24, x21 .L277: cmp w27, 31 beq .L468 str x24, [x20, w27, sxtw 3] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L316: add x2, sp, 160 bl rk_align_rd cbz w0, .L435 b .L320 .L263: ldr x24, [x20, 256] b .L267 .L466: tbz x28, 0, .L435 b .L320 .L442: stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] bl __stack_chk_fail .L453: str x28, [x20, 248] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L458: str x21, [x20, 248] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L310: ldr x3, [x20, 256] b .L314 .L450: str x25, [x20, 248] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .L323: ldr x21, [x20, 256] b .L327 .L467: add x2, sp, 152 mov w1, w22 mov x0, x21 bl rk_align_rd cbnz w0, .L320 mov w1, w22 add x0, x21, 8 add x2, sp, 160 bl rk_align_rd cbz w0, .L334 b .L320 .L464: mov w1, 1 mov w0, w27 bl get_data mov x4, x0 mov x2, x3 mov w1, w22 mov x0, x21 str x4, [sp, 160] bl rk_align_wr cbnz w0, .L320 ldr x2, [sp, 160] mov w1, w22 add x0, x21, 8 bl rk_align_wr cbz w0, .L435 b .L320 .L468: str x24, [x20, 248] ldp x23, x24, [sp, 48] ldp x25, x26, [sp, 64] ldp x27, x28, [sp, 80] b .L211 .size alignment_fixup_helper, .-alignment_fixup_helper .ident "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0" .section .note.GNU-stack,"",@progbits .section .note.gnu.property,"a" .align 3 .word 4 .word 16 .word 5 .string "GNU" .word 3221225472 .word 4 .word 2 .align 3