android13/kernel-5.10/arch/arm64/mm/fixup_fault.S

3715 lines
58 KiB
ArmAsm

/* 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