* Re: 2.6.10-rc1: drivers/ide/ide-dma.o: value of -130 too large for field of 1 bytes at 911
2004-11-01 14:32 ` Adrian Bunk
@ 2004-11-01 17:21 ` Paul Dickson
0 siblings, 0 replies; 6+ messages in thread
From: Paul Dickson @ 2004-11-01 17:21 UTC (permalink / raw)
To: Adrian Bunk; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2695 bytes --]
On Mon, 1 Nov 2004 15:32:38 +0100, Adrian Bunk wrote:
> On Mon, Nov 01, 2004 at 06:48:28AM -0700, Paul Dickson wrote:
> > On Mon, 1 Nov 2004 13:12:56 +0100, Adrian Bunk wrote:
> >
> > > On Mon, Nov 01, 2004 at 03:54:02AM -0700, Paul Dickson wrote:
> > > > With the attached .config, I'm getting this while compiling...
> > > >
> > > >...
> > > > CC drivers/ide/ide-dma.o
> > > > {standard input}: Assembler messages:
> > > > {standard input}:607: Error: value of -130 too large for field of 1 bytes at 911
> > > > make[3]: *** [drivers/ide/ide-dma.o] Error 1
> > > > make[2]: *** [drivers/ide] Error 2
> > > > make[1]: *** [drivers] Error 2
> > > > make: *** [bzImage] Error 2
> > > >
> > > > I got the same error with 2.6.9 too.
> > > >
> > > > GCC 3.2.2 and 3.4.1.
> > > >
> > > > Has this been fixed since 2.6.10-rc1? Searching my Linux-Kernel folder
> > > > didn't find a match.
> > >
> > > I can't reproduce it with your .config in 2.6.10-rc1.
> > >
> > > Please send the output of ./scripts/ver_linux .
> >
> > The problem does not occur if I unselect "Generic PCI bus-master DMA
> > support".
>
> That's not a surprise since in this case ide-dma.c won't be included
> into your kernel.
>
> > I'm also using 0=../out.router.20041030 for an external directory:
> > make O=../out.router.20041030/ bzImage
>
> Works for me...
>
> > >From the FC2 system:
> >...
> > >From the RH9 system:
> >...
>
> The systems seem to be different enough for ruling out a problem with a
> specific compiler or assembler version (in both cases, my versions
> are between your versions).
As I mentioned, this is a problem with RH9; you might not want to take
this further. :-)
> You don't have _any_ patches applied?
> Your kernel comes directly from ftp.kernel.org (or one of it's mirrors)?
No patches. I downloaded 2.6.9 again last night and applied the
2.6.10-rc1 patch with ketchup-0.8.1. The downloaded 2.6.9 and my previous
version created by ketchup had no differences.
I avoided a 2.6.10-rc1 problem by hand copying usr/initramfs_list to
../out.router.20041030/usr
> Does unsetting
> General setup
> Configure standard kernel features (for small systems)
> Optimize for size
> help?
Yes, that avoided the problem too.
> Please do the following:
> - make V=1 O=../out.router.20041030/ bzImage
> - cd ../out.router.20041030/
> - the first command should have given you the failed gcc command;
> run it with the following changes:
> - replace "-c" with "-S"
> - replace "ide-dma.o" with "ide-dma.s"
> - send me the resulting file drivers/ide/ide-dma.s
> (please Cc linux-kernel)
Attached is the ide-dma.s with "Optimize for size" on.
-Paul
[-- Attachment #2: ide-dma.s --]
[-- Type: application/octet-stream, Size: 30094 bytes --]
.file "ide-dma.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Micropolis 2112A"
.LC1:
.string "ALL"
.LC2:
.string "CONNER CTMA 4000"
.LC3:
.string "CONNER CTT8000-A"
.LC4:
.string "ST34342A"
.section .rodata
.align 32
.type drive_whitelist,@object
.size drive_whitelist,40
drive_whitelist:
.long .LC0
.long .LC1
.long .LC2
.long .LC1
.long .LC3
.long .LC1
.long .LC4
.long .LC1
.long 0
.long 0
.section .rodata.str1.1
.LC5:
.string "WDC AC11000H"
.LC6:
.string "WDC AC22100H"
.LC7:
.string "WDC AC32500H"
.LC8:
.string "WDC AC33100H"
.LC9:
.string "WDC AC31600H"
.LC10:
.string "WDC AC32100H"
.LC11:
.string "24.09P07"
.LC12:
.string "WDC AC23200L"
.LC13:
.string "21.10N21"
.LC14:
.string "Compaq CRD-8241B"
.LC15:
.string "CRD-8400B"
.LC16:
.string "CRD-8480B"
.LC17:
.string "CRD-8480C"
.LC18:
.string "CRD-8482B"
.LC19:
.string "CRD-84"
.LC20:
.string "SanDisk SDP3B"
.LC21:
.string "SanDisk SDP3B-64"
.LC22:
.string "SANYO CD-ROM CRD"
.LC23:
.string "HITACHI CDR-8"
.LC24:
.string "HITACHI CDR-8335"
.LC25:
.string "HITACHI CDR-8435"
.LC26:
.string "Toshiba CD-ROM XM-6202B"
.LC27:
.string "CD-532E-A"
.LC28:
.string "E-IDE CD-ROM CR-840"
.LC29:
.string "CD-ROM Drive/F5A"
.LC30:
.string "RICOH CD-R/RW MP7083A"
.LC31:
.string "WPI CDD-820"
.LC32:
.string "SAMSUNG CD-ROM SC-148C"
.LC33:
.string "SAMSUNG CD-ROM SC-148F"
.LC34:
.string "SAMSUNG CD-ROM SC"
.LC35:
.string "SAMSUNG CD-ROM SN-124"
.LC36:
.string "PLEXTOR CD-R PX-W8432T"
.section .rodata.str1.32,"aMS",@progbits,1
.align 32
.LC37:
.string "ATAPI CD-ROM DRIVE 40X MAXIMUM"
.section .rodata.str1.1
.LC38:
.string "_NEC DV5800A"
.section .rodata
.align 32
.type drive_blacklist,@object
.size drive_blacklist,272
drive_blacklist:
.long .LC5
.long .LC1
.long .LC6
.long .LC1
.long .LC7
.long .LC1
.long .LC8
.long .LC1
.long .LC9
.long .LC1
.long .LC10
.long .LC11
.long .LC12
.long .LC13
.long .LC14
.long .LC1
.long .LC15
.long .LC1
.long .LC16
.long .LC1
.long .LC17
.long .LC1
.long .LC18
.long .LC1
.long .LC19
.long .LC1
.long .LC20
.long .LC1
.long .LC21
.long .LC1
.long .LC22
.long .LC1
.long .LC23
.long .LC1
.long .LC24
.long .LC1
.long .LC25
.long .LC1
.long .LC26
.long .LC1
.long .LC27
.long .LC1
.long .LC28
.long .LC1
.long .LC29
.long .LC1
.long .LC30
.long .LC1
.long .LC31
.long .LC1
.long .LC32
.long .LC1
.long .LC33
.long .LC1
.long .LC34
.long .LC1
.long .LC21
.long .LC1
.long .LC35
.long .LC1
.long .LC36
.long .LC1
.long .LC37
.long .LC1
.long .LC38
.long .LC1
.long 0
.long 0
.text
.type in_drive_list,@function
in_drive_list:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
movl 12(%ebp), %ebx
cmpl $0, (%ebx)
je .L12
.L10:
movl 8(%ebp), %edi
movl (%ebx), %esi
addl $54, %edi
#APP
1: lodsb
scasb
jne 2f
testb %al,%al
jne 1b
xorl %eax,%eax
jmp 3f
2: sbbl %eax,%eax
orb $1,%al
3:
#NO_APP
testl %eax, %eax
je .L13
.L4:
addl $8, %ebx
cmpl $0, (%ebx)
jne .L10
.L12:
xorl %eax, %eax
.L1:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L13:
movl 8(%ebp), %eax
addl $46, %eax
pushl %eax
pushl 4(%ebx)
call strstr
popl %edx
testl %eax, %eax
popl %ecx
jne .L8
movl 4(%ebx), %esi
movl $.LC1, %edi
#APP
1: lodsb
scasb
jne 2f
testb %al,%al
jne 1b
xorl %eax,%eax
jmp 3f
2: sbbl %eax,%eax
orb $1,%al
3:
#NO_APP
testl %eax, %eax
jne .L4
.L8:
movl $1, %eax
jmp .L1
.Lfe1:
.size in_drive_list,.Lfe1-in_drive_list
.section .rodata.str1.1
.LC40:
.string "dma_intr"
.section .rodata.str1.32
.align 32
.LC39:
.string "<3>%s: dma_intr: bad DMA status (dma_stat=%x)\n"
.text
.globl ide_dma_intr
.type ide_dma_intr,@function
ide_dma_intr:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
movl 8(%ebp), %ebx
movl 112(%ebx), %eax
pushl %ebx
call *1108(%eax)
movl %eax, %esi
movl 112(%ebx), %eax
pushl 52(%eax)
call *1172(%eax)
popl %edx
popl %ecx
movl %eax, %edi
movb 176(%ebx), %al
orl $88, %eax
andl %edi, %eax
cmpb $80, %al
je .L17
.L15:
movl %edi, %ecx
movl 28(%ebx), %edx
movzbl %cl, %eax
pushl %eax
pushl $.LC40
pushl %ebx
call *32(%edx)
.L14:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L17:
movl %esi, %eax
testb %al, %al
jne .L16
movl 112(%ebx), %eax
movl 28(%ebx), %edx
movl 8(%eax), %eax
movl 32(%eax), %eax
pushl 16(%eax)
pushl $1
pushl %ebx
call *24(%edx)
xorl %eax, %eax
jmp .L14
.L16:
movzbl %al, %eax
pushl %eax
pushl %ebx
pushl $.LC39
call printk
addl $12, %esp
jmp .L15
.Lfe2:
.size ide_dma_intr,.Lfe2-ide_dma_intr
.section .rodata.str1.1
.LC41:
.string "include2/asm/dma-mapping.h"
.text
.globl ide_build_sglist
.type ide_build_sglist,@function
ide_build_sglist:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
movl 8(%ebp), %eax
pushl %ebx
movl 112(%eax), %esi
movl 1200(%esi), %ebx
pushl %ebx
pushl 12(%ebp)
pushl 16(%eax)
call blk_rq_map_sg
addl $12, %esp
movl %eax, %edi
movl 12(%ebp), %eax
testb $1, 8(%eax)
sete %al
movzbl %al, %eax
incl %eax
cmpl $3, %eax
movl %eax, 1212(%esi)
je .L37
.L23:
testl %edi, %edi
jle .L35
movl %ebx, %edx
movl %edi, %ecx
.L36:
movl (%edx), %eax
testl %eax, %eax
je .L38
.L29:
subl mem_map, %eax
sarl $5, %eax
sall $12, %eax
addl 4(%edx), %eax
movl %eax, 8(%edx)
addl $16, %edx
loop .L36
.L35:
leal -12(%ebp), %esp
movl %edi, %eax
popl %ebx
popl %esi
popl %edi
leave
ret
.L38:
#APP
ud2
.word 44
.long .LC41
#NO_APP
jmp .L29
.L37:
#APP
ud2
.word 41
.long .LC41
#NO_APP
jmp .L23
.Lfe3:
.size ide_build_sglist,.Lfe3-ide_build_sglist
.section .rodata.str1.32
.align 32
.LC42:
.string "/home/dickson/downloads/linux/linux-2.6.10-rc1/drivers/ide/ide-dma.c"
.text
.globl ide_raw_build_sglist
.type ide_raw_build_sglist,@function
ide_raw_build_sglist:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
subl $16, %esp
movl 8(%ebp), %eax
movl 12(%ebp), %edx
movl 112(%eax), %eax
movl %eax, -16(%ebp)
movl 1200(%eax), %ebx
movl $0, -20(%ebp)
movl 92(%edx), %eax
movl 72(%edx), %esi
cmpl $4, 28(%eax)
setne %al
movl 16(%edx), %edx
movl -16(%ebp), %ecx
movzbl %al, %eax
incl %eax
cmpl $256, %edx
movl %eax, 1212(%ecx)
jle .L42
#APP
ud2
.word 251
.long .LC42
#NO_APP
.L42:
cmpl $128, %edx
jle .L43
movl $4, %ecx
movl %ebx, %edi
movl -20(%ebp), %eax
#APP
rep ; stosl
#NO_APP
leal 1073741824(%esi), %eax
addl $-128, %edx
shrl $12, %eax
sall $5, %eax
addl mem_map, %eax
movl $65536, 12(%ebx)
movl %eax, (%ebx)
movl %esi, %eax
andl $4095, %eax
addl $65536, %esi
movl %eax, 4(%ebx)
movl $1, -20(%ebp)
.L43:
movl -20(%ebp), %edi
sall $9, %edx
xorl %eax, %eax
movl $4, %ecx
sall $4, %edi
leal (%edi,%ebx), %edi
movl %edi, -28(%ebp)
#APP
rep ; stosl
#NO_APP
leal 1073741824(%esi), %eax
movl -28(%ebp), %ecx
andl $4095, %esi
shrl $12, %eax
sall $5, %eax
addl mem_map, %eax
movl %edx, 12(%ecx)
movl %esi, 4(%ecx)
movl %eax, (%ecx)
movl -16(%ebp), %edi
incl -20(%ebp)
cmpl $3, 1212(%edi)
je .L92
.L78:
cmpl $0, -20(%ebp)
jle .L90
movl %ebx, %edi
movl -20(%ebp), %ecx
.L91:
movl (%edi), %eax
testl %eax, %eax
je .L93
.L84:
subl mem_map, %eax
sarl $5, %eax
sall $12, %eax
addl 4(%edi), %eax
movl %eax, 8(%edi)
addl $16, %edi
loop .L91
.L90:
movl -20(%ebp), %eax
addl $16, %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L93:
#APP
ud2
.word 44
.long .LC41
#NO_APP
jmp .L84
.L92:
#APP
ud2
.word 41
.long .LC41
#NO_APP
jmp .L78
.Lfe4:
.size ide_raw_build_sglist,.Lfe4-ide_raw_build_sglist
.section .rodata.str1.1
.LC44:
.string "<3>%s: empty DMA table?\n"
.LC43:
.string "<3>%s: DMA table too small\n"
.text
.globl ide_build_dmatable
.type ide_build_dmatable,@function
ide_build_dmatable:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
subl $16, %esp
movl 8(%ebp), %eax
movl 12(%ebp), %edx
movl 112(%eax), %eax
movl %eax, -16(%ebp)
cmpl $10, 1024(%eax)
movl 1192(%eax), %ebx
movl $0, -24(%ebp)
sete %al
movl -16(%ebp), %ecx
movzbl %al, %eax
movl %eax, -20(%ebp)
movl 8(%ecx), %eax
movl 32(%eax), %eax
testb $2, 10(%eax)
je .L95
pushl %edx
pushl 8(%ebp)
call ide_raw_build_sglist
.L127:
movl %eax, %ecx
movl -16(%ebp), %eax
movl %ecx, 1208(%eax)
popl %edi
popl %eax
xorl %eax, %eax
testl %ecx, %ecx
je .L94
movl -16(%ebp), %eax
movl 1200(%eax), %eax
movl %eax, -28(%ebp)
.L112:
movl -28(%ebp), %eax
movl 12(%eax), %esi
movl 8(%eax), %edi
testl %esi, %esi
je .L124
.L111:
movl -24(%ebp), %eax
incl -24(%ebp)
cmpl $255, %eax
ja .L126
movl %edi, %eax
movl $65536, %edx
andl $65535, %eax
subl %eax, %edx
cmpl %esi, %edx
jbe .L107
movl %esi, %edx
.L107:
movl %edi, (%ebx)
movzwl %dx,%eax
addl $4, %ebx
cmpl $0, -20(%ebp)
je .L108
shrl $2, %eax
decl %eax
sall $16, %eax
.L108:
testl %eax, %eax
jne .L109
movl -24(%ebp), %eax
incl -24(%ebp)
cmpl $255, %eax
ja .L126
leal 32768(%edi), %eax
movl $32768, (%ebx)
addl $4, %ebx
movl %eax, (%ebx)
movl $32768, %eax
addl $4, %ebx
.L109:
movl %eax, (%ebx)
addl %edx, %edi
addl $4, %ebx
subl %edx, %esi
jne .L111
.L124:
addl $16, -28(%ebp)
loop .L112
cmpl $0, -24(%ebp)
je .L113
cmpl $0, -20(%ebp)
jne .L114
orl $-2147483648, -4(%ebx)
.L114:
movl -24(%ebp), %eax
.L94:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L113:
pushl 8(%ebp)
pushl $.LC44
.L128:
.L105:
call printk
movl -16(%ebp), %ecx
popl %ebx
cmpl $3, 1212(%ecx)
popl %esi
je .L129
.L120:
xorl %eax, %eax
jmp .L94
.L129:
#APP
ud2
.word 73
.long .LC41
#NO_APP
jmp .L120
.L126:
pushl 8(%ebp)
pushl $.LC43
jmp .L128
.L95:
pushl %edx
pushl 8(%ebp)
call ide_build_sglist
jmp .L127
.Lfe5:
.size ide_build_dmatable,.Lfe5-ide_build_dmatable
.globl ide_destroy_dmatable
.type ide_destroy_dmatable,@function
ide_destroy_dmatable:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl 112(%eax), %eax
cmpl $3, 1212(%eax)
je .L137
.L130:
leave
ret
.L137:
#APP
ud2
.word 73
.long .LC41
#NO_APP
jmp .L130
.Lfe6:
.size ide_destroy_dmatable,.Lfe6-ide_destroy_dmatable
.type config_drive_for_dma,@function
config_drive_for_dma:
pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %ebx
movl 8(%ebp), %ebx
movl 36(%ebx), %ecx
movl 112(%ebx), %esi
movb 99(%ecx), %al
andl $1, %eax
testb %al, %al
je .L139
testb $64, 1292(%esi)
je .L139
movw 106(%ecx), %dx
movl %edx, %eax
andl $4, %eax
testw %ax, %ax
je .L140
movzbw 177(%ecx), %ax
andl $127, %eax
testw %ax, %ax
jne .L145
.L140:
andl $2, %edx
testw %dx, %dx
je .L141
movw 126(%ecx), %ax
andw $1028, %ax
cmpw $1028, %ax
je .L145
movw 124(%ecx), %ax
andw $1028, %ax
cmpw $1028, %ax
je .L145
.L141:
pushl %ebx
call __ide_dma_good_drive
popl %edx
testl %eax, %eax
jne .L145
.L139:
pushl %ebx
call *1120(%esi)
.L138:
leal -8(%ebp), %esp
popl %ebx
popl %esi
leave
ret
.L145:
pushl %ebx
call *1116(%esi)
jmp .L138
.Lfe7:
.size config_drive_for_dma,.Lfe7-config_drive_for_dma
.section .rodata.str1.32
.align 32
.LC45:
.string "<4>%s: dma_timer_expiry: dma status == 0x%02x\n"
.text
.type dma_timer_expiry,@function
dma_timer_expiry:
pushl %ebp
movl %esp, %ebp
pushl %esi
movl 8(%ebp), %esi
pushl %ebx
movl 112(%esi), %eax
pushl 1264(%eax)
call *1172(%eax)
movb %al, %bl
movzbl %al, %eax
pushl %eax
pushl %esi
pushl $.LC45
call printk
movl $10000, %edx
movb %bl, %al
addl $16, %esp
andl $24, %eax
cmpb $24, %al
je .L146
movl 112(%esi), %eax
orl $-1, %edx
movl 8(%eax), %eax
movl $0, 208(%eax)
movb %bl, %al
andl $2, %eax
testb %al, %al
jne .L146
movb %bl, %al
movl $10000, %edx
andl $1, %eax
testb %al, %al
jne .L146
andl $4, %ebx
movl $10000, %edx
testb %bl, %bl
jne .L146
xorl %edx, %edx
.L146:
leal -8(%ebp), %esp
movl %edx, %eax
popl %ebx
popl %esi
leave
ret
.Lfe8:
.size dma_timer_expiry,.Lfe8-dma_timer_expiry
.globl __ide_dma_host_off
.type __ide_dma_host_off,@function
__ide_dma_host_off:
pushl %ebp
movl %esp, %ebp
pushl %esi
movl 8(%ebp), %eax
pushl %ebx
movb 136(%eax), %bl
movl 112(%eax), %esi
shrb $4, %bl
pushl 1264(%esi)
andl $1, %ebx
call *1172(%esi)
movzbl %bl, %edx
leal 5(%edx), %ecx
movl $-2, %edx
pushl 1264(%esi)
roll %cl, %edx
andl %eax, %edx
movzbl %dl, %edx
pushl %edx
call *1148(%esi)
leal -8(%ebp), %esp
popl %ebx
xorl %eax, %eax
popl %esi
leave
ret
.Lfe9:
.size __ide_dma_host_off,.Lfe9-__ide_dma_host_off
.globl __ide_dma_off_quietly
.type __ide_dma_off_quietly,@function
__ide_dma_off_quietly:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
movb $0, 142(%ebx)
pushl $0
pushl %ebx
call ide_toggle_bounce
movl 112(%ebx), %eax
pushl %ebx
call *1132(%eax)
addl $12, %esp
movl -4(%ebp), %ebx
leave
testl %eax, %eax
setne %al
movzbl %al, %eax
ret
.Lfe10:
.size __ide_dma_off_quietly,.Lfe10-__ide_dma_off_quietly
.section .rodata.str1.1
.LC46:
.string "<6>%s: DMA disabled\n"
.text
.globl __ide_dma_off
.type __ide_dma_off,@function
__ide_dma_off:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
pushl %ebx
pushl $.LC46
call printk
movl 112(%ebx), %eax
pushl %ebx
call *1120(%eax)
movl -4(%ebp), %ebx
leave
ret
.Lfe11:
.size __ide_dma_off,.Lfe11-__ide_dma_off
.globl __ide_dma_host_on
.type __ide_dma_host_on,@function
__ide_dma_host_on:
pushl %ebp
movl %esp, %ebp
pushl %esi
movl 8(%ebp), %eax
pushl %ebx
cmpb $0, 142(%eax)
jne .L157
movl $1, %eax
.L155:
leal -8(%ebp), %esp
popl %ebx
popl %esi
leave
ret
.L157:
movb 136(%eax), %bl
movl 112(%eax), %esi
shrb $4, %bl
pushl 1264(%esi)
andl $1, %ebx
call *1172(%esi)
movzbl %bl, %edx
leal 5(%edx), %ecx
movl $1, %edx
pushl 1264(%esi)
sall %cl, %edx
orl %edx, %eax
movzbl %al, %eax
pushl %eax
call *1148(%esi)
xorl %eax, %eax
jmp .L155
.Lfe12:
.size __ide_dma_host_on,.Lfe12-__ide_dma_host_on
.globl __ide_dma_on
.type __ide_dma_on,@function
__ide_dma_on:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
pushl %ebx
call __ide_dma_bad_drive
movl $1, %edx
testl %eax, %eax
popl %ecx
je .L161
.L158:
movl -4(%ebp), %ebx
movl %edx, %eax
leave
ret
.L161:
movb $1, 142(%ebx)
pushl $1
pushl %ebx
call ide_toggle_bounce
movl 112(%ebx), %eax
pushl %ebx
call *1128(%eax)
xorl %edx, %edx
addl $12, %esp
testl %eax, %eax
setne %dl
jmp .L158
.Lfe13:
.size __ide_dma_on,.Lfe13-__ide_dma_on
.globl __ide_dma_check
.type __ide_dma_check,@function
__ide_dma_check:
pushl %ebp
movl %esp, %ebp
leave
jmp config_drive_for_dma
.Lfe14:
.size __ide_dma_check,.Lfe14-__ide_dma_check
.globl ide_dma_setup
.type ide_dma_setup,@function
ide_dma_setup:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
movl 8(%ebp), %eax
pushl %ebx
movl 112(%eax), %ebx
movl 8(%ebx), %eax
movl 32(%eax), %esi
testb $1, 8(%esi)
pushl %esi
sete %al
pushl 8(%ebp)
movzbl %al, %edi
call ide_build_dmatable
sall $3, %edi
popl %edx
testl %eax, %eax
popl %ecx
jne .L166
pushl %esi
pushl 8(%ebp)
call ide_map_sg
movl $1, %eax
.L163:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L166:
pushl 1272(%ebx)
pushl 1196(%ebx)
call *1160(%ebx)
pushl 1256(%ebx)
pushl %edi
call *1148(%ebx)
pushl 1264(%ebx)
call *1172(%ebx)
pushl 1264(%ebx)
orl $6, %eax
movzbl %al, %eax
pushl %eax
call *1148(%ebx)
movl 8(%ebp), %eax
movb $1, 145(%eax)
xorl %eax, %eax
jmp .L163
.Lfe15:
.size ide_dma_setup,.Lfe15-ide_dma_setup
.type ide_dma_exec_cmd,@function
ide_dma_exec_cmd:
pushl %ebp
movl %esp, %ebp
pushl $dma_timer_expiry
movzbl 12(%ebp), %eax
pushl $20000
pushl $ide_dma_intr
pushl %eax
pushl 8(%ebp)
call ide_execute_command
leave
ret
.Lfe16:
.size ide_dma_exec_cmd,.Lfe16-ide_dma_exec_cmd
.globl ide_dma_start
.type ide_dma_start,@function
ide_dma_start:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %eax
movl 112(%eax), %ebx
pushl 1256(%ebx)
call *1172(%ebx)
pushl 1256(%ebx)
orl $1, %eax
movzbl %al, %eax
pushl %eax
call *1148(%ebx)
movl $1, 1484(%ebx)
movl -4(%ebp), %ebx
leave
ret
.Lfe17:
.size ide_dma_start,.Lfe17-ide_dma_start
.globl __ide_dma_end
.type __ide_dma_end,@function
__ide_dma_end:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
movl 8(%ebp), %esi
pushl %ebx
movl 112(%esi), %ebx
movb $0, 145(%esi)
pushl 1256(%ebx)
call *1172(%ebx)
pushl 1256(%ebx)
andl $254, %eax
pushl %eax
call *1148(%ebx)
pushl 1264(%ebx)
call *1172(%ebx)
pushl 1264(%ebx)
movl %eax, %edi
orl $6, %eax
movzbl %al, %eax
pushl %eax
call *1148(%ebx)
pushl %esi
call ide_destroy_dmatable
movl $0, 1484(%ebx)
movl %edi, %eax
addl $28, %esp
andl $7, %eax
cmpb $4, %al
je .L170
orl $16, %edi
movl %edi, %edx
movzbl %dl, %eax
.L171:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L170:
xorl %eax, %eax
jmp .L171
.Lfe18:
.size __ide_dma_end,.Lfe18-__ide_dma_end
.section .rodata
.type __func__.0,@object
.size __func__.0,19
__func__.0:
.string "__ide_dma_test_irq"
.section .rodata.str1.32
.align 32
.LC47:
.string "<4>%s: (%s) called while not waiting\n"
.text
.globl __ide_dma_test_irq
.type __ide_dma_test_irq,@function
__ide_dma_test_irq:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
movl 112(%ebx), %eax
pushl 1264(%eax)
call *1172(%eax)
popl %edx
movl $1, %edx
andl $4, %eax
testb %al, %al
jne .L172
cmpb $0, 145(%ebx)
je .L175
.L174:
xorl %edx, %edx
.L172:
movl -4(%ebp), %ebx
movl %edx, %eax
leave
ret
.L175:
pushl $__func__.0
pushl %ebx
pushl $.LC47
call printk
addl $12, %esp
jmp .L174
.Lfe19:
.size __ide_dma_test_irq,.Lfe19-__ide_dma_test_irq
.section .rodata.str1.32
.align 32
.LC48:
.string "<4>%s: Disabling (U)DMA for %s (blacklisted)\n"
.text
.globl __ide_dma_bad_drive
.type __ide_dma_bad_drive,@function
__ide_dma_bad_drive:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
movl 8(%ebp), %edi
pushl %ebx
movl 36(%edi), %ebx
pushl $drive_blacklist
pushl %ebx
call in_drive_list
popl %ecx
movl %eax, %esi
popl %eax
testl %esi, %esi
jne .L178
xorl %eax, %eax
.L176:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L178:
leal 54(%ebx), %eax
pushl %eax
pushl %edi
pushl $.LC48
call printk
movl %esi, %eax
jmp .L176
.Lfe20:
.size __ide_dma_bad_drive,.Lfe20-__ide_dma_bad_drive
.globl __ide_dma_good_drive
.type __ide_dma_good_drive,@function
__ide_dma_good_drive:
pushl %ebp
movl %esp, %ebp
pushl $drive_whitelist
movl 8(%ebp), %eax
pushl 36(%eax)
call in_drive_list
leave
ret
.Lfe21:
.size __ide_dma_good_drive,.Lfe21-__ide_dma_good_drive
.section .rodata.str1.1
.LC57:
.string ", UDMA(16)"
.LC56:
.string ", UDMA(25)"
.LC55:
.string ", UDMA(33)"
.LC54:
.string ", UDMA(44)"
.LC53:
.string ", UDMA(66)"
.LC52:
.string ", UDMA(100)"
.LC51:
.string ", UDMA(133)"
.LC50:
.string ", UDMA(mode 7)"
.LC58:
.string ", (U)DMA"
.LC49:
.string ", BUG DMA OFF"
.LC59:
.string ", DMA"
.LC60:
.string ", BUG"
.text
.globl __ide_dma_verbose
.type __ide_dma_verbose,@function
__ide_dma_verbose:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
movl 8(%ebp), %eax
pushl %ebx
movl 36(%eax), %esi
movl 112(%eax), %edi
movw 106(%esi), %dx
movl %edx, %eax
andl $4, %eax
testw %ax, %ax
je .L181
cmpb $0, 177(%esi)
movw 176(%esi), %bx
je .L182
cmpb $0, 127(%esi)
jne .L209
.L182:
movzbl 1018(%edi), %ecx
movzbl %bh, %edx
movzwl %bx, %eax
andl %ecx, %edx
testl %edx, %eax
je .L183
shrw $11, %bx
testw %bx, %bx
jne .L210
.L195:
movw 176(%esi), %dx
movl %edx, %eax
shrw $10, %ax
andl $1, %eax
testw %ax, %ax
jne .L211
movl %edx, %eax
shrw $9, %ax
andl $1, %eax
testw %ax, %ax
jne .L212
shrw $8, %dx
andl $1, %edx
testw %dx, %dx
jne .L213
.L203:
movl $1, %eax
.L180:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L213:
pushl $.LC57
.L208:
call printk
popl %eax
jmp .L203
.L212:
pushl $.LC56
jmp .L208
.L211:
pushl $.LC55
jmp .L208
.L210:
pushl 8(%ebp)
call eighty_ninty_three
popl %edx
testb %al, %al
je .L195
movw 176(%esi), %dx
testw %dx, %dx
js .L214
movl %edx, %eax
shrw $14, %ax
andl $1, %eax
testw %ax, %ax
jne .L215
movl %edx, %eax
shrw $13, %ax
andl $1, %eax
testw %ax, %ax
jne .L216
movl %edx, %eax
shrw $12, %ax
andl $1, %eax
testw %ax, %ax
jne .L217
shrw $11, %dx
andl $1, %edx
testw %dx, %dx
je .L195
pushl $.LC54
jmp .L208
.L217:
pushl $.LC53
jmp .L208
.L216:
pushl $.LC52
jmp .L208
.L215:
pushl $.LC51
jmp .L208
.L214:
pushl $.LC50
jmp .L208
.L183:
pushl $.LC58
jmp .L208
.L209:
pushl $.LC49
call printk
pushl 8(%ebp)
call *1120(%edi)
jmp .L180
.L181:
movl %edx, %eax
andl $2, %eax
testw %ax, %ax
je .L204
cmpb $0, 127(%esi)
je .L205
cmpb $0, 125(%esi)
jne .L209
.L205:
pushl $.LC59
jmp .L208
.L204:
andl $1, %edx
testw %dx, %dx
je .L203
pushl $.LC60
jmp .L208
.Lfe22:
.size __ide_dma_verbose,.Lfe22-__ide_dma_verbose
.section .rodata.str1.1
.LC61:
.string "%s: DMA interrupt recovery\n"
.text
.globl __ide_dma_lostirq
.type __ide_dma_lostirq,@function
__ide_dma_lostirq:
pushl %ebp
movl %esp, %ebp
pushl 8(%ebp)
pushl $.LC61
call printk
leave
movl $1, %eax
ret
.Lfe23:
.size __ide_dma_lostirq,.Lfe23-__ide_dma_lostirq
.section .rodata.str1.32
.align 32
.LC62:
.string "<3>%s: timeout waiting for DMA\n"
.text
.globl __ide_dma_timeout
.type __ide_dma_timeout,@function
__ide_dma_timeout:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
pushl %ebx
pushl $.LC62
call printk
movl 112(%ebx), %eax
pushl %ebx
call *1124(%eax)
xorl %edx, %edx
addl $12, %esp
testl %eax, %eax
je .L221
.L219:
movl -4(%ebp), %ebx
movl %edx, %eax
leave
ret
.L221:
movl 112(%ebx), %eax
pushl %ebx
call *1108(%eax)
movl %eax, %edx
jmp .L219
.Lfe24:
.size __ide_dma_timeout,.Lfe24-__ide_dma_timeout
.globl ide_release_dma_engine
.type ide_release_dma_engine,@function
ide_release_dma_engine:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
movl 1192(%ebx), %eax
testl %eax, %eax
je .L223
movl 1028(%ebx), %edx
pushl 1196(%ebx)
pushl %eax
xorl %eax, %eax
testl %edx, %edx
pushl $2048
je .L225
leal 68(%edx), %eax
.L225:
pushl %eax
call dma_free_coherent
movl $0, 1192(%ebx)
addl $16, %esp
.L223:
movl -4(%ebp), %ebx
movl $1, %eax
leave
ret
.Lfe25:
.size ide_release_dma_engine,.Lfe25-ide_release_dma_engine
.globl ide_release_iomio_dma
.type ide_release_iomio_dma,@function
ide_release_iomio_dma:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
movl 1280(%ebx), %eax
testl %eax, %eax
je .L228
cmpb $0, 1014(%ebx)
je .L230
.L228:
pushl $8
pushl 1252(%ebx)
pushl $ioport_resource
call __release_region
addl $12, %esp
cmpl $0, 1276(%ebx)
jne .L231
.L229:
movl -4(%ebp), %ebx
movl $1, %eax
leave
ret
.L231:
pushl $8
pushl 1252(%ebx)
pushl $ioport_resource
call __release_region
addl $12, %esp
jmp .L229
.L230:
pushl %eax
movl 1252(%ebx), %eax
addl $16, %eax
pushl %eax
pushl $ioport_resource
call __release_region
addl $12, %esp
jmp .L228
.Lfe26:
.size ide_release_iomio_dma,.Lfe26-ide_release_iomio_dma
.globl ide_release_dma
.type ide_release_dma,@function
ide_release_dma:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
cmpl $2, 1236(%ebx)
je .L232
cmpl $15, 1024(%ebx)
je .L232
pushl %ebx
call ide_release_dma_engine
popl %ecx
movl %ebx, 8(%ebp)
movl -4(%ebp), %ebx
leave
jmp ide_release_iomio_dma
.L232:
movl -4(%ebp), %ebx
movl $1, %eax
leave
ret
.Lfe27:
.size ide_release_dma,.Lfe27-ide_release_dma
.section .rodata.str1.1
.LC63:
.string " CPU"
.section .rodata.str1.32
.align 32
.LC65:
.string "<3>%s: -- Error, unable to allocate%s DMA table(s).\n"
.text
.globl ide_allocate_dma_engine
.type ide_allocate_dma_engine,@function
ide_allocate_dma_engine:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
movl 1028(%ebx), %edx
leal 1196(%ebx), %eax
pushl $32
pushl %eax
xorl %eax, %eax
testl %edx, %edx
pushl $2048
je .L237
leal 68(%edx), %eax
.L237:
pushl %eax
call dma_alloc_coherent
xorl %edx, %edx
addl $16, %esp
movl %eax, 1192(%ebx)
testl %eax, %eax
je .L242
.L235:
movl -4(%ebp), %ebx
movl %edx, %eax
leave
ret
.L242:
movl 1032(%ebx), %eax
pushl (%eax)
pushl $.LC63
pushl $.LC65
call printk
pushl %ebx
call ide_release_dma_engine
movl $1, %edx
jmp .L235
.Lfe28:
.size ide_allocate_dma_engine,.Lfe28-ide_allocate_dma_engine
.section .rodata.str1.1
.LC66:
.string "<6> %s: MMIO-DMA "
.text
.globl ide_mapped_mmio_dma
.type ide_mapped_mmio_dma,@function
ide_mapped_mmio_dma:
pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %ebx
movl 12(%ebp), %esi
movl 8(%ebp), %ebx
leal 16(%ebx), %eax
pushl %eax
pushl $.LC66
call printk
movl 1032(%ebx), %eax
movl %esi, 1252(%ebx)
movl 40(%eax), %eax
popl %edx
testl %eax, %eax
popl %ecx
je .L244
cmpb $0, 1014(%ebx)
jne .L244
movl %eax, 1280(%ebx)
.L244:
movl 4(%ebx), %eax
testl %eax, %eax
je .L245
cmpb $0, 1014(%ebx)
je .L246
movl 1252(%eax), %eax
.L247:
movl %eax, 1248(%ebx)
.L248:
leal -8(%ebp), %esp
xorl %eax, %eax
popl %ebx
popl %esi
leave
ret
.L246:
movl %esi, %eax
jmp .L247
.L245:
movl %esi, 1248(%ebx)
jmp .L248
.Lfe29:
.size ide_mapped_mmio_dma,.Lfe29-ide_mapped_mmio_dma
.section .rodata.str1.32
.align 32
.LC67:
.string "<6> %s: BM-DMA at 0x%04lx-0x%04lx"
.align 32
.LC69:
.string " -- Error, secondary ports in use.\n"
.section .rodata.str1.1
.LC68:
.string " -- Error, ports in use.\n"
.text
.globl ide_iomio_dma
.type ide_iomio_dma,@function
ide_iomio_dma:
pushl %ebp
movl %esp, %ebp
pushl %edi
movl 16(%ebp), %edx
pushl %esi
movl 12(%ebp), %edi
pushl %ebx
movl 8(%ebp), %esi
leal -1(%edx,%edi), %eax
leal 16(%esi), %ebx
pushl %eax
pushl %edi
pushl %ebx
pushl $.LC67
call printk
pushl %ebx
pushl 16(%ebp)
pushl %edi
pushl $ioport_resource
call __request_region
addl $32, %esp
testl %eax, %eax
je .L259
movl 1032(%esi), %eax
movl %edi, 1252(%esi)
cmpl $0, 40(%eax)
je .L251
cmpb $0, 1014(%esi)
je .L260
.L251:
movl 4(%esi), %eax
testl %eax, %eax
je .L252
cmpb $0, 1014(%esi)
je .L253
movl 1252(%eax), %eax
.L254:
movl %eax, 1248(%esi)
.L255:
movl 1276(%esi), %edx
testl %edx, %edx
jne .L261
.L256:
xorl %eax, %eax
.L249:
leal -12(%ebp), %esp
popl %ebx
popl %esi
popl %edi
leave
ret
.L261:
leal 16(%esi), %eax
pushl %eax
pushl 16(%ebp)
pushl %edx
pushl $ioport_resource
call __request_region
addl $16, %esp
testl %eax, %eax
jne .L256
pushl $.LC69
call printk
pushl 16(%ebp)
pushl %edi
pushl $ioport_resource
call __release_region
.L258:
movl $1, %eax
jmp .L249
.L253:
movl %edi, %eax
jmp .L254
.L252:
movl %edi, 1248(%esi)
jmp .L255
.L260:
pushl (%eax)
pushl 40(%eax)
leal 16(%edi), %eax
pushl %eax
pushl $ioport_resource
call __request_region
addl $16, %esp
movl 1032(%esi), %eax
movl 40(%eax), %eax
movl %eax, 1280(%esi)
jmp .L251
.L259:
pushl $.LC68
call printk
jmp .L258
.Lfe30:
.size ide_iomio_dma,.Lfe30-ide_iomio_dma
.globl ide_dma_iobase
.type ide_dma_iobase,@function
ide_dma_iobase:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %edx
movl 12(%ebp), %ebx
movl 1236(%edx), %eax
movl 16(%ebp), %ecx
cmpl $2, %eax
je .L266
decl %eax
je .L267
.L264:
movl %ecx, 16(%ebp)
movl %ebx, 12(%ebp)
movl %edx, 8(%ebp)
popl %ebx
leave
jmp ide_iomio_dma
.L267:
#APP
ud2
.word 910
.long .LC42
#NO_APP
jmp .L264
.L266:
popl %ebx
leave
jmp ide_mapped_mmio_dma
.Lfe31:
.size ide_dma_iobase,.Lfe31-ide_dma_iobase
.section .rodata.str1.1
.LC70:
.string "DMA"
.LC71:
.string "pio"
.LC72:
.string ", BIOS settings: %s:%s, %s:%s"
.LC73:
.string "\n"
.text
.globl ide_setup_dma
.type ide_setup_dma,@function
ide_setup_dma:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ebx
pushl 16(%ebp)
pushl 12(%ebp)
pushl %ebx
call ide_dma_iobase
addl $12, %esp
testl %eax, %eax
je .L295
.L268:
movl -4(%ebp), %ebx
leave
ret
.L295:
pushl %ebx
call ide_allocate_dma_engine
popl %edx
testl %eax, %eax
jne .L296
cmpl $0, 1256(%ebx)
jne .L271
movl 1252(%ebx), %eax
movl %eax, 1256(%ebx)
.L271:
cmpl $0, 1260(%ebx)
jne .L272
movl 1252(%ebx), %eax
incl %eax
movl %eax, 1260(%ebx)
.L272:
cmpl $0, 1264(%ebx)
jne .L273
movl 1252(%ebx), %eax
addl $2, %eax
movl %eax, 1264(%ebx)
.L273:
cmpl $0, 1268(%ebx)
jne .L274
movl 1252(%ebx), %eax
addl $3, %eax
movl %eax, 1268(%ebx)
.L274:
cmpl $0, 1272(%ebx)
jne .L275
movl 1252(%ebx), %eax
addl $4, %eax
movl %eax, 1272(%ebx)
.L275:
cmpl $0, 1120(%ebx)
jne .L276
movl $__ide_dma_off_quietly, 1120(%ebx)
.L276:
cmpl $0, 1132(%ebx)
jne .L277
movl $__ide_dma_host_off, 1132(%ebx)
.L277:
cmpl $0, 1116(%ebx)
jne .L278
movl $__ide_dma_on, 1116(%ebx)
.L278:
cmpl $0, 1128(%ebx)
jne .L279
movl $__ide_dma_host_on, 1128(%ebx)
.L279:
cmpl $0, 1112(%ebx)
jne .L280
movl $__ide_dma_check, 1112(%ebx)
.L280:
cmpl $0, 1096(%ebx)
jne .L281
movl $ide_dma_setup, 1096(%ebx)
.L281:
cmpl $0, 1100(%ebx)
jne .L282
movl $ide_dma_exec_cmd, 1100(%ebx)
.L282:
cmpl $0, 1104(%ebx)
jne .L283
movl $ide_dma_start, 1104(%ebx)
.L283:
cmpl $0, 1108(%ebx)
jne .L284
movl $__ide_dma_end, 1108(%ebx)
.L284:
cmpl $0, 1124(%ebx)
jne .L285
movl $__ide_dma_test_irq, 1124(%ebx)
.L285:
cmpl $0, 1136(%ebx)
jne .L286
movl $__ide_dma_verbose, 1136(%ebx)
.L286:
cmpl $0, 1144(%ebx)
jne .L287
movl $__ide_dma_timeout, 1144(%ebx)
.L287:
cmpl $0, 1140(%ebx)
jne .L288
movl $__ide_dma_lostirq, 1140(%ebx)
.L288:
cmpl $10, 1024(%ebx)
je .L289
pushl 1264(%ebx)
call *1172(%ebx)
movl $.LC70, %ecx
movb %al, %dl
andl $64, %eax
testb %al, %al
jne .L291
movl $.LC71, %ecx
.L291:
leal 592(%ebx), %eax
andl $32, %edx
pushl %ecx
testb %dl, %dl
pushl %eax
movl $.LC70, %eax
jne .L293
movl $.LC71, %eax
.L293:
pushl %eax
leal 172(%ebx), %eax
pushl %eax
pushl $.LC72
call printk
addl $24, %esp
.L289:
pushl $.LC73
call printk
cmpl $0, 1248(%ebx)
popl %eax
jne .L268
#APP
ud2
.word 974
.long .LC42
#NO_APP
jmp .L268
.L296:
movl %ebx, 8(%ebp)
movl -4(%ebp), %ebx
leave
jmp ide_release_dma
.Lfe32:
.size ide_setup_dma,.Lfe32-ide_setup_dma
.ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)"
^ permalink raw reply [flat|nested] 6+ messages in thread