	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	4, 0x90                         ## -- Begin function mv_xor_channel_add
_mv_xor_channel_add:                    ## @mv_xor_channel_add
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movl	%r8d, %r13d
	movl	%ecx, -56(%rbp)                 ## 4-byte Spill
	movl	%edx, %r14d
	movq	%rdi, %r15
	movq	_GFP_KERNEL@GOTPCREL(%rip), %r12
	movl	(%r12), %edx
	movq	%rsi, -48(%rbp)                 ## 8-byte Spill
	movq	%rsi, %rdi
	movl	$160, %esi
	callq	_devm_kzalloc
	testq	%rax, %rax
	je	LBB0_1
## %bb.2:
	movq	%rax, %rbx
	movl	%r14d, (%rax)
	movl	%r13d, 4(%rax)
	movq	(%r15), %rax
	movq	_XOR_ORION@GOTPCREL(%rip), %rcx
	cmpq	(%rcx), %rax
	jne	LBB0_3
## %bb.4:
	movq	_XOR_MODE_IN_REG@GOTPCREL(%rip), %rax
	jmp	LBB0_5
LBB0_3:
	movq	_XOR_MODE_IN_DESC@GOTPCREL(%rip), %rax
LBB0_5:
	movq	-48(%rbp), %r13                 ## 8-byte Reload
	movq	(%rax), %rax
	movq	%rax, 8(%rbx)
	movq	%r13, 152(%rbx)
	movq	%r15, 104(%rbx)
	movl	88(%rbx), %esi
	movq	_MV_XOR_MIN_BYTE_COUNT@GOTPCREL(%rip), %r14
	movl	(%r14), %edx
	movq	_DMA_FROM_DEVICE@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	movq	%r13, %rdi
	callq	_dma_map_single
	movq	%rax, 96(%rbx)
	movq	152(%rbx), %rdi
	movl	72(%rbx), %esi
	movl	(%r14), %edx
	movq	_DMA_TO_DEVICE@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	callq	_dma_map_single
	movq	%rax, 80(%rbx)
	movq	_MV_XOR_POOL_SIZE@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	leaq	16(%rbx), %rdx
	movl	(%r12), %ecx
	movq	%r13, %rdi
	callq	_dma_alloc_wc
	movl	%eax, 20(%rbx)
	testl	%eax, %eax
	je	LBB0_1
## %bb.6:
	movl	-56(%rbp), %eax                 ## 4-byte Reload
	movl	%eax, 116(%rbx)
	leaq	120(%rbx), %r12
	movq	%r12, %rdi
	callq	_INIT_LIST_HEAD
	movq	_mv_xor_alloc_chan_resources@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 148(%rbx)
	movq	_mv_xor_free_chan_resources@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 144(%rbx)
	movq	_mv_xor_status@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 140(%rbx)
	movq	_mv_xor_issue_pending@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 136(%rbx)
	movq	_DMA_INTERRUPT@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	je	LBB0_8
## %bb.7:
	movq	_mv_xor_prep_dma_interrupt@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 132(%rbx)
LBB0_8:
	movq	_DMA_MEMCPY@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	je	LBB0_10
## %bb.9:
	movq	_mv_xor_prep_dma_memcpy@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 128(%rbx)
LBB0_10:
	movq	_DMA_XOR@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	je	LBB0_12
## %bb.11:
	movl	$8, 112(%rbx)
	movq	_mv_xor_prep_dma_xor@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 124(%rbx)
LBB0_12:
	movl	12(%r15), %eax
	movl	%eax, 68(%rbx)
	movl	8(%r15), %eax
	movl	%eax, 64(%rbx)
	leaq	60(%rbx), %rdi
	movq	_mv_xor_tasklet@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%rbx, %rdx
	callq	_tasklet_init
	movq	%rbx, %rdi
	callq	_mv_chan_clear_err_status
	movl	4(%rbx), %r14d
	movq	_mv_xor_interrupt_handler@GOTPCREL(%rip), %rax
	movl	(%rax), %r15d
	movq	%r13, %rdi
	callq	_dev_name
	movl	%r14d, %edi
	movl	%r15d, %esi
	xorl	%edx, %edx
	movl	%eax, %ecx
	movq	%rbx, %r8
	callq	_request_irq
	movq	%r13, %rdi
	movl	%eax, %r13d
	testl	%eax, %eax
	jne	LBB0_22
## %bb.13:
	leaq	112(%rbx), %r15
	movq	%rbx, %rdi
	callq	_mv_chan_unmask_interrupts
	movq	8(%rbx), %rax
	movq	_XOR_MODE_IN_DESC@GOTPCREL(%rip), %rcx
	cmpq	(%rcx), %rax
	jne	LBB0_14
## %bb.15:
	movq	_XOR_OPERATION_MODE_IN_DESC@GOTPCREL(%rip), %rax
	jmp	LBB0_16
LBB0_1:
	movq	_ENOMEM@GOTPCREL(%rip), %rax
	xorl	%r13d, %r13d
	subl	(%rax), %r13d
	jmp	LBB0_23
LBB0_14:
	movq	_XOR_OPERATION_MODE_XOR@GOTPCREL(%rip), %rax
LBB0_16:
	movl	(%rax), %esi
	movq	%rbx, %rdi
	callq	_mv_chan_set_mode
	leaq	56(%rbx), %rdi
	callq	_spin_lock_init
	leaq	52(%rbx), %rdi
	callq	_INIT_LIST_HEAD
	leaq	48(%rbx), %rdi
	callq	_INIT_LIST_HEAD
	leaq	44(%rbx), %rdi
	callq	_INIT_LIST_HEAD
	leaq	40(%rbx), %rdi
	callq	_INIT_LIST_HEAD
	movq	%rbx, %r14
	addq	$24, %r14
	movq	%r15, 32(%rbx)
	movq	%r14, %rdi
	callq	_dma_cookie_init
	movq	%r14, %rdi
	movq	%r12, %rsi
	callq	_list_add_tail
	movq	_DMA_MEMCPY@GOTPCREL(%rip), %r14
	movl	(%r14), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	je	LBB0_18
## %bb.17:
	movq	%rbx, %rdi
	callq	_mv_chan_memcpy_self_test
	movl	%eax, %r13d
	leaq	L_.str(%rip), %rsi
	movq	-48(%rbp), %rdi                 ## 8-byte Reload
	movl	%eax, %edx
	callq	_dev_dbg
	testl	%r13d, %r13d
	jne	LBB0_21
LBB0_18:
	movq	_DMA_XOR@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	je	LBB0_20
## %bb.19:
	movq	%rbx, %rdi
	callq	_mv_chan_xor_self_test
	movl	%eax, %r13d
	leaq	L_.str.1(%rip), %rsi
	movq	-48(%rbp), %rdi                 ## 8-byte Reload
	movl	%eax, %edx
	callq	_dev_dbg
	testl	%r13d, %r13d
	jne	LBB0_21
LBB0_20:
	cmpq	$0, 8(%rbx)
	leaq	L_.str.4(%rip), %rax
	leaq	L_.str.3(%rip), %r12
	cmoveq	%rax, %r12
	movq	_DMA_XOR@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	movq	%r15, -56(%rbp)                 ## 8-byte Spill
	leaq	L_.str.6(%rip), %r15
	leaq	L_.str.5(%rip), %r13
	cmoveq	%r15, %r13
	movl	(%r14), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	leaq	L_.str.7(%rip), %r14
	cmoveq	%r15, %r14
	movq	_DMA_INTERRUPT@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	116(%rbx), %esi
	callq	_dma_has_cap
	testq	%rax, %rax
	leaq	L_.str.8(%rip), %r9
	cmoveq	%r15, %r9
	leaq	L_.str.2(%rip), %rsi
	movq	-48(%rbp), %rdi                 ## 8-byte Reload
	movq	%r12, %rdx
	movq	%r13, %rcx
	movq	%r14, %r8
	callq	_dev_info
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_dma_async_device_register
	movl	%eax, %r13d
	testl	%eax, %eax
	je	LBB0_24
LBB0_21:
	movl	4(%rbx), %edi
	movq	%rbx, %rsi
	callq	_free_irq
	movq	-48(%rbp), %rdi                 ## 8-byte Reload
LBB0_22:
	movq	_MV_XOR_POOL_SIZE@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movl	16(%rbx), %ecx
	movl	20(%rbx), %edx
	callq	_dma_free_coherent
LBB0_23:
	movl	%r13d, %edi
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	jmp	_ERR_PTR                        ## TAILCALL
LBB0_24:
	movq	%rbx, %rax
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.comm	_GFP_KERNEL,4,2                 ## @GFP_KERNEL
	.comm	_ENOMEM,4,2                     ## @ENOMEM
	.comm	_XOR_ORION,8,3                  ## @XOR_ORION
	.comm	_XOR_MODE_IN_REG,8,3            ## @XOR_MODE_IN_REG
	.comm	_XOR_MODE_IN_DESC,8,3           ## @XOR_MODE_IN_DESC
	.comm	_MV_XOR_MIN_BYTE_COUNT,4,2      ## @MV_XOR_MIN_BYTE_COUNT
	.comm	_DMA_FROM_DEVICE,4,2            ## @DMA_FROM_DEVICE
	.comm	_DMA_TO_DEVICE,4,2              ## @DMA_TO_DEVICE
	.comm	_MV_XOR_POOL_SIZE,4,2           ## @MV_XOR_POOL_SIZE
	.comm	_mv_xor_alloc_chan_resources,4,2 ## @mv_xor_alloc_chan_resources
	.comm	_mv_xor_free_chan_resources,4,2 ## @mv_xor_free_chan_resources
	.comm	_mv_xor_status,4,2              ## @mv_xor_status
	.comm	_mv_xor_issue_pending,4,2       ## @mv_xor_issue_pending
	.comm	_DMA_INTERRUPT,4,2              ## @DMA_INTERRUPT
	.comm	_mv_xor_prep_dma_interrupt,4,2  ## @mv_xor_prep_dma_interrupt
	.comm	_DMA_MEMCPY,4,2                 ## @DMA_MEMCPY
	.comm	_mv_xor_prep_dma_memcpy,4,2     ## @mv_xor_prep_dma_memcpy
	.comm	_DMA_XOR,4,2                    ## @DMA_XOR
	.comm	_mv_xor_prep_dma_xor,4,2        ## @mv_xor_prep_dma_xor
	.comm	_mv_xor_tasklet,4,2             ## @mv_xor_tasklet
	.comm	_mv_xor_interrupt_handler,4,2   ## @mv_xor_interrupt_handler
	.comm	_XOR_OPERATION_MODE_IN_DESC,4,2 ## @XOR_OPERATION_MODE_IN_DESC
	.comm	_XOR_OPERATION_MODE_XOR,4,2     ## @XOR_OPERATION_MODE_XOR
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"memcpy self test returned %d\n"

L_.str.1:                               ## @.str.1
	.asciz	"xor self test returned %d\n"

L_.str.2:                               ## @.str.2
	.asciz	"Marvell XOR (%s): ( %s%s%s)\n"

L_.str.3:                               ## @.str.3
	.asciz	"Descriptor Mode"

L_.str.4:                               ## @.str.4
	.asciz	"Registers Mode"

L_.str.5:                               ## @.str.5
	.asciz	"xor "

L_.str.6:                               ## @.str.6
	.space	1

L_.str.7:                               ## @.str.7
	.asciz	"cpy "

L_.str.8:                               ## @.str.8
	.asciz	"intr "

	.no_dead_strip	_mv_xor_channel_add
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function mv_xor_channel_add
_mv_xor_channel_add:                    ; @mv_xor_channel_add
	.cfi_startproc
; %bb.0:
	stp	x28, x27, [sp, #-96]!           ; 16-byte Folded Spill
	.cfi_def_cfa_offset 96
	stp	x26, x25, [sp, #16]             ; 16-byte Folded Spill
	stp	x24, x23, [sp, #32]             ; 16-byte Folded Spill
	stp	x22, x21, [sp, #48]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #64]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #80]             ; 16-byte Folded Spill
	add	x29, sp, #80
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
	.cfi_offset w21, -40
	.cfi_offset w22, -48
	.cfi_offset w23, -56
	.cfi_offset w24, -64
	.cfi_offset w25, -72
	.cfi_offset w26, -80
	.cfi_offset w27, -88
	.cfi_offset w28, -96
	mov	x23, x4
	mov	x22, x3
	mov	x24, x2
	mov	x19, x1
	mov	x21, x0
Lloh0:
	adrp	x26, _GFP_KERNEL@GOTPAGE
Lloh1:
	ldr	x26, [x26, _GFP_KERNEL@GOTPAGEOFF]
	ldr	w2, [x26]
	mov	x0, x1
	mov	w1, #160
	bl	_devm_kzalloc
	cbz	x0, LBB0_16
; %bb.1:
	mov	x20, x0
	stp	w24, w23, [x0]
	ldr	x8, [x21]
Lloh2:
	adrp	x9, _XOR_ORION@GOTPAGE
Lloh3:
	ldr	x9, [x9, _XOR_ORION@GOTPAGEOFF]
Lloh4:
	ldr	x9, [x9]
Lloh5:
	adrp	x10, _XOR_MODE_IN_REG@GOTPAGE
Lloh6:
	ldr	x10, [x10, _XOR_MODE_IN_REG@GOTPAGEOFF]
Lloh7:
	adrp	x28, _XOR_MODE_IN_DESC@GOTPAGE
Lloh8:
	ldr	x28, [x28, _XOR_MODE_IN_DESC@GOTPAGEOFF]
	cmp	x8, x9
	csel	x8, x10, x28, eq
	ldr	x8, [x8]
	str	x8, [x0, #8]
	str	x19, [x0, #152]
	str	x21, [x0, #104]
	ldr	w1, [x0, #88]
Lloh9:
	adrp	x23, _MV_XOR_MIN_BYTE_COUNT@GOTPAGE
Lloh10:
	ldr	x23, [x23, _MV_XOR_MIN_BYTE_COUNT@GOTPAGEOFF]
	ldr	w2, [x23]
Lloh11:
	adrp	x8, _DMA_FROM_DEVICE@GOTPAGE
Lloh12:
	ldr	x8, [x8, _DMA_FROM_DEVICE@GOTPAGEOFF]
Lloh13:
	ldr	w3, [x8]
	mov	x0, x19
	bl	_dma_map_single
	str	x0, [x20, #96]
	ldr	x0, [x20, #152]
	ldr	w1, [x20, #72]
	ldr	w2, [x23]
Lloh14:
	adrp	x8, _DMA_TO_DEVICE@GOTPAGE
Lloh15:
	ldr	x8, [x8, _DMA_TO_DEVICE@GOTPAGEOFF]
Lloh16:
	ldr	w3, [x8]
	bl	_dma_map_single
	str	x0, [x20, #80]
Lloh17:
	adrp	x25, _MV_XOR_POOL_SIZE@GOTPAGE
Lloh18:
	ldr	x25, [x25, _MV_XOR_POOL_SIZE@GOTPAGEOFF]
	ldr	w1, [x25]
	add	x2, x20, #16
	ldr	w3, [x26]
	mov	x0, x19
	bl	_dma_alloc_wc
	str	w0, [x20, #20]
	cbz	w0, LBB0_16
; %bb.2:
	str	w22, [x20, #116]
	add	x22, x20, #120
	mov	x0, x22
	bl	_INIT_LIST_HEAD
Lloh19:
	adrp	x8, _mv_xor_alloc_chan_resources@GOTPAGE
Lloh20:
	ldr	x8, [x8, _mv_xor_alloc_chan_resources@GOTPAGEOFF]
Lloh21:
	ldr	w8, [x8]
Lloh22:
	adrp	x9, _mv_xor_free_chan_resources@GOTPAGE
Lloh23:
	ldr	x9, [x9, _mv_xor_free_chan_resources@GOTPAGEOFF]
Lloh24:
	ldr	w9, [x9]
	stp	w9, w8, [x20, #144]
Lloh25:
	adrp	x8, _mv_xor_status@GOTPAGE
Lloh26:
	ldr	x8, [x8, _mv_xor_status@GOTPAGEOFF]
Lloh27:
	ldr	w8, [x8]
Lloh28:
	adrp	x9, _mv_xor_issue_pending@GOTPAGE
Lloh29:
	ldr	x9, [x9, _mv_xor_issue_pending@GOTPAGEOFF]
Lloh30:
	ldr	w9, [x9]
	stp	w9, w8, [x20, #136]
Lloh31:
	adrp	x26, _DMA_INTERRUPT@GOTPAGE
Lloh32:
	ldr	x26, [x26, _DMA_INTERRUPT@GOTPAGEOFF]
	ldr	w0, [x26]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
	cbz	x0, LBB0_4
; %bb.3:
Lloh33:
	adrp	x8, _mv_xor_prep_dma_interrupt@GOTPAGE
Lloh34:
	ldr	x8, [x8, _mv_xor_prep_dma_interrupt@GOTPAGEOFF]
Lloh35:
	ldr	w8, [x8]
	str	w8, [x20, #132]
LBB0_4:
Lloh36:
	adrp	x24, _DMA_MEMCPY@GOTPAGE
Lloh37:
	ldr	x24, [x24, _DMA_MEMCPY@GOTPAGEOFF]
	ldr	w0, [x24]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
	cbz	x0, LBB0_6
; %bb.5:
Lloh38:
	adrp	x8, _mv_xor_prep_dma_memcpy@GOTPAGE
Lloh39:
	ldr	x8, [x8, _mv_xor_prep_dma_memcpy@GOTPAGEOFF]
Lloh40:
	ldr	w8, [x8]
	str	w8, [x20, #128]
LBB0_6:
Lloh41:
	adrp	x27, _DMA_XOR@GOTPAGE
Lloh42:
	ldr	x27, [x27, _DMA_XOR@GOTPAGEOFF]
	ldr	w0, [x27]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
	cbz	x0, LBB0_8
; %bb.7:
	mov	w8, #8
	str	w8, [x20, #112]
Lloh43:
	adrp	x8, _mv_xor_prep_dma_xor@GOTPAGE
Lloh44:
	ldr	x8, [x8, _mv_xor_prep_dma_xor@GOTPAGEOFF]
Lloh45:
	ldr	w8, [x8]
	str	w8, [x20, #124]
LBB0_8:
	ldr	d0, [x21, #8]
	str	d0, [x20, #64]
	add	x0, x20, #60
Lloh46:
	adrp	x8, _mv_xor_tasklet@GOTPAGE
Lloh47:
	ldr	x8, [x8, _mv_xor_tasklet@GOTPAGEOFF]
Lloh48:
	ldr	w1, [x8]
	mov	x2, x20
	bl	_tasklet_init
	mov	x0, x20
	bl	_mv_chan_clear_err_status
	ldr	w21, [x20, #4]
Lloh49:
	adrp	x8, _mv_xor_interrupt_handler@GOTPAGE
Lloh50:
	ldr	x8, [x8, _mv_xor_interrupt_handler@GOTPAGEOFF]
Lloh51:
	ldr	w23, [x8]
	mov	x0, x19
	bl	_dev_name
	mov	x3, x0
	mov	x0, x21
	mov	x1, x23
	mov	w2, #0
	mov	x4, x20
	bl	_request_irq
	mov	x23, x0
	cbnz	w0, LBB0_15
; %bb.9:
	add	x21, x20, #112
	mov	x0, x20
	bl	_mv_chan_unmask_interrupts
	ldr	x8, [x20, #8]
Lloh52:
	adrp	x9, _XOR_OPERATION_MODE_IN_DESC@GOTPAGE
Lloh53:
	ldr	x9, [x9, _XOR_OPERATION_MODE_IN_DESC@GOTPAGEOFF]
	ldr	x10, [x28]
Lloh54:
	adrp	x11, _XOR_OPERATION_MODE_XOR@GOTPAGE
Lloh55:
	ldr	x11, [x11, _XOR_OPERATION_MODE_XOR@GOTPAGEOFF]
	cmp	x8, x10
	csel	x8, x9, x11, eq
	ldr	w1, [x8]
	mov	x0, x20
	bl	_mv_chan_set_mode
	add	x0, x20, #56
	bl	_spin_lock_init
	add	x0, x20, #52
	bl	_INIT_LIST_HEAD
	add	x0, x20, #48
	bl	_INIT_LIST_HEAD
	add	x0, x20, #44
	bl	_INIT_LIST_HEAD
	add	x0, x20, #40
	bl	_INIT_LIST_HEAD
	add	x23, x20, #24
	str	x21, [x20, #32]
	mov	x0, x23
	bl	_dma_cookie_init
	mov	x0, x23
	mov	x1, x22
	bl	_list_add_tail
	ldr	w0, [x24]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
	cbz	x0, LBB0_11
; %bb.10:
	mov	x0, x20
	bl	_mv_chan_memcpy_self_test
	mov	x23, x0
Lloh56:
	adrp	x1, l_.str@PAGE
Lloh57:
	add	x1, x1, l_.str@PAGEOFF
	mov	x0, x19
	mov	x2, x23
	bl	_dev_dbg
	cbnz	w23, LBB0_14
LBB0_11:
	ldr	w0, [x27]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
	cbz	x0, LBB0_13
; %bb.12:
	mov	x0, x20
	bl	_mv_chan_xor_self_test
	mov	x23, x0
Lloh58:
	adrp	x1, l_.str.1@PAGE
Lloh59:
	add	x1, x1, l_.str.1@PAGEOFF
	mov	x0, x19
	mov	x2, x23
	bl	_dev_dbg
	cbnz	w23, LBB0_14
LBB0_13:
	ldr	x8, [x20, #8]
Lloh60:
	adrp	x9, l_.str.3@PAGE
Lloh61:
	add	x9, x9, l_.str.3@PAGEOFF
Lloh62:
	adrp	x10, l_.str.4@PAGE
Lloh63:
	add	x10, x10, l_.str.4@PAGEOFF
	cmp	x8, #0
	csel	x22, x10, x9, eq
	ldr	w0, [x27]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
Lloh64:
	adrp	x8, l_.str.5@PAGE
Lloh65:
	add	x8, x8, l_.str.5@PAGEOFF
Lloh66:
	adrp	x27, l_.str.6@PAGE
Lloh67:
	add	x27, x27, l_.str.6@PAGEOFF
	cmp	x0, #0
	csel	x23, x27, x8, eq
	ldr	w0, [x24]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
Lloh68:
	adrp	x8, l_.str.7@PAGE
Lloh69:
	add	x8, x8, l_.str.7@PAGEOFF
	cmp	x0, #0
	csel	x24, x27, x8, eq
	ldr	w0, [x26]
	ldr	w1, [x20, #116]
	bl	_dma_has_cap
Lloh70:
	adrp	x8, l_.str.8@PAGE
Lloh71:
	add	x8, x8, l_.str.8@PAGEOFF
	cmp	x0, #0
	csel	x5, x27, x8, eq
Lloh72:
	adrp	x1, l_.str.2@PAGE
Lloh73:
	add	x1, x1, l_.str.2@PAGEOFF
	mov	x0, x19
	mov	x2, x22
	mov	x3, x23
	mov	x4, x24
	bl	_dev_info
	mov	x0, x21
	bl	_dma_async_device_register
	mov	x23, x0
	cbz	w0, LBB0_18
LBB0_14:
	ldr	w0, [x20, #4]
	mov	x1, x20
	bl	_free_irq
LBB0_15:
	ldr	w1, [x25]
	ldp	w3, w2, [x20, #16]
	mov	x0, x19
	bl	_dma_free_coherent
	b	LBB0_17
LBB0_16:
Lloh74:
	adrp	x8, _ENOMEM@GOTPAGE
Lloh75:
	ldr	x8, [x8, _ENOMEM@GOTPAGEOFF]
Lloh76:
	ldr	w8, [x8]
	neg	w23, w8
LBB0_17:
	mov	x0, x23
	ldp	x29, x30, [sp, #80]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #64]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #48]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #32]             ; 16-byte Folded Reload
	ldp	x26, x25, [sp, #16]             ; 16-byte Folded Reload
	ldp	x28, x27, [sp], #96             ; 16-byte Folded Reload
	b	_ERR_PTR
LBB0_18:
	mov	x0, x20
	ldp	x29, x30, [sp, #80]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #64]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #48]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #32]             ; 16-byte Folded Reload
	ldp	x26, x25, [sp, #16]             ; 16-byte Folded Reload
	ldp	x28, x27, [sp], #96             ; 16-byte Folded Reload
	ret
	.loh AdrpLdrGot	Lloh0, Lloh1
	.loh AdrpLdrGot	Lloh17, Lloh18
	.loh AdrpLdrGotLdr	Lloh14, Lloh15, Lloh16
	.loh AdrpLdrGotLdr	Lloh11, Lloh12, Lloh13
	.loh AdrpLdrGot	Lloh9, Lloh10
	.loh AdrpLdrGot	Lloh7, Lloh8
	.loh AdrpLdrGot	Lloh5, Lloh6
	.loh AdrpLdrGotLdr	Lloh2, Lloh3, Lloh4
	.loh AdrpLdrGot	Lloh31, Lloh32
	.loh AdrpLdrGotLdr	Lloh28, Lloh29, Lloh30
	.loh AdrpLdrGotLdr	Lloh25, Lloh26, Lloh27
	.loh AdrpLdrGotLdr	Lloh22, Lloh23, Lloh24
	.loh AdrpLdrGotLdr	Lloh19, Lloh20, Lloh21
	.loh AdrpLdrGotLdr	Lloh33, Lloh34, Lloh35
	.loh AdrpLdrGot	Lloh36, Lloh37
	.loh AdrpLdrGotLdr	Lloh38, Lloh39, Lloh40
	.loh AdrpLdrGot	Lloh41, Lloh42
	.loh AdrpLdrGotLdr	Lloh43, Lloh44, Lloh45
	.loh AdrpLdrGotLdr	Lloh49, Lloh50, Lloh51
	.loh AdrpLdrGotLdr	Lloh46, Lloh47, Lloh48
	.loh AdrpLdrGot	Lloh54, Lloh55
	.loh AdrpLdrGot	Lloh52, Lloh53
	.loh AdrpAdd	Lloh56, Lloh57
	.loh AdrpAdd	Lloh58, Lloh59
	.loh AdrpAdd	Lloh72, Lloh73
	.loh AdrpAdd	Lloh70, Lloh71
	.loh AdrpAdd	Lloh68, Lloh69
	.loh AdrpAdd	Lloh66, Lloh67
	.loh AdrpAdd	Lloh64, Lloh65
	.loh AdrpAdd	Lloh62, Lloh63
	.loh AdrpAdd	Lloh60, Lloh61
	.loh AdrpLdrGotLdr	Lloh74, Lloh75, Lloh76
	.cfi_endproc
                                        ; -- End function
	.comm	_GFP_KERNEL,4,2                 ; @GFP_KERNEL
	.comm	_ENOMEM,4,2                     ; @ENOMEM
	.comm	_XOR_ORION,8,3                  ; @XOR_ORION
	.comm	_XOR_MODE_IN_REG,8,3            ; @XOR_MODE_IN_REG
	.comm	_XOR_MODE_IN_DESC,8,3           ; @XOR_MODE_IN_DESC
	.comm	_MV_XOR_MIN_BYTE_COUNT,4,2      ; @MV_XOR_MIN_BYTE_COUNT
	.comm	_DMA_FROM_DEVICE,4,2            ; @DMA_FROM_DEVICE
	.comm	_DMA_TO_DEVICE,4,2              ; @DMA_TO_DEVICE
	.comm	_MV_XOR_POOL_SIZE,4,2           ; @MV_XOR_POOL_SIZE
	.comm	_mv_xor_alloc_chan_resources,4,2 ; @mv_xor_alloc_chan_resources
	.comm	_mv_xor_free_chan_resources,4,2 ; @mv_xor_free_chan_resources
	.comm	_mv_xor_status,4,2              ; @mv_xor_status
	.comm	_mv_xor_issue_pending,4,2       ; @mv_xor_issue_pending
	.comm	_DMA_INTERRUPT,4,2              ; @DMA_INTERRUPT
	.comm	_mv_xor_prep_dma_interrupt,4,2  ; @mv_xor_prep_dma_interrupt
	.comm	_DMA_MEMCPY,4,2                 ; @DMA_MEMCPY
	.comm	_mv_xor_prep_dma_memcpy,4,2     ; @mv_xor_prep_dma_memcpy
	.comm	_DMA_XOR,4,2                    ; @DMA_XOR
	.comm	_mv_xor_prep_dma_xor,4,2        ; @mv_xor_prep_dma_xor
	.comm	_mv_xor_tasklet,4,2             ; @mv_xor_tasklet
	.comm	_mv_xor_interrupt_handler,4,2   ; @mv_xor_interrupt_handler
	.comm	_XOR_OPERATION_MODE_IN_DESC,4,2 ; @XOR_OPERATION_MODE_IN_DESC
	.comm	_XOR_OPERATION_MODE_XOR,4,2     ; @XOR_OPERATION_MODE_XOR
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"memcpy self test returned %d\n"

l_.str.1:                               ; @.str.1
	.asciz	"xor self test returned %d\n"

l_.str.2:                               ; @.str.2
	.asciz	"Marvell XOR (%s): ( %s%s%s)\n"

l_.str.3:                               ; @.str.3
	.asciz	"Descriptor Mode"

l_.str.4:                               ; @.str.4
	.asciz	"Registers Mode"

l_.str.5:                               ; @.str.5
	.asciz	"xor "

l_.str.6:                               ; @.str.6
	.space	1

l_.str.7:                               ; @.str.7
	.asciz	"cpy "

l_.str.8:                               ; @.str.8
	.asciz	"intr "

	.no_dead_strip	_mv_xor_channel_add
.subsections_via_symbols
