	.file	"ioremap.c"
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"arch/i386/mm/ioremap.c"
	.section	.rodata.str1.32,"aMS",@progbits,1
	.align 32
.LC1:
	.string	"remap_area_pte: page already exists\n"
	.text
	.p2align 4,,15
	.type	remap_area_pages,@function
remap_area_pages:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	subl	$36, %esp
	movl	16(%ebp), %edx
	movl	8(%ebp), %eax
	addl	%edx, %eax
	movl	8(%ebp), %edx
	movl	%eax, -24(%ebp)
	movl	init_mm+12, %eax
	subl	%edx, 12(%ebp)
	shrl	$22, %edx
	leal	(%eax,%edx,4), %edx
	movl	-24(%ebp), %eax
	cmpl	%eax, 8(%ebp)
	movl	%edx, -20(%ebp)
	jb	.L111
#APP
	ud2
	.word 73
	.long .LC0

#NO_APP
.L111:
#APP
	
1:	lock ; decb init_mm+44
	js 2f
.subsection 1
	.ifndef .text.lock.ioremap
	.text.lock.ioremap:
	.endif
	2:	cmpb $0,init_mm+44
	rep;nop
	jle 2b
	jmp 1b
.previous
	
#NO_APP
.L113:
	movl	$-12, -16(%ebp)
	movl	-20(%ebp), %edi
	testl	%edi, %edi
	je	.L114
	movl	-20(%ebp), %edx
	movl	8(%ebp), %ebx
	movl	-24(%ebp), %eax
	movl	%edx, -28(%ebp)
	movl	12(%ebp), %edx
	movl	8(%ebp), %esi
	addl	%ebx, %edx
	subl	%esi, %eax
	movl	%edx, -36(%ebp)
	movl	8(%ebp), %edx
	andl	$4194303, %edx
	movl	%edx, -32(%ebp)
	addl	%edx, %eax
	cmpl	$4194305, %eax
	movl	%eax, -40(%ebp)
	movl	$4194304, %eax
	cmovb	-40(%ebp), %eax
	subl	%edx, -36(%ebp)
	cmpl	%eax, %edx
	movl	%eax, -40(%ebp)
	jb	.L124
#APP
	ud2
	.word 50
	.long .LC0

	.p2align 4,,15
#NO_APP
.L124:
	movl	-28(%ebp), %edx
	movl	$init_mm, %eax
	movl	-32(%ebp), %ecx
	call	pte_alloc
	movl	$-12, %edx
	testl	%eax, %eax
	je	.L128
	movl	%eax, %esi
	movl	-32(%ebp), %ecx
	movl	-40(%ebp), %eax
	movl	-32(%ebp), %ebx
	movl	-32(%ebp), %edi
	movl	-36(%ebp), %edx
	andl	$4194303, %ebx
	subl	%ecx, %eax
	leal	(%eax,%ebx), %eax
	movl	%eax, -44(%ebp)
	addl	%edx, %edi
	cmpl	$4194305, %eax
	movl	$4194304, %eax
	cmovb	-44(%ebp), %eax
	cmpl	%eax, %ebx
	movl	%eax, -44(%ebp)
	jb	.L131
#APP
	ud2
	.word 25
	.long .LC0

	.p2align 4,,15
#NO_APP
.L131:
	movl	(%esi), %eax
	testl	%eax, %eax
	jne	.L143
.L134:
	movl	20(%ebp), %edx
	movl	%edi, %eax
	addl	$4096, %edi
	andl	$-4096, %eax
	orl	$99, %edx
	orl	%edx, %eax
	movl	%eax, (%esi)
	addl	$4, %esi
	addl	$4096, %ebx
	je	.L137
	cmpl	-44(%ebp), %ebx
	jb	.L131
.L137:
	addl	$4, -28(%ebp)
	movl	-32(%ebp), %eax
	addl	$4194304, %eax
	andl	$-4194304, %eax
	movl	%eax, -32(%ebp)
	je	.L125
	movl	-40(%ebp), %edx
	cmpl	%edx, %eax
	jb	.L124
.L125:
	xorl	%edx, %edx
.L128:
	testl	%edx, %edx
	jne	.L114
	addl	$4, -20(%ebp)
	movl	8(%ebp), %eax
	movl	$0, -16(%ebp)
	addl	$4194304, %eax
	andl	$-4194304, %eax
	movl	%eax, 8(%ebp)
	je	.L114
	movl	-24(%ebp), %edx
	cmpl	%edx, %eax
	jb	.L113
.L114:
	movb	$1, %al
#APP
	xchgb %al, init_mm+44
#NO_APP
	call	flush_tlb_all
	movl	-16(%ebp), %eax
	addl	$36, %esp
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	ret
	.p2align 4,,7
.L143:
	movl	$.LC1, (%esp)
	call	printk
#APP
	ud2
	.word 29
	.long .LC0

#NO_APP
	jmp	.L134
.Lfe1:
	.size	remap_area_pages,.Lfe1-remap_area_pages
	.p2align 4,,15
.globl __ioremap
	.type	__ioremap,@function
__ioremap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$32, %esp
	movl	%ebx, -12(%ebp)
	movl	12(%ebp), %ebx
	movl	%esi, -8(%ebp)
	movl	8(%ebp), %esi
	testl	%ebx, %ebx
	movl	%edi, -4(%ebp)
	leal	-1(%ebx,%esi), %edi
	je	.L161
	cmpl	%esi, %edi
	jb	.L161
	cmpl	$655359, %esi
	jbe	.L147
	cmpl	$1048575, %edi
	leal	-1073741824(%esi), %eax
	jbe	.L144
.L147:
	movl	high_memory, %eax
	addl	$1073741824, %eax
	cmpl	%eax, %esi
	jae	.L149
	movl	%esi, %eax
	shrl	$12, %eax
	movl	mem_map, %edx
	leal	(%eax,%eax,2), %eax
	sall	$4, %eax
	leal	(%eax,%edx), %ecx
	leal	-1(%ebx,%esi), %eax
	shrl	$12, %eax
	leal	(%eax,%eax,2), %eax
	sall	$4, %eax
	leal	(%eax,%edx), %eax
	cmpl	%eax, %ecx
	ja	.L149
	movl	%eax, %edx
	.p2align 4,,15
.L157:
	movl	24(%ecx), %eax
	testl	$16384, %eax
	je	.L161
	addl	$48, %ecx
	cmpl	%edx, %ecx
	jbe	.L157
.L149:
	movl	$1, 4(%esp)
	leal	4095(%edi), %ebx
	movl	%esi, %eax
	andl	$-4096, %ebx
	andl	$-4096, %esi
	andl	$4095, %eax
	movl	%eax, -16(%ebp)
	subl	%esi, %ebx
	movl	%ebx, (%esp)
	call	get_vm_area
	movl	%eax, %edx
	xorl	%eax, %eax
	testl	%edx, %edx
	je	.L144
	movl	4(%edx), %edi
	movl	16(%ebp), %eax
	movl	%ebx, 8(%esp)
	movl	%esi, 4(%esp)
	movl	%eax, 12(%esp)
	movl	%edi, (%esp)
	call	remap_area_pages
	testl	%eax, %eax
	jne	.L162
	movl	-16(%ebp), %edx
	leal	(%edx,%edi), %eax
	.p2align 4,,15
.L144:
	movl	-12(%ebp), %ebx
	movl	-8(%ebp), %esi
	movl	-4(%ebp), %edi
	movl	%ebp, %esp
	popl	%ebp
	ret
.L162:
	movl	%edi, (%esp)
	call	vfree
	.p2align 4,,15
.L161:
	xorl	%eax, %eax
	jmp	.L144
.Lfe2:
	.size	__ioremap,.Lfe2-__ioremap
	.p2align 4,,15
.globl iounmap
	.type	iounmap,@function
iounmap:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	cmpl	high_memory, %eax
	ja	.L165
	popl	%ebp
	ret
	.p2align 4,,7
.L165:
	andl	$-4096, %eax
	movl	%eax, 8(%ebp)
	popl	%ebp
	jmp	vfree
.Lfe3:
	.size	iounmap,.Lfe3-iounmap
	.section	.text.init,"ax",@progbits
	.p2align 4,,15
.globl bt_ioremap
	.type	bt_ioremap,@function
bt_ioremap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$28, %esp
	movl	%ebx, -12(%ebp)
	movl	12(%ebp), %eax
	movl	8(%ebp), %ebx
	movl	%esi, -8(%ebp)
	testl	%eax, %eax
	leal	-1(%eax,%ebx), %edx
	movl	%edi, -4(%ebp)
	je	.L168
	cmpl	%ebx, %edx
	jae	.L167
.L168:
	xorl	%eax, %eax
.L166:
	movl	-12(%ebp), %ebx
	movl	-8(%ebp), %esi
	movl	-4(%ebp), %edi
	movl	%ebp, %esp
	popl	%ebp
	ret
	.p2align 4,,7
.L167:
	cmpl	$655359, %ebx
	jbe	.L169
	cmpl	$1048575, %edx
	leal	-1073741824(%ebx), %eax
	jbe	.L166
.L169:
	leal	4095(%edx), %esi
	movl	%ebx, %eax
	andl	$-4096, %esi
	andl	$-4096, %ebx
	subl	%ebx, %esi
	andl	$4095, %eax
	movl	%eax, -16(%ebp)
	shrl	$12, %esi
	xorl	%eax, %eax
	cmpl	$16, %esi
	ja	.L166
	testl	%esi, %esi
	movl	$252, %edi
	jne	.L175
.L179:
	movl	-16(%ebp), %eax
	subl	$1040384, %eax
	jmp	.L166
	.p2align 4,,7
.L175:
	movl	%ebx, 4(%esp)
	addl	$4096, %ebx
	movl	%edi, (%esp)
	decl	%edi
	movl	$355, 8(%esp)
	call	__set_fixmap
	decl	%esi
	jne	.L175
	jmp	.L179
.Lfe4:
	.size	bt_ioremap,.Lfe4-bt_ioremap
	.p2align 4,,15
.globl bt_iounmap
	.type	bt_iounmap,@function
bt_iounmap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$20, %esp
	movl	%ebx, -8(%ebp)
	movl	8(%ebp), %edx
	movl	%esi, -4(%ebp)
	cmpl	$-1040384, %edx
	jb	.L180
	movl	12(%ebp), %eax
	andl	$4095, %edx
	movl	$252, %esi
	leal	4094(%eax,%edx), %eax
	movl	%eax, %ebx
	shrl	$12, %ebx
	jne	.L187
.L180:
	movl	-8(%ebp), %ebx
	movl	-4(%ebp), %esi
	movl	%ebp, %esp
	popl	%ebp
	ret
	.p2align 4,,7
.L187:
	movl	%esi, (%esp)
	decl	%esi
	movl	$0, 8(%esp)
	movl	$0, 4(%esp)
	call	__set_fixmap
	decl	%ebx
	jne	.L187
	jmp	.L180
.Lfe5:
	.size	bt_iounmap,.Lfe5-bt_iounmap
	.ident	"GCC: (GNU) 3.2.2 (Mandrake Linux 9.1 3.2.2-3mdk)"
