.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)"