Newer
Older
Scratch / mobius / src / drivers / pci / pci.s
	.file	"pci.c"
gcc2_compiled.:
___gnu_compiled_c:
.text
	.align 4
.globl _pciRead
	.def	_pciRead;	.scl	2;	.type	32;	.endef
_pciRead:
	pushl %ebp
	movl %esp,%ebp
	subl $16,%esp
	orl $-2147483648,%ecx
	xorl %eax,%eax
	andl $-2147418113,%ecx
	xorl %edx,%edx
	pushl %ebx
	movl 24(%ebp),%ebx
	movb 8(%ebp),%al
	sall $16,%eax
	orl %eax,%ecx
	movb 12(%ebp),%dl
	andl $31,%edx
	sall $11,%edx
	andb $7,%ch
	orl %edx,%ecx
	xorl %eax,%eax
	movb 16(%ebp),%al
	andl $7,%eax
	sall $8,%eax
	andb $248,%ch
	orl %eax,%ecx
	movb 20(%ebp),%dl
	andb $-4,%dl
	movb %dl,-4(%ebp)
	movb %dl,%cl
	movl $3320,%edx
	movl %ecx,%eax
/APP
	outl	%eax, %dx
/NO_APP
	movl 20(%ebp),%ecx
	andl $3,%ecx
	addw $3324,%cx
	cmpl $2,%ebx
	je L23
	jg L29
	cmpl $1,%ebx
	je L21
	jmp L27
	.p2align 4,,7
L29:
	cmpl $4,%ebx
	je L25
	jmp L27
	.p2align 4,,7
L21:
	movl %ecx,%edx
/APP
	inb	%dx,%al
/NO_APP
	andl $255,%eax
	jmp L30
	.p2align 4,,7
L23:
	movl %ecx,%edx
/APP
	inw	%dx,%ax
/NO_APP
	andl $65535,%eax
	jmp L30
	.p2align 4,,7
L25:
	movl %ecx,%edx
/APP
	inl	%dx,%eax
/NO_APP
	jmp L30
	.p2align 4,,7
L27:
	xorl %eax,%eax
L30:
	movl -20(%ebp),%ebx
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4
.globl _pciWrite
	.def	_pciWrite;	.scl	2;	.type	32;	.endef
_pciWrite:
	pushl %ebp
	movl %esp,%ebp
	subl $16,%esp
	pushl %edi
	orl $-2147483648,%ecx
	xorl %eax,%eax
	pushl %esi
	andl $-2147418113,%ecx
	xorl %edx,%edx
	pushl %ebx
	movl 24(%ebp),%esi
	movl 28(%ebp),%edi
	movl 20(%ebp),%ebx
	movb 8(%ebp),%al
	sall $16,%eax
	orl %eax,%ecx
	movb 12(%ebp),%dl
	andl $31,%edx
	sall $11,%edx
	andb $7,%ch
	orl %edx,%ecx
	xorl %eax,%eax
	movb 16(%ebp),%al
	andl $7,%eax
	sall $8,%eax
	andb $248,%ch
	orl %eax,%ecx
	movb 20(%ebp),%dl
	andb $-4,%dl
	movb %dl,-4(%ebp)
	movb %dl,%cl
	andl $3,%ebx
	addl $3324,%ebx
	movl $3320,%edx
	movl %ecx,%eax
/APP
	outl	%eax, %dx
/NO_APP
	cmpl $2,%edi
	je L35
	jg L41
	cmpl $1,%edi
	je L34
	jmp L33
	.p2align 4,,7
L41:
	cmpl $4,%edi
	je L37
	jmp L33
	.p2align 4,,7
L34:
	movl %ebx,%edx
	movl %esi,%eax
/APP
	outb	%al, %dx
/NO_APP
	jmp L33
	.p2align 4,,7
L35:
	movl %ebx,%edx
	movl %esi,%eax
/APP
	outw	%ax, %dx
/NO_APP
	jmp L33
	.p2align 4,,7
L37:
	movl %ebx,%edx
	movl %esi,%eax
/APP
	outl	%eax, %dx
/NO_APP
L33:
	leal -28(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	movl %ebp,%esp
	popl %ebp
	ret
	.align 32
LC0:
	.ascii "D\0e\0v\0i\0c\0e\0 \0I\0n\0f\0o\0:\0 \0/\0b\0u\0s\0/\0p\0c\0i\0/\0%\0d\0/\0%\0d\0/\0%\0d\0\12\0\0\0"
	.align 32
LC1:
	.ascii " \0 \0*\0 \0V\0e\0n\0d\0o\0r\0:\0 \0%\0X\0 \0 \0 \0D\0e\0v\0i\0c\0e\0:\0 \0%\0X\0 \0 \0C\0l\0a\0s\0s\0/\0S\0u\0b\0C\0l\0a\0s\0s\0/\0I\0n\0t\0e\0r\0f\0a\0c\0e\0 \0%\0X\0/\0%\0X\0/\0%\0X\0\12\0\0\0"
	.align 32
LC2:
	.ascii " \0 \0*\0 \0S\0t\0a\0t\0u\0s\0:\0 \0%\0X\0 \0 \0C\0o\0m\0m\0a\0n\0d\0:\0 \0%\0X\0 \0 \0B\0I\0S\0T\0/\0T\0y\0p\0e\0/\0L\0a\0t\0/\0C\0L\0S\0:\0 \0%\0X\0/\0%\0X\0/\0%\0X\0/\0%\0X\0\12\0\0\0"
	.align 32
LC3:
	.ascii " \0 \0*\0 \0I\0n\0t\0e\0r\0r\0u\0p\0t\0 \0L\0i\0n\0e\0:\0 \0%\0X\0\12\0\0\0"
	.align 32
LC4:
	.ascii " \0 \0*\0 \0P\0C\0I\0 \0<\0-\0>\0 \0P\0C\0I\0 \0B\0r\0i\0d\0g\0e\0\12\0\0\0"
	.align 32
LC5:
	.ascii " \0 \0*\0 \0U\0n\0k\0n\0o\0w\0n\0 \0H\0e\0a\0d\0e\0r\0 \0T\0y\0p\0e\0\12\0\0\0"
	.align 4
.globl _pciProbe
	.def	_pciProbe;	.scl	2;	.type	32;	.endef
_pciProbe:
	pushl %ebp
	movl %esp,%ebp
	subl $16,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl $0,-4(%ebp)
	xorl %ebx,%ebx
	.p2align 4,,7
L46:
	pushl $4
	pushl %ebx
	movl 16(%ebp),%edx
	pushl %edx
	movl 12(%ebp),%ecx
	pushl %ecx
	movl 8(%ebp),%edx
	pushl %edx
	call _pciRead
	movl 20(%ebp),%ecx
	movl %eax,(%ecx,%ebx)
	addl $20,%esp
	addl $4,%ebx
	incl -4(%ebp)
	cmpl $3,-4(%ebp)
	jle L46
	cmpw $65535,(%ecx)
	jne L48
	movl $1,%eax
	jmp L65
	.p2align 4,,7
L48:
	movl 20(%ebp),%ecx
	movb 8(%ebp),%dl
	movb %dl,16(%ecx)
	movb 12(%ebp),%dl
	movb %dl,17(%ecx)
	movb 16(%ebp),%dl
	movb %dl,18(%ecx)
	movl 16(%ebp),%ecx
	pushl %ecx
	movl 12(%ebp),%edx
	pushl %edx
	movl 8(%ebp),%ecx
	pushl %ecx
	pushl $LC0
	call _wprintf
	movl 20(%ebp),%edx
	xorl %eax,%eax
	movb 9(%edx),%al
	pushl %eax
	xorl %eax,%eax
	movb 10(%edx),%al
	pushl %eax
	xorl %eax,%eax
	movb 11(%edx),%al
	pushl %eax
	xorl %eax,%eax
	movw 2(%edx),%ax
	pushl %eax
	xorl %eax,%eax
	movw (%edx),%ax
	pushl %eax
	pushl $LC1
	call _wprintf
	movl 20(%ebp),%ecx
	addl $40,%esp
	xorl %eax,%eax
	movb 12(%ecx),%al
	pushl %eax
	xorl %eax,%eax
	movb 13(%ecx),%al
	pushl %eax
	xorl %eax,%eax
	movb 14(%ecx),%al
	pushl %eax
	xorl %eax,%eax
	movb 15(%ecx),%al
	pushl %eax
	xorl %eax,%eax
	movw 4(%ecx),%ax
	pushl %eax
	xorl %eax,%eax
	movw 6(%ecx),%ax
	pushl %eax
	pushl $LC2
	call _wprintf
	movl 20(%ebp),%edx
	addl $28,%esp
	movb 14(%edx),%al
	andb $127,%al
	andl $255,%eax
	testl %eax,%eax
	je L50
	cmpl $1,%eax
	je L62
	jmp L63
	.p2align 4,,7
L50:
	movl 20(%ebp),%ecx
	movl 20(%ebp),%edx
	movl $0,-4(%ebp)
	addl $44,%ecx
	movl %ecx,-8(%ebp)
	addl $20,%edx
	movl %edx,-12(%ebp)
	movl $16,%edi
	.p2align 4,,7
L54:
	pushl $4
	pushl %edi
	movl 16(%ebp),%ecx
	pushl %ecx
	movl 12(%ebp),%edx
	pushl %edx
	movl 8(%ebp),%ecx
	pushl %ecx
	call _pciRead
	movl %eax,%esi
	addl $20,%esp
	testl %esi,%esi
	je L55
	pushl $4
	pushl $-1
	pushl %edi
	movl 16(%ebp),%edx
	pushl %edx
	movl 12(%ebp),%ecx
	pushl %ecx
	movl 8(%ebp),%edx
	pushl %edx
	call _pciWrite
	pushl $4
	pushl %edi
	movl 16(%ebp),%ecx
	pushl %ecx
	movl 12(%ebp),%edx
	pushl %edx
	movl 8(%ebp),%ecx
	pushl %ecx
	call _pciRead
	addl $44,%esp
	pushl $4
	pushl %esi
	pushl %edi
	movl 16(%ebp),%edx
	pushl %edx
	movl %eax,%ebx
	movl 12(%ebp),%ecx
	pushl %ecx
	andl $-16,%ebx
	movl 8(%ebp),%edx
	pushl %edx
	call _pciWrite
	movl %ebx,%eax
	notl %eax
	leal 1(%eax),%ebx
	addl $24,%esp
	testl $1,%esi
	je L56
	movl -12(%ebp),%ecx
	movl -8(%ebp),%edx
	andl $65535,%esi
	movl %esi,(%ecx)
	andl $65535,%ebx
	movl %ebx,(%edx)
	jmp L53
	.p2align 4,,7
L56:
	movl -12(%ebp),%ecx
	movl -8(%ebp),%edx
	movl %esi,(%ecx)
	movl %ebx,(%edx)
	jmp L53
	.p2align 4,,7
L55:
	movl -12(%ebp),%ecx
	movl -8(%ebp),%edx
	movl $0,(%ecx)
	movl $0,(%edx)
L53:
	addl $4,-8(%ebp)
	addl $4,-12(%ebp)
	addl $4,%edi
	incl -4(%ebp)
	cmpl $5,-4(%ebp)
	jle L54
	pushl $1
	pushl $60
	movl 16(%ebp),%ecx
	pushl %ecx
	movl 12(%ebp),%edx
	pushl %edx
	movl 8(%ebp),%ecx
	pushl %ecx
	call _pciRead
	movl %eax,%esi
	addl $20,%esp
	cmpl $255,%esi
	je L60
	movl %esi,%edx
	movl 20(%ebp),%ecx
	movb %dl,19(%ecx)
	jmp L61
	.p2align 4,,7
L60:
	movl 20(%ebp),%edx
	movb $0,19(%edx)
L61:
	movl 20(%ebp),%ecx
	xorl %eax,%eax
	movb 19(%ecx),%al
	pushl %eax
	pushl $LC3
	call _wprintf
	jmp L49
	.p2align 4,,7
L62:
	pushl $LC4
	jmp L66
	.p2align 4,,7
L63:
	pushl $LC5
L66:
	call _wprintf
L49:
	xorl %eax,%eax
L65:
	leal -28(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4
.globl _pciFind
	.def	_pciFind;	.scl	2;	.type	32;	.endef
_pciFind:
	pushl %ebp
	movl %esp,%ebp
	subl $16,%esp
	pushl %edi
	pushl %esi
	xorl %esi,%esi
	pushl %ebx
	movl 16(%ebp),%edi
	movl 8(%ebp),%edx
	movw %dx,-2(%ebp)
	movl 12(%ebp),%edx
	movw %dx,-4(%ebp)
	.p2align 4,,7
L71:
	xorl %ebx,%ebx
	xorl %edx,%edx
	movw %si,%dx
	movl %edx,-8(%ebp)
	.p2align 4,,7
L75:
	pushl %edi
	pushl $0
	xorl %eax,%eax
	movw %bx,%ax
	pushl %eax
	movl -8(%ebp),%edx
	pushl %edx
	call _pciProbe
	addl $16,%esp
	testl %eax,%eax
	jne L74
	movw -2(%ebp),%dx
	cmpw %dx,(%edi)
	jne L74
	movl -4(%ebp),%edx
	cmpw %dx,2(%edi)
	jne L74
	movl $1,%eax
	jmp L80
	.p2align 4,,7
L74:
	incw %bx
	cmpw $31,%bx
	jbe L75
	incw %si
	cmpw $254,%si
	jbe L71
	xorl %eax,%eax
L80:
	leal -28(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	movl %ebp,%esp
	popl %ebp
	ret
.section	.init,"x"
	.align 4
.globl _drvInit@12
	.def	_drvInit@12;	.scl	2;	.type	32;	.endef
_drvInit@12:
	pushl %ebp
	movl %esp,%ebp
	movl $1,%eax
	movl %ebp,%esp
	popl %ebp
	ret $12
	.def	_wprintf;	.scl	2;	.type	32;	.endef