	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	4, 0x90                         ## -- Begin function v3d_hub_irq
_v3d_hub_irq:                           ## @v3d_hub_irq
	.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
	pushq	%rax
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movq	%rsi, %r14
	movq	_IRQ_NONE@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
	movq	_V3D_HUB_INT_STS@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_V3D_READ
	movl	%eax, %r13d
	movq	_V3D_HUB_INT_CLR@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movl	%r13d, %esi
	callq	_V3D_WRITE
	movq	_V3D_HUB_INT_TFUC@GOTPCREL(%rip), %rax
	testl	%r13d, (%rax)
	je	LBB0_2
## %bb.1:
	movq	16(%r14), %rax
	movl	(%rax), %edi
	callq	_to_v3d_fence
	movq	%rax, %rbx
	leaq	12(%r14), %rdi
	movl	4(%rax), %esi
	callq	_trace_v3d_tfu_irq
	movq	%rbx, %rdi
	callq	_dma_fence_signal
	movq	_IRQ_HANDLED@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
LBB0_2:
	movq	_V3D_HUB_INT_MMU_WRV@GOTPCREL(%rip), %rcx
	movq	_V3D_HUB_INT_MMU_PTI@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	orl	(%rcx), %eax
	movq	_V3D_HUB_INT_MMU_CAP@GOTPCREL(%rip), %rcx
	orl	(%rcx), %eax
	testl	%r13d, %eax
	je	LBB0_9
## %bb.3:
	movq	_V3D_MMU_VIO_ID@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_V3D_READ
	movl	%eax, %r15d
	movq	_V3D_MMU_VIO_ADDR@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_V3D_READ
	movl	%eax, %r12d
	movb	(%r14), %cl
	shll	%cl, %r12d
	movq	_V3D_MMU_CTL@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
	movl	%ebx, %edi
	callq	_V3D_READ
	movq	_V3D_MMU_CTL_CAP_EXCEEDED@GOTPCREL(%rip), %rcx
	movq	_V3D_MMU_CTL_PT_INVALID@GOTPCREL(%rip), %rdx
	movl	(%rdx), %esi
	orl	(%rcx), %esi
	movq	_V3D_MMU_CTL_WRITE_VIOLATION@GOTPCREL(%rip), %rcx
	orl	(%rcx), %esi
	andl	%eax, %esi
	movl	%ebx, %edi
	callq	_V3D_WRITE
	leaq	L_.str.8(%rip), %r10
	cmpl	$41, 4(%r14)
	jl	LBB0_4
## %bb.5:
	sarl	$5, %r15d
	leaq	_v3d_hub_irq.v3d41_axi_ids(%rip), %rdi
	movq	%rdi, %rbx
	callq	_ARRAY_SIZE
	cmpl	%eax, %r15d
	movq	_V3D_HUB_INT_MMU_CAP@GOTPCREL(%rip), %rsi
	movq	_V3D_HUB_INT_MMU_PTI@GOTPCREL(%rip), %rcx
	movq	_V3D_HUB_INT_MMU_WRV@GOTPCREL(%rip), %rdx
	jge	LBB0_6
## %bb.7:
	movslq	%r15d, %rax
	movq	(%rbx,%rax,8), %r10
	jmp	LBB0_8
LBB0_4:
	movq	_V3D_HUB_INT_MMU_CAP@GOTPCREL(%rip), %rsi
	movq	_V3D_HUB_INT_MMU_PTI@GOTPCREL(%rip), %rcx
	movq	_V3D_HUB_INT_MMU_WRV@GOTPCREL(%rip), %rdx
	jmp	LBB0_8
LBB0_6:
	leaq	L_.str.8(%rip), %r10
LBB0_8:
	movl	(%rdx), %eax
	andl	%r13d, %eax
	leaq	L_.str.11(%rip), %rdx
	leaq	L_.str.10(%rip), %r9
	cmoveq	%rdx, %r9
	movl	8(%r14), %edi
	movl	(%rcx), %ecx
	andl	%r13d, %ecx
	leaq	L_.str.12(%rip), %rbx
	cmoveq	%rdx, %rbx
	andl	(%rsi), %r13d
	movslq	%r12d, %r8
	leaq	L_.str.13(%rip), %rax
	cmoveq	%rdx, %rax
	leaq	L_.str.9(%rip), %rsi
	movq	%r10, %rdx
	movl	%r15d, %ecx
	pushq	%rax
	pushq	%rbx
	callq	_dev_err
	addq	$16, %rsp
	movq	_IRQ_HANDLED@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
LBB0_9:
	movl	%ebx, %eax
	addq	$8, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.comm	_IRQ_NONE,4,2                   ## @IRQ_NONE
	.comm	_V3D_HUB_INT_STS,4,2            ## @V3D_HUB_INT_STS
	.comm	_V3D_HUB_INT_CLR,4,2            ## @V3D_HUB_INT_CLR
	.comm	_V3D_HUB_INT_TFUC,4,2           ## @V3D_HUB_INT_TFUC
	.comm	_IRQ_HANDLED,4,2                ## @IRQ_HANDLED
	.comm	_V3D_HUB_INT_MMU_WRV,4,2        ## @V3D_HUB_INT_MMU_WRV
	.comm	_V3D_HUB_INT_MMU_PTI,4,2        ## @V3D_HUB_INT_MMU_PTI
	.comm	_V3D_HUB_INT_MMU_CAP,4,2        ## @V3D_HUB_INT_MMU_CAP
	.comm	_V3D_MMU_VIO_ID,4,2             ## @V3D_MMU_VIO_ID
	.comm	_V3D_MMU_VIO_ADDR,4,2           ## @V3D_MMU_VIO_ADDR
	.section	__DATA,__const
	.p2align	4                               ## @v3d_hub_irq.v3d41_axi_ids
_v3d_hub_irq.v3d41_axi_ids:
	.quad	L_.str
	.quad	L_.str.1
	.quad	L_.str.2
	.quad	L_.str.3
	.quad	L_.str.4
	.quad	L_.str.5
	.quad	L_.str.6
	.quad	L_.str.7

	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"L2T"

L_.str.1:                               ## @.str.1
	.asciz	"PTB"

L_.str.2:                               ## @.str.2
	.asciz	"PSE"

L_.str.3:                               ## @.str.3
	.asciz	"TLB"

L_.str.4:                               ## @.str.4
	.asciz	"CLE"

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

L_.str.6:                               ## @.str.6
	.asciz	"MMU"

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

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

	.comm	_V3D_MMU_CTL,4,2                ## @V3D_MMU_CTL
	.comm	_V3D_MMU_CTL_CAP_EXCEEDED,4,2   ## @V3D_MMU_CTL_CAP_EXCEEDED
	.comm	_V3D_MMU_CTL_PT_INVALID,4,2     ## @V3D_MMU_CTL_PT_INVALID
	.comm	_V3D_MMU_CTL_WRITE_VIOLATION,4,2 ## @V3D_MMU_CTL_WRITE_VIOLATION
L_.str.9:                               ## @.str.9
	.asciz	"MMU error from client %s (%d) at 0x%llx%s%s%s\n"

L_.str.10:                              ## @.str.10
	.asciz	", write violation"

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

L_.str.12:                              ## @.str.12
	.asciz	", pte invalid"

L_.str.13:                              ## @.str.13
	.asciz	", cap exceeded"

	.no_dead_strip	_v3d_hub_irq
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function v3d_hub_irq
_v3d_hub_irq:                           ; @v3d_hub_irq
	.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	x20, x1
Lloh0:
	adrp	x8, _IRQ_NONE@GOTPAGE
Lloh1:
	ldr	x8, [x8, _IRQ_NONE@GOTPAGEOFF]
Lloh2:
	ldr	w21, [x8]
Lloh3:
	adrp	x8, _V3D_HUB_INT_STS@GOTPAGE
Lloh4:
	ldr	x8, [x8, _V3D_HUB_INT_STS@GOTPAGEOFF]
Lloh5:
	ldr	w0, [x8]
	bl	_V3D_READ
	mov	x19, x0
Lloh6:
	adrp	x8, _V3D_HUB_INT_CLR@GOTPAGE
Lloh7:
	ldr	x8, [x8, _V3D_HUB_INT_CLR@GOTPAGEOFF]
Lloh8:
	ldr	w0, [x8]
	mov	x1, x19
	bl	_V3D_WRITE
Lloh9:
	adrp	x8, _V3D_HUB_INT_TFUC@GOTPAGE
Lloh10:
	ldr	x8, [x8, _V3D_HUB_INT_TFUC@GOTPAGEOFF]
Lloh11:
	ldr	w8, [x8]
Lloh12:
	adrp	x23, _IRQ_HANDLED@GOTPAGE
Lloh13:
	ldr	x23, [x23, _IRQ_HANDLED@GOTPAGEOFF]
	tst	w8, w19
	b.eq	LBB0_2
; %bb.1:
	ldr	x8, [x20, #16]
	ldr	w0, [x8]
	bl	_to_v3d_fence
	mov	x21, x0
	add	x0, x20, #12
	ldr	w1, [x21, #4]
	bl	_trace_v3d_tfu_irq
	mov	x0, x21
	bl	_dma_fence_signal
	ldr	w21, [x23]
LBB0_2:
Lloh14:
	adrp	x26, _V3D_HUB_INT_MMU_WRV@GOTPAGE
Lloh15:
	ldr	x26, [x26, _V3D_HUB_INT_MMU_WRV@GOTPAGEOFF]
	ldr	w8, [x26]
Lloh16:
	adrp	x25, _V3D_HUB_INT_MMU_PTI@GOTPAGE
Lloh17:
	ldr	x25, [x25, _V3D_HUB_INT_MMU_PTI@GOTPAGEOFF]
	ldr	w9, [x25]
	orr	w8, w9, w8
Lloh18:
	adrp	x24, _V3D_HUB_INT_MMU_CAP@GOTPAGE
Lloh19:
	ldr	x24, [x24, _V3D_HUB_INT_MMU_CAP@GOTPAGEOFF]
	ldr	w9, [x24]
	orr	w8, w8, w9
	tst	w8, w19
	b.eq	LBB0_8
; %bb.3:
Lloh20:
	adrp	x8, _V3D_MMU_VIO_ID@GOTPAGE
Lloh21:
	ldr	x8, [x8, _V3D_MMU_VIO_ID@GOTPAGEOFF]
Lloh22:
	ldr	w0, [x8]
	bl	_V3D_READ
	mov	x21, x0
Lloh23:
	adrp	x8, _V3D_MMU_VIO_ADDR@GOTPAGE
Lloh24:
	ldr	x8, [x8, _V3D_MMU_VIO_ADDR@GOTPAGEOFF]
Lloh25:
	ldr	w0, [x8]
	bl	_V3D_READ
	ldr	w8, [x20]
	lsl	w27, w0, w8
Lloh26:
	adrp	x8, _V3D_MMU_CTL@GOTPAGE
Lloh27:
	ldr	x8, [x8, _V3D_MMU_CTL@GOTPAGEOFF]
Lloh28:
	ldr	w22, [x8]
	mov	x0, x22
	bl	_V3D_READ
Lloh29:
	adrp	x8, _V3D_MMU_CTL_CAP_EXCEEDED@GOTPAGE
Lloh30:
	ldr	x8, [x8, _V3D_MMU_CTL_CAP_EXCEEDED@GOTPAGEOFF]
Lloh31:
	ldr	w8, [x8]
Lloh32:
	adrp	x9, _V3D_MMU_CTL_PT_INVALID@GOTPAGE
Lloh33:
	ldr	x9, [x9, _V3D_MMU_CTL_PT_INVALID@GOTPAGEOFF]
Lloh34:
	ldr	w9, [x9]
	orr	w8, w9, w8
Lloh35:
	adrp	x9, _V3D_MMU_CTL_WRITE_VIOLATION@GOTPAGE
Lloh36:
	ldr	x9, [x9, _V3D_MMU_CTL_WRITE_VIOLATION@GOTPAGEOFF]
Lloh37:
	ldr	w9, [x9]
	orr	w8, w8, w9
	and	w1, w8, w0
	mov	x0, x22
	bl	_V3D_WRITE
	ldr	w8, [x20, #4]
	cmp	w8, #41
	b.lt	LBB0_6
; %bb.4:
	asr	w21, w21, #5
Lloh38:
	adrp	x22, _v3d_hub_irq.v3d41_axi_ids@PAGE
Lloh39:
	add	x22, x22, _v3d_hub_irq.v3d41_axi_ids@PAGEOFF
	mov	x0, x22
	bl	_ARRAY_SIZE
	cmp	w21, w0
	b.ge	LBB0_6
; %bb.5:
	ldr	x2, [x22, w21, sxtw #3]
	b	LBB0_7
LBB0_6:
Lloh40:
	adrp	x2, l_.str.8@PAGE
Lloh41:
	add	x2, x2, l_.str.8@PAGEOFF
LBB0_7:
	ldr	w0, [x20, #8]
	sxtw	x4, w27
	ldr	w8, [x26]
Lloh42:
	adrp	x9, l_.str.10@PAGE
Lloh43:
	add	x9, x9, l_.str.10@PAGEOFF
Lloh44:
	adrp	x10, l_.str.11@PAGE
Lloh45:
	add	x10, x10, l_.str.11@PAGEOFF
	tst	w8, w19
	csel	x5, x10, x9, eq
	ldr	w8, [x25]
Lloh46:
	adrp	x9, l_.str.12@PAGE
Lloh47:
	add	x9, x9, l_.str.12@PAGEOFF
	tst	w8, w19
	csel	x6, x10, x9, eq
	ldr	w8, [x24]
Lloh48:
	adrp	x9, l_.str.13@PAGE
Lloh49:
	add	x9, x9, l_.str.13@PAGEOFF
	tst	w8, w19
	csel	x7, x10, x9, eq
Lloh50:
	adrp	x1, l_.str.9@PAGE
Lloh51:
	add	x1, x1, l_.str.9@PAGEOFF
	mov	x3, x21
	bl	_dev_err
	ldr	w21, [x23]
LBB0_8:
	mov	x0, x21
	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	Lloh12, Lloh13
	.loh AdrpLdrGotLdr	Lloh9, Lloh10, Lloh11
	.loh AdrpLdrGotLdr	Lloh6, Lloh7, Lloh8
	.loh AdrpLdrGotLdr	Lloh3, Lloh4, Lloh5
	.loh AdrpLdrGotLdr	Lloh0, Lloh1, Lloh2
	.loh AdrpLdrGot	Lloh18, Lloh19
	.loh AdrpLdrGot	Lloh16, Lloh17
	.loh AdrpLdrGot	Lloh14, Lloh15
	.loh AdrpLdrGotLdr	Lloh35, Lloh36, Lloh37
	.loh AdrpLdrGotLdr	Lloh32, Lloh33, Lloh34
	.loh AdrpLdrGotLdr	Lloh29, Lloh30, Lloh31
	.loh AdrpLdrGotLdr	Lloh26, Lloh27, Lloh28
	.loh AdrpLdrGotLdr	Lloh23, Lloh24, Lloh25
	.loh AdrpLdrGotLdr	Lloh20, Lloh21, Lloh22
	.loh AdrpAdd	Lloh38, Lloh39
	.loh AdrpAdd	Lloh40, Lloh41
	.loh AdrpAdd	Lloh50, Lloh51
	.loh AdrpAdd	Lloh48, Lloh49
	.loh AdrpAdd	Lloh46, Lloh47
	.loh AdrpAdd	Lloh44, Lloh45
	.loh AdrpAdd	Lloh42, Lloh43
	.cfi_endproc
                                        ; -- End function
	.comm	_IRQ_NONE,4,2                   ; @IRQ_NONE
	.comm	_V3D_HUB_INT_STS,4,2            ; @V3D_HUB_INT_STS
	.comm	_V3D_HUB_INT_CLR,4,2            ; @V3D_HUB_INT_CLR
	.comm	_V3D_HUB_INT_TFUC,4,2           ; @V3D_HUB_INT_TFUC
	.comm	_IRQ_HANDLED,4,2                ; @IRQ_HANDLED
	.comm	_V3D_HUB_INT_MMU_WRV,4,2        ; @V3D_HUB_INT_MMU_WRV
	.comm	_V3D_HUB_INT_MMU_PTI,4,2        ; @V3D_HUB_INT_MMU_PTI
	.comm	_V3D_HUB_INT_MMU_CAP,4,2        ; @V3D_HUB_INT_MMU_CAP
	.comm	_V3D_MMU_VIO_ID,4,2             ; @V3D_MMU_VIO_ID
	.comm	_V3D_MMU_VIO_ADDR,4,2           ; @V3D_MMU_VIO_ADDR
	.section	__DATA,__const
	.p2align	3                               ; @v3d_hub_irq.v3d41_axi_ids
_v3d_hub_irq.v3d41_axi_ids:
	.quad	l_.str
	.quad	l_.str.1
	.quad	l_.str.2
	.quad	l_.str.3
	.quad	l_.str.4
	.quad	l_.str.5
	.quad	l_.str.6
	.quad	l_.str.7

	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"L2T"

l_.str.1:                               ; @.str.1
	.asciz	"PTB"

l_.str.2:                               ; @.str.2
	.asciz	"PSE"

l_.str.3:                               ; @.str.3
	.asciz	"TLB"

l_.str.4:                               ; @.str.4
	.asciz	"CLE"

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

l_.str.6:                               ; @.str.6
	.asciz	"MMU"

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

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

	.comm	_V3D_MMU_CTL,4,2                ; @V3D_MMU_CTL
	.comm	_V3D_MMU_CTL_CAP_EXCEEDED,4,2   ; @V3D_MMU_CTL_CAP_EXCEEDED
	.comm	_V3D_MMU_CTL_PT_INVALID,4,2     ; @V3D_MMU_CTL_PT_INVALID
	.comm	_V3D_MMU_CTL_WRITE_VIOLATION,4,2 ; @V3D_MMU_CTL_WRITE_VIOLATION
l_.str.9:                               ; @.str.9
	.asciz	"MMU error from client %s (%d) at 0x%llx%s%s%s\n"

l_.str.10:                              ; @.str.10
	.asciz	", write violation"

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

l_.str.12:                              ; @.str.12
	.asciz	", pte invalid"

l_.str.13:                              ; @.str.13
	.asciz	", cap exceeded"

	.no_dead_strip	_v3d_hub_irq
.subsections_via_symbols
