[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: various build failures




On Thu, 22 Jun 2006, I wrote:

> On Thu, 22 Jun 2006, Christian T. Steigies wrote:
> 
> > On Thu, Jun 22, 2006 at 02:54:28PM +1000, Finn Thain wrote:
> > > 
> > > Yes, it is lots of "fun". What was the failure? What versions of 
> > > binutils, gcc, glibc and kernel headers did you use?
> > 
> > I tried to build it with cross-tool, binutils-2.16.1, gcc-4.0.3, 
> > glibc-2.3.6 Somebody suggested to me to use official debian sources, 
> > but toolchain-source is not a big help here. Then I realised that the 
> > debian packages have instructions for cross-compling, which actually 
> > works, so now I have debian packages with:
> > 
> > GNU assembler version 2.16.91 (m68k-linux-gnu) using BFD version 2.16.91 20060413 Debian GNU/Linux
> > gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)
> > 
> > But linux-image fails here:
> > 
> > arch/m68k/math-emu/fp_scan.S: Assembler messages:
> > arch/m68k/math-emu/fp_scan.S:67: Error: Unknown operator -- statement `getuser.b (%a0),%d0,fp_err_ua1,%a0' ignored
> > arch/m68k/math-emu/fp_scan.S:75: Error: Unknown operator -- statement `getuser.l (%a0)+,%d2,fp_err_ua1,%a0' ignored

This problem is still present in the latest binutils snapshot (060622).

> > >   CC      drivers/video/fbmem.o
> > > {standard input}: Assembler messages:
> > > {standard input}:2113: Error: operands mismatch -- statement `moveq.l #8,%a4' ignored
> > > make[2]: *** [drivers/video/fbmem.o] Error 1
> > > make[1]: *** [drivers/video] Error 2
> > > make: *** [drivers] Error 2
> > 
> > Yup, same error here with my old and trusted gcc-3.3.6.
> > 

This failure is subject to .config in some way. Using debian's mac config, 
I can trigger the bug with,

gcc-3.3.6/binutils-2.15.94.0.2.2
gcc-3.4.4/binutils-2.15.94.0.2.2
gcc-3.3.6/binutils-2.17.50.0.2
gcc-3.4.6/binutils-2.17.50.0.2

but not with,

gcc-4.1.1/binutils-2.17.50.0.2

Every version of binutils I tried barfed (including the latest snapshot), 
but gcc-4.x doesn't trigger the bug because it doesn't generate the same 
code. I can't say whether the code is wrong or whether binutils is
buggy... I'm out of my depth.

The fbmem.s file from -save-temps is listed below -- can someone say
whether gcc should not be generating code like this? Or is it a binutils
bug?

-f


#NO_APP
	.file	"fbmem.c"
	.section	__ksymtab,"a",@progbits
	.align	2
	.type	__ksymtab_fb_new_modelist, @object
	.size	__ksymtab_fb_new_modelist, 8
__ksymtab_fb_new_modelist:
	.long	fb_new_modelist
	.long	__kstrtab_fb_new_modelist
	.section	__ksymtab_strings,"a",@progbits
	.type	__kstrtab_fb_new_modelist, @object
	.size	__kstrtab_fb_new_modelist, 16
__kstrtab_fb_new_modelist:
	.string	"fb_new_modelist"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_get_options, @object
	.size	__ksymtab_fb_get_options, 8
__ksymtab_fb_get_options:
	.long	fb_get_options
	.long	__kstrtab_fb_get_options
	.section	__ksymtab_strings
	.type	__kstrtab_fb_get_options, @object
	.size	__kstrtab_fb_get_options, 15
__kstrtab_fb_get_options:
	.string	"fb_get_options"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_unregister_client, @object
	.size	__ksymtab_fb_unregister_client, 8
__ksymtab_fb_unregister_client:
	.long	fb_unregister_client
	.long	__kstrtab_fb_unregister_client
	.section	__ksymtab_strings
	.type	__kstrtab_fb_unregister_client, @object
	.size	__kstrtab_fb_unregister_client, 21
__kstrtab_fb_unregister_client:
	.string	"fb_unregister_client"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_register_client, @object
	.size	__ksymtab_fb_register_client, 8
__ksymtab_fb_register_client:
	.long	fb_register_client
	.long	__kstrtab_fb_register_client
	.section	__ksymtab_strings
	.type	__kstrtab_fb_register_client, @object
	.size	__kstrtab_fb_register_client, 19
__kstrtab_fb_register_client:
	.string	"fb_register_client"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_set_suspend, @object
	.size	__ksymtab_fb_set_suspend, 8
__ksymtab_fb_set_suspend:
	.long	fb_set_suspend
	.long	__kstrtab_fb_set_suspend
	.section	__ksymtab_strings
	.type	__kstrtab_fb_set_suspend, @object
	.size	__kstrtab_fb_set_suspend, 15
__kstrtab_fb_set_suspend:
	.string	"fb_set_suspend"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_get_buffer_offset, @object
	.size	__ksymtab_fb_get_buffer_offset, 8
__ksymtab_fb_get_buffer_offset:
	.long	fb_get_buffer_offset
	.long	__kstrtab_fb_get_buffer_offset
	.section	__ksymtab_strings
	.type	__kstrtab_fb_get_buffer_offset, @object
	.size	__kstrtab_fb_get_buffer_offset, 21
__kstrtab_fb_get_buffer_offset:
	.string	"fb_get_buffer_offset"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_pan_display, @object
	.size	__ksymtab_fb_pan_display, 8
__ksymtab_fb_pan_display:
	.long	fb_pan_display
	.long	__kstrtab_fb_pan_display
	.section	__ksymtab_strings
	.type	__kstrtab_fb_pan_display, @object
	.size	__kstrtab_fb_pan_display, 15
__kstrtab_fb_pan_display:
	.string	"fb_pan_display"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_blank, @object
	.size	__ksymtab_fb_blank, 8
__ksymtab_fb_blank:
	.long	fb_blank
	.long	__kstrtab_fb_blank
	.section	__ksymtab_strings
	.type	__kstrtab_fb_blank, @object
	.size	__kstrtab_fb_blank, 9
__kstrtab_fb_blank:
	.string	"fb_blank"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_set_var, @object
	.size	__ksymtab_fb_set_var, 8
__ksymtab_fb_set_var:
	.long	fb_set_var
	.long	__kstrtab_fb_set_var
	.section	__ksymtab_strings
	.type	__kstrtab_fb_set_var, @object
	.size	__kstrtab_fb_set_var, 11
__kstrtab_fb_set_var:
	.string	"fb_set_var"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_show_logo, @object
	.size	__ksymtab_fb_show_logo, 8
__ksymtab_fb_show_logo:
	.long	fb_show_logo
	.long	__kstrtab_fb_show_logo
	.section	__ksymtab_strings
	.type	__kstrtab_fb_show_logo, @object
	.size	__kstrtab_fb_show_logo, 13
__kstrtab_fb_show_logo:
	.string	"fb_show_logo"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_prepare_logo, @object
	.size	__ksymtab_fb_prepare_logo, 8
__ksymtab_fb_prepare_logo:
	.long	fb_prepare_logo
	.long	__kstrtab_fb_prepare_logo
	.section	__ksymtab_strings
	.type	__kstrtab_fb_prepare_logo, @object
	.size	__kstrtab_fb_prepare_logo, 16
__kstrtab_fb_prepare_logo:
	.string	"fb_prepare_logo"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_registered_fb, @object
	.size	__ksymtab_registered_fb, 8
__ksymtab_registered_fb:
	.long	registered_fb
	.long	__kstrtab_registered_fb
	.section	__ksymtab_strings
	.type	__kstrtab_registered_fb, @object
	.size	__kstrtab_registered_fb, 14
__kstrtab_registered_fb:
	.string	"registered_fb"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_num_registered_fb, @object
	.size	__ksymtab_num_registered_fb, 8
__ksymtab_num_registered_fb:
	.long	num_registered_fb
	.long	__kstrtab_num_registered_fb
	.section	__ksymtab_strings
	.type	__kstrtab_num_registered_fb, @object
	.size	__kstrtab_num_registered_fb, 18
__kstrtab_num_registered_fb:
	.string	"num_registered_fb"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_unregister_framebuffer, @object
	.size	__ksymtab_unregister_framebuffer, 8
__ksymtab_unregister_framebuffer:
	.long	unregister_framebuffer
	.long	__kstrtab_unregister_framebuffer
	.section	__ksymtab_strings
	.type	__kstrtab_unregister_framebuffer, @object
	.size	__kstrtab_unregister_framebuffer, 23
__kstrtab_unregister_framebuffer:
	.string	"unregister_framebuffer"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_register_framebuffer, @object
	.size	__ksymtab_register_framebuffer, 8
__ksymtab_register_framebuffer:
	.long	register_framebuffer
	.long	__kstrtab_register_framebuffer
	.section	__ksymtab_strings
	.type	__kstrtab_register_framebuffer, @object
	.size	__kstrtab_register_framebuffer, 21
__kstrtab_register_framebuffer:
	.string	"register_framebuffer"
	.section	.init.setup,"aw",@progbits
	.align	4
	.type	__setup_video_setup, @object
	.size	__setup_video_setup, 12
__setup_video_setup:
	.long	__setup_str_video_setup
	.long	video_setup
	.long	0
	.section	.init.data,"aw",@progbits
	.type	__setup_str_video_setup, @object
	.size	__setup_str_video_setup, 7
__setup_str_video_setup:
	.string	"video="
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_con_duit, @object
	.size	__ksymtab_fb_con_duit, 8
__ksymtab_fb_con_duit:
	.long	fb_con_duit
	.long	__kstrtab_fb_con_duit
	.section	__ksymtab_strings
	.type	__kstrtab_fb_con_duit, @object
	.size	__kstrtab_fb_con_duit, 12
__kstrtab_fb_con_duit:
	.string	"fb_con_duit"
	.section	.initcall4.init,"aw",@progbits
	.align	2
	.type	__initcall_fbmem_init, @object
	.size	__initcall_fbmem_init, 4
__initcall_fbmem_init:
	.long	fbmem_init
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_pad_unaligned_buffer, @object
	.size	__ksymtab_fb_pad_unaligned_buffer, 8
__ksymtab_fb_pad_unaligned_buffer:
	.long	fb_pad_unaligned_buffer
	.long	__kstrtab_fb_pad_unaligned_buffer
	.section	__ksymtab_strings
	.type	__kstrtab_fb_pad_unaligned_buffer, @object
	.size	__kstrtab_fb_pad_unaligned_buffer, 24
__kstrtab_fb_pad_unaligned_buffer:
	.string	"fb_pad_unaligned_buffer"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_pad_aligned_buffer, @object
	.size	__ksymtab_fb_pad_aligned_buffer, 8
__ksymtab_fb_pad_aligned_buffer:
	.long	fb_pad_aligned_buffer
	.long	__kstrtab_fb_pad_aligned_buffer
	.section	__ksymtab_strings
	.type	__kstrtab_fb_pad_aligned_buffer, @object
	.size	__kstrtab_fb_pad_aligned_buffer, 22
__kstrtab_fb_pad_aligned_buffer:
	.string	"fb_pad_aligned_buffer"
	.section	__ksymtab
	.align	2
	.type	__ksymtab_fb_get_color_depth, @object
	.size	__ksymtab_fb_get_color_depth, 8
__ksymtab_fb_get_color_depth:
	.long	fb_get_color_depth
	.long	__kstrtab_fb_get_color_depth
	.section	__ksymtab_strings
	.type	__kstrtab_fb_get_color_depth, @object
	.size	__kstrtab_fb_get_color_depth, 19
__kstrtab_fb_get_color_depth:
	.string	"fb_get_color_depth"
	.data
	.align	2
	.type	fb_fops, @object
	.size	fb_fops, 116
fb_fops:
	.long	0
	.zero	4
	.long	fb_read
	.zero	4
	.long	fb_write
	.zero	12
	.long	fb_ioctl
	.zero	8
	.long	fb_mmap
	.long	fb_open
	.zero	4
	.long	fb_release
	.zero	56
	.align	2
	.type	fb_notifier_list, @object
	.size	fb_notifier_list, 16
fb_notifier_list:
	.long	0
	.long	fb_notifier_list+4
	.long	fb_notifier_list+4
	.long	0
	.text
	.align	2
	.globl	fb_get_color_depth
	.type	fb_get_color_depth, @function
fb_get_color_depth:
	move.l %d3,-(%sp)
	move.l %d2,-(%sp)
	move.l 12(%sp),%a1
	moveq #1,%d0
	move.l 16(%sp),%a0
	cmp.l 32(%a0),%d0
	jbcc .L3
	move.l 48(%a1),%d2
	move.l 60(%a1),%d1
	cmp.l %d2,%d1
	jbeq .L8
	move.l 36(%a1),%a0
.L4:
	move.l %d2,%d0
	add.l %a0,%d0
	add.l %d1,%d0
	jbra .L3
	.align	2
.L8:
	move.l 36(%a1),%a0
	cmp.l %d1,%a0
	jbne .L4
	move.l 44(%a1),%d3
	cmp.l 56(%a1),%d3
	jbne .L4
	move.l %d1,%d0
	cmp.l 32(%a1),%d3
	jbeq .L3
	move.l %d2,%d0
	add.l %a0,%d0
	add.l %d1,%d0
	.align	2
.L3:
	move.l (%sp)+,%d2
	move.l (%sp)+,%d3
	rts
	.size	fb_get_color_depth, .-fb_get_color_depth
	.align	2
	.globl	fb_pad_aligned_buffer
	.type	fb_pad_aligned_buffer, @function
fb_pad_aligned_buffer:
	move.l %d3,-(%sp)
	move.l %d2,-(%sp)
	move.l 24(%sp),%d2
	move.l 12(%sp),%a0
	move.l 20(%sp),%a1
	move.l 16(%sp),%d3
	sub.l %d2,%d3
	move.l 28(%sp),%d1
	subq.l #1,%d1
	moveq #-1,%d0
	cmp.l %d1,%d0
	jbeq .L19
	.align	2
.L16:
	clr.l %d0
	cmp.l %d0,%d2
	jbls .L21
	.align	2
.L24:
	move.b (%a1)+,(%a0)+
	addq.l #1,%d0
	cmp.l %d0,%d2
	jbhi .L24
.L21:
	add.l %d3,%a0
	dbra %d1,.L16
	clr.w %d1
	subq.l #1,%d1
	jbcc .L16
.L19:
	move.l (%sp)+,%d2
	move.l (%sp)+,%d3
	rts
	.size	fb_pad_aligned_buffer, .-fb_pad_aligned_buffer
	.align	2
	.globl	fb_pad_unaligned_buffer
	.type	fb_pad_unaligned_buffer, @function
fb_pad_unaligned_buffer:
	subq.w #4,%sp
	movm.l #0x3f1e,-(%sp)
	move.l 48(%sp),%a0
	move.l 56(%sp),%a1
	move.l 60(%sp),%d5
	move.l 68(%sp),%d7
	move.l 72(%sp),%a5
	move.l 76(%sp),%a6
	move.l #4095,%d0
	lsl.l %d7,%d0
	move.b %d0,43(%sp)
	move.l 64(%sp),%a3
	subq.l #1,%a3
	moveq #-1,%d0
	cmp.l %a3,%d0
	jbeq .L35
	clr.l %d4
	sub.l %a4,%a4
	.align	2
.L33:
	clr.l %d1
	cmp.l %d1,%d5
	jbls .L37
	clr.l %d3
	.align	2
.L31:
	move.b 43(%sp),%d2
	and.b (%a0,%d1.l),%d2
	move.b (%a1),%d3
	move.l %d3,%d0
	move.l %a5,%d6
	asr.l %d6,%d0
	or.b %d0,%d2
	move.b %d2,(%a0,%d1.l)
	move.b (%a1)+,%d4
	move.l %d4,%d0
	lsl.l %d7,%d0
	move.b %d0,1(%a0,%d1.l)
	addq.l #1,%d1
	cmp.l %d1,%d5
	jbhi .L31
.L37:
	move.b 43(%sp),%d2
	and.b (%a0,%d5.l),%d2
	move.l %a4,%d0
	move.b (%a1),%d0
	move.l %d0,%a4
	move.l %a4,%d0
	move.l %a5,%d1
	asr.l %d1,%d0
	or.b %d0,%d2
	move.b %d2,(%a0,%d5.l)
	cmp.l %d7,%a6
	jbls .L32
	clr.l %d0
	move.b (%a1),%d0
	lsl.l %d7,%d0
	move.b %d0,1(%a0,%d5.l)
.L32:
	addq.l #1,%a1
	add.l 52(%sp),%a0
	subq.l #1,%a3
	cmp.l #-1,%a3
	jbne .L33
.L35:
	movm.l (%sp)+,#0x78fc
	addq.w #4,%sp
	rts
	.size	fb_pad_unaligned_buffer, .-fb_pad_unaligned_buffer
	.align	2
	.globl	fb_get_buffer_offset
	.type	fb_get_buffer_offset, @function
fb_get_buffer_offset:
	movm.l #0x3810,-(%sp)
	move.l 20(%sp),%a1
	move.l 24(%sp),%a3
	move.l 28(%sp),%d4
	move.l 12(%a3),%d0
	subq.l #1,%d0
	move.l (%a3),%d3
	move.l 24(%a3),%d2
	btst #2,%d2
	jbeq .L40
	move.l 526(%a1),%a0
	move.l 64(%a0),%a0
	tst.l %a0
	jbeq .L41
	btst #8,%d2
	jbne .L45
.L41:
	move.l %d3,%d0
	jbra .L39
	.align	2
.L40:
	move.l 8(%a3),%d1
	add.l %d0,%d1
	not.l %d0
	and.l %d0,%d1
	move.l %d1,%d0
	add.l %d4,%d0
	cmp.l 4(%a3),%d0
	jbhi .L46
.L42:
	move.l %d0,8(%a3)
	move.l %d3,%d0
	add.l %d1,%d0
	jbra .L39
	.align	2
.L46:
	move.l 526(%a1),%a0
	move.l 64(%a0),%a0
	tst.l %a0
	jbeq .L43
	btst #8,%d2
	jbne .L47
.L43:
	clr.l %d1
	move.l %d4,%d0
	jbra .L42
	.align	2
.L45:
	move.l %a1,-(%sp)
	jbsr (%a0)
	addq.l #4,%sp
	move.l %d3,%d0
	jbra .L39
	.align	2
.L47:
	move.l %a1,-(%sp)
	jbsr (%a0)
	addq.l #4,%sp
	clr.l %d1
	move.l %d4,%d0
	jbra .L42
	.align	2
.L39:
	move.l %d0,%a0
	movm.l (%sp)+,#0x81c
	rts
	.size	fb_get_buffer_offset, .-fb_get_buffer_offset
	.align	2
	.globl	fb_prepare_logo
	.type	fb_prepare_logo, @function
fb_prepare_logo:
	movm.l #0x3010,-(%sp)
	move.l 16(%sp),%a3
	move.l 20(%sp),%d2
	pea 168(%a3)
	pea 8(%a3)
	jbsr fb_get_color_depth
	addq.l #8,%sp
	clr.l fb_logo
	clr.l fb_logo+4
	clr.l fb_logo+8
	clr.l fb_logo+12
	clr.l fb_logo+16
	clr.l %d1
	btst #1,5(%a3)
	jbne .L48
	move.l 200(%a3),%d1
	moveq #4,%d3
	cmp.l %d1,%d3
	jbeq .L71
	moveq #5,%d3
	cmp.l %d1,%d3
	jbeq .L72
.L53:
	moveq #7,%d3
	cmp.l %d0,%d3
	jblt .L73
	.align	2
.L54:
	move.l %d0,-(%sp)
	jbsr fb_find_logo
	move.l %a0,fb_logo+16
	addq.l #4,%sp
	clr.l %d1
	tst.l %a0
	jbeq .L48
	tst.l %d2
	jbeq .L62
	moveq #2,%d3
	cmp.l %d2,%d3
	jbeq .L62
	move.l 8(%a3),%d0
	move.l fb_logo+16,%a0
	cmp.l 8(%a0),%d0
	jbcc .L64
.L74:
	clr.l fb_logo+16
	clr.l %d1
	jbra .L48
	.align	2
.L73:
	move.b #3,%d3
	cmp.l %d1,%d3
	jbeq .L58
	jbcs .L59
	move.b #2,%d3
	cmp.l %d1,%d3
	jbne .L54
	moveq #1,%d1
	move.l %d1,fb_logo+8
	jbra .L54
	.align	2
.L71:
	move.l 68(%a3),%d0
	move.l 44(%a3),%a0
	cmp.l %a0,%d0
	jbls .L51
	move.l %a0,%d0
.L51:
	move.l 56(%a3),%a0
	cmp.l %a0,%d0
	jbls .L53
	move.l %a0,%d0
	moveq #7,%d3
	cmp.l %d0,%d3
	jbge .L54
	jbra .L73
	.align	2
.L72:
	moveq #4,%d0
	jbra .L54
	.align	2
.L62:
	move.l 12(%a3),%d0
	move.l fb_logo+16,%a0
	cmp.l 8(%a0),%d0
	jbcs .L74
.L64:
	move.l (%a0),%d0
	moveq #3,%d1
	moveq #8,%d3
	cmp.l %d0,%d1
	jbeq .L69
	moveq #2,%d1
	cmp.l %d0,%d1
	jbeq .L75
	moveq #1,%d0
	move.l %d0,fb_logo
	move.l 8(%a0),%d1
	jbra .L48
	.align	2
.L59:
	moveq #4,%d3
	cmp.l %d1,%d3
	jbne .L54
	moveq #1,%d3
	move.l %d3,fb_logo+4
	move.l %d3,fb_logo+12
	jbra .L54
	.align	2
.L58:
	moveq #1,%d1
	move.l %d1,fb_logo+12
	jbra .L54
	.align	2
.L75:
	moveq #4,%d3
.L69:
	move.l %d3,fb_logo
	move.l 8(%a0),%d1
	.align	2
.L48:
	move.l %d1,%d0
	movm.l (%sp)+,#0x80c
	rts
	.size	fb_prepare_logo, .-fb_prepare_logo
	.section	.rodata
.LC0:
	.byte	0
	.byte	-128
	.byte	-64
	.byte	-32
	.byte	-16
	.byte	-8
	.byte	-4
	.byte	-2
	.byte	-1
	.text
	.align	2
	.globl	fb_show_logo
	.type	fb_show_logo, @function
fb_show_logo:
	link.w %a6,#-216
	movm.l #0x3f1c,-(%sp)
	clr.l -188(%a6)
	clr.l -192(%a6)
	clr.l -196(%a6)
	clr.l -200(%a6)
	move.l fb_logo+16,%a5
	tst.l %a5
	jbeq .L189
	move.l 8(%a6),%a0
	tst.l 550(%a0)
	jbeq .L352
	.align	2
.L189:
	clr.l %d0
	jbra .L76
	.align	2
.L352:
	move.b #8,-30(%a6)
	move.l 20(%a5),-28(%a6)
	tst.l fb_logo+12
	jbeq .L79
	move.l 16(%a5),%a3
	clr.l -78(%a6)
	moveq #16,%d0
	move.l %d0,-74(%a6)
	lea (-174,%a6),%a0
	move.l %a0,-70(%a6)
	lea (-110,%a6),%a1
	move.l %a1,-66(%a6)
	lea (-142,%a6),%a4
	move.l %a4,-62(%a6)
	clr.l -58(%a6)
	clr.l -208(%a6)
	move.l 12(%a5),%d0
	cmp.l -200(%a6),%d0
	jbls .L79
	sub.l %a4,%a4
	.align	2
.L88:
	move.l %d0,%d7
	sub.l -208(%a6),%d7
	moveq #16,%d0
	cmp.l %d7,%d0
	jbge .L83
	moveq #16,%d7
.L83:
	moveq #32,%d1
	add.l -208(%a6),%d1
	move.l %d1,-78(%a6)
	move.l %d7,-74(%a6)
	sub.l %a1,%a1
	cmp.l %a1,%d7
	jble .L313
	clr.l %d6
	clr.w %d5
	clr.w %d4
	clr.w %d3
	clr.l %d2
	.align	2
.L87:
	move.b (%a3),%d0
	move.b %d0,%d6
	move.l %d6,%d1
	lsl.l #8,%d1
	move.b %d0,%d5
	move.l -70(%a6),%a0
	move.w %d5,%d0
	or.w %d1,%d0
	move.w %d0,(%a0,%a1.l*2)
	move.b 1(%a3),%d0
	move.l %a4,%d1
	move.b %d0,%d1
	move.l %d1,%a4
	move.l %a4,%d1
	lsl.l #8,%d1
	move.b %d0,%d4
	move.l -66(%a6),%a0
	move.w %d4,%d0
	or.w %d1,%d0
	move.w %d0,(%a0,%a1.l*2)
	move.b 2(%a3),%d0
	move.b %d0,%d2
	move.l %d2,%d1
	lsl.l #8,%d1
	move.b %d0,%d3
	move.l -62(%a6),%a0
	move.w %d3,%d0
	or.w %d1,%d0
	move.w %d0,(%a0,%a1.l*2)
	addq.l #3,%a3
	addq.l #1,%a1
	cmp.l %a1,%d7
	jbgt .L87
.L313:
	move.l 8(%a6),-(%sp)
	moveq #-78,%d1
	add.l %a6,%d1
	move.l %d1,-(%sp)
	jbsr fb_set_cmap
	addq.l #8,%sp
	add.l %d7,-208(%a6)
	move.l 12(%a5),%d0
	cmp.l -208(%a6),%d0
	jbhi .L88
.L79:
	tst.l fb_logo+8
	jbne .L91
	tst.l fb_logo+4
	jbeq .L90
.L91:
.L94:
	pea 208.w
	move.l malloc_sizes+88,-(%sp)
	jbsr kmem_cache_alloc
	addq.l #8,%sp
	move.l %a0,-188(%a6)
	clr.l %d0
	tst.l %a0
	jbeq .L76
	tst.l fb_logo+8
	jbne .L353
	move.l fb_logo+16,%a0
	move.l 8(%a6),%a1
	move.l 40(%a1),%d5
	move.l 52(%a1),%d4
	move.l 64(%a1),%d3
	moveq #32,%d2
	cmp.l 12(%a0),%d2
	jbcc .L146
	.align	2
.L354:
	move.l %d2,%d0
	lsl.l %d5,%d0
	move.l %d2,%d1
	lsl.l %d4,%d1
	or.l %d1,%d0
	move.l %d2,%d1
	lsl.l %d3,%d1
	or.l %d1,%d0
	move.l -188(%a6),%a3
	move.l %d0,(%a3,%d2.l*4)
	addq.l #1,%d2
	cmp.l 12(%a0),%d2
	jbcs .L354
.L146:
	move.l 8(%a6),%a4
	move.l 546(%a4),-192(%a6)
	move.l -188(%a6),546(%a4)
.L90:
	moveq #4,%d0
	cmp.l fb_logo,%d0
	jbge .L355
.L339:
	move.l fb_logo+16,%a5
.L152:
	clr.l -54(%a6)
	clr.l -50(%a6)
	move.l 4(%a5),-46(%a6)
	move.l 8(%a5),-42(%a6)
	moveq #-54,%d5
	add.l %a6,%d5
	tst.l 12(%a6)
	jbne .L356
.L342:
	clr.l %d2
	move.l 8(%a6),%a3
	move.l 526(%a3),%a0
	move.l %d5,-(%sp)
	move.l %a3,-(%sp)
	move.l 52(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	move.l fb_logo+16,%a0
	move.l %d5,%a4
	move.l (%a4),%d0
	add.l 4(%a0),%d0
	addq.l #8,%d0
	move.l %d0,(%a4)
	addq.l #1,%d2
	tst.l %d2
	jble .L357
.L309:
	move.l -188(%a6),-(%sp)
	lea kfree,%a3
	jbsr (%a3)
	addq.l #4,%sp
	tst.l -192(%a6)
	jbeq .L310
	move.l 8(%a6),%a1
	move.l -192(%a6),546(%a1)
.L310:
	move.l -196(%a6),-(%sp)
	jbsr (%a3)
	move.l -200(%a6),-(%sp)
	jbsr (%a3)
	move.l fb_logo+16,%a0
	move.l 8(%a0),%d0
	addq.l #8,%sp
	jbra .L76
	.align	2
.L355:
	move.l fb_logo+16,%a0
.L155:
	pea 208.w
	move.l 4(%a0),%d1
	muls.l 8(%a0),%d1
	move.l %d1,-(%sp)
	jbsr __kmalloc
	addq.l #8,%sp
	move.l %a0,-196(%a6)
	jbeq .L358
	move.l -196(%a6),-28(%a6)
	move.l fb_logo+16,%a5
	move.l -196(%a6),%a3
	move.l fb_logo,%d3
	move.l 20(%a5),%a4
	move.l 8(%a6),%a1
	move.l 200(%a1),%d2
	seq %d6
	moveq #1,%d4
	pea 168(%a1)
	pea 8(%a1)
	jbsr fb_get_color_depth
	addq.l #8,%sp
	moveq #3,%d1
	cmp.l %d0,%d1
	jbeq .L359
.L192:
	moveq #1,%d7
	cmp.l %d2,%d7
	jbcs .L193
	move.l #4095,%d0
	move.l 8(%a6),%a0
	move.l 56(%a0),%d1
	lsl.l %d1,%d0
	move.b %d0,%d4
	not.b %d4
.L193:
	moveq #1,%d0
	cmp.l %d3,%d0
	jbeq .L205
	moveq #4,%d1
	cmp.l %d3,%d1
	jbne .L152
	clr.l %d5
	move.l 8(%a5),%d1
	cmp.l %d5,%d1
	jbls .L152
	move.l 4(%a5),%d0
	sub.l %a1,%a1
	cmp.l %a1,%d0
	jbls .L320
.L203:
	move.b (%a4),%d0
	lsr.b #4,%d0
	move.b %d0,(%a3)+
	addq.l #1,%a1
	move.l 4(%a5),%d0
	cmp.l %a1,%d0
	jbls .L201
	move.b (%a4),%d2
	and.b #15,%d2
	move.b %d2,(%a3)+
	addq.l #1,%a1
	move.l 4(%a5),%d0
.L201:
	addq.l #1,%a4
	cmp.l %a1,%d0
	jbhi .L203
	move.l 8(%a5),%d1
.L320:
	addq.l #1,%d5
	cmp.l %d5,%d1
	jbls .L339
	sub.l %a1,%a1
	cmp.l %a1,%d0
	jbhi .L203
	jbra .L320
	.align	2
.L356:
.L224:
	pea 208.w
	move.l 4(%a5),%d3
	muls.l 8(%a5),%d3
	move.l %d3,-(%sp)
	jbsr __kmalloc
	addq.l #8,%sp
	move.l %a0,-200(%a6)
	moveq #-54,%d5
	add.l %a6,%d5
	tst.l %a0
	jbeq .L221
	moveq #-54,%d5
	add.l %a6,%d5
	moveq #2,%d7
	cmp.l 12(%a6),%d7
	jbeq .L360
	moveq #1,%d2
	cmp.l 12(%a6),%d2
	jbeq .L361
	moveq #3,%d0
	cmp.l 12(%a6),%d0
	jbeq .L362
.L263:
	move.l %d5,%a1
	move.l -200(%a6),26(%a1)
.L221:
	tst.l 12(%a6)
	jbeq .L342
	moveq #2,%d7
	cmp.l 12(%a6),%d7
	jbeq .L363
	moveq #1,%d0
	cmp.l 12(%a6),%d0
	jbeq .L364
	moveq #3,%d0
	cmp.l 12(%a6),%d0
	jbne .L309
	clr.l %d2
.L308:
	move.l 8(%a6),%a1
	move.l 526(%a1),%a0
	move.l %d5,-(%sp)
	move.l %a1,-(%sp)
	move.l 52(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	move.l fb_logo+16,%a0
	move.l %d5,%a3
	move.l 4(%a3),%d0
	sub.l 4(%a0),%d0
	subq.l #8,%d0
	move.l %d0,4(%a3)
	addq.l #1,%d2
	tst.l %d2
	jbgt .L309
	move.l 4(%a0),%d0
	move.l %d0,%d1
	addq.l #8,%d1
	muls.l %d2,%d1
	move.l 8(%a6),%a0
	move.l 12(%a0),%d3
	sub.l %d0,%d3
	cmp.l %d1,%d3
	jbcc .L308
	jbra .L309
	.align	2
.L359:
	moveq #7,%d4
	jbra .L192
	.align	2
.L360:
	move.l -46(%a6),%d0
	move.l 8(%a6),%a0
	move.l 8(%a0),%d1
	sub.l %d0,%d1
	move.l %d5,%a0
	move.l %d1,(%a0)
	move.l -42(%a6),%d1
	move.l 8(%a6),%a0
	move.l 12(%a0),%d2
	sub.l %d1,%d2
	move.l %d2,-50(%a6)
	move.l -28(%a6),%a1
	muls.l %d1,%d0
	move.l -200(%a6),%a3
	lea -1(%a3,%d0.l),%a0
	subq.l #1,%d0
	moveq #-1,%d1
	cmp.l %d0,%d1
	jbeq .L263
.L261:
	move.b (%a1)+,(%a0)
	subq.l #1,%a0
	dbra %d0,.L261
	clr.w %d0
	subq.l #1,%d0
	jbcc .L261
	move.l %d5,%a1
	move.l -200(%a6),26(%a1)
	jbra .L221
	.align	2
.L362:
	move.l -46(%a6),%d2
	move.l -42(%a6),-46(%a6)
	move.l %d2,-42(%a6)
	move.l -46(%a6),%a1
	move.l 8(%a6),%a0
	move.l 12(%a0),%d1
	sub.l %a1,%d1
	move.l %d1,-50(%a6)
	move.l -28(%a6),%a3
	move.l %a1,%d3
	subq.l #1,%d3
	sub.l %a4,%a4
.L346:
	cmp.l %a4,%d2
	jbls .L263
	clr.l %d1
.L347:
	cmp.l %d1,%a1
	jbls .L334
	move.l %d3,%d0
	sub.l %d1,%d0
	muls.l %d2,%d0
	move.l -200(%a6),%a0
	add.l %d0,%a0
	move.b (%a3)+,(%a4,%a0.l)
	addq.l #1,%d1
	jbra .L347
	.align	2
.L334:
	addq.l #1,%a4
	jbra .L346
	.align	2
.L353:
	move.l fb_logo+16,%a3
	pea 9.w
	pea .LC0
	pea -184(%a6)
	jbsr memcpy
	lea (12,%sp),%sp
	move.l 16(%a3),%a0
	move.l 8(%a6),%a1
	move.l 44(%a1),%d2
	move.l %d2,%d0
	moveq #8,%d1
	cmp.l %d2,%d1
	jbcc .L129
	moveq #8,%d0
.L129:
	move.b -184(%a6,%d0.l),-201(%a6)
	move.l 8(%a6),%a4
	move.l 56(%a4),%a1
	move.l %a1,%d0
	moveq #8,%d1
	cmp.l %a1,%d1
	jbcc .L130
	moveq #8,%d0
.L130:
	move.b -184(%a6,%d0.l),-202(%a6)
	move.l 8(%a6),%a4
	move.l 68(%a4),%d1
	move.l %d1,%d0
	moveq #8,%d3
	cmp.l %d1,%d3
	jbcc .L131
	moveq #8,%d0
.L131:
	move.b -184(%a6,%d0.l),-203(%a6)
	move.l 8(%a6),%a4
	move.l 40(%a4),%d0
	add.l %d2,%d0
	move.l %d0,%d6
	subq.l #8,%d6
	move.l 52(%a4),%d0
	add.l %a1,%d0
	move.l %d0,%d5
	subq.l #8,%d5
	move.l 64(%a4),%d0
	add.l %d1,%d0
	move.l %d0,%d4
	subq.l #8,%d4
	sub.l %a1,%a1
	cmp.l 12(%a3),%a1
	jbcc .L146
	clr.l %d3
	move.l %d6,%d0
	neg.l %d0
	move.l %d0,%a5
	move.l %d5,%d1
	neg.l %d1
	move.l %d1,-212(%a6)
	move.l %d4,%d2
	neg.l %d2
	move.l %d2,-216(%a6)
.L144:
	move.b -201(%a6),%d0
	and.b (%a0),%d0
	move.b %d0,%d3
	move.l %d3,%d2
	move.l %a5,%d7
	lsr.l %d7,%d2
	tst.l %d6
	jblt .L137
	move.l %d3,%d2
	lsl.l %d6,%d2
.L137:
	move.b -202(%a6),%d0
	and.b 1(%a0),%d0
	clr.l %d1
	move.b %d0,%d1
	move.l %d1,%d0
	move.l -212(%a6),%d7
	lsr.l %d7,%d0
	tst.l %d5
	jblt .L140
	move.l %d1,%d0
	lsl.l %d5,%d0
.L140:
	or.l %d0,%d2
	move.b -203(%a6),%d0
	and.b 2(%a0),%d0
	clr.l %d1
	move.b %d0,%d1
	move.l %d1,%d0
	move.l -216(%a6),%d7
	lsr.l %d7,%d0
	tst.l %d4
	jblt .L143
	move.l %d1,%d0
	lsl.l %d4,%d0
.L143:
	or.l %d0,%d2
	move.l -188(%a6),%a4
	move.l %d2,128(%a4,%a1.l*4)
	addq.l #3,%a0
	addq.l #1,%a1
	cmp.l 12(%a3),%a1
	jbcs .L144
	move.l 8(%a6),%a4
	move.l 546(%a4),-192(%a6)
	move.l -188(%a6),546(%a4)
	jbra .L90
	.align	2
.L205:
	clr.l %d5
	move.l 8(%a5),%d1
	cmp.l %d5,%d1
	jbls .L152
	move.l 4(%a5),%d0
	sub.l %a1,%a1
	cmp.l %a1,%d0
	jbls .L323
	.align	2
.L218:
	move.b (%a4),%d3
	eor.b %d6,%d3
	moveq #7,%d1
	clr.l %d2
	.align	2
.L217:
	move.l %a3,%a0
	addq.l #1,%a3
	move.b %d3,%d2
	move.b %d4,%d0
	btst %d1,%d2
	jbne .L216
	clr.b %d0
.L216:
	move.b %d0,(%a0)
	addq.l #1,%a1
	subq.l #1,%d1
	jbpl .L217
	addq.l #1,%a4
	move.l 4(%a5),%d0
	cmp.l %a1,%d0
	jbhi .L218
	move.l 8(%a5),%d1
.L323:
	addq.l #1,%d5
	cmp.l %d5,%d1
	jbls .L339
	sub.l %a1,%a1
	cmp.l %a1,%d0
	jbhi .L218
	jbra .L323
	.align	2
.L361:
	move.l -46(%a6),%d2
	move.l -42(%a6),-46(%a6)
	move.l %d2,-42(%a6)
	move.l 8(%a6),%a0
	move.l 8(%a0),%d3
	sub.l %d2,%d3
	move.l %d5,%a0
	move.l %d3,(%a0)
	move.l -28(%a6),%a1
	move.l -46(%a6),%a0
	move.l %a0,%d4
	subq.l #1,%d4
	clr.l %d3
.L344:
	cmp.l %d3,%d2
	jbls .L263
	clr.l %d1
	cmp.l %d1,%a0
	jbls .L331
.L365:
	move.l %d2,%d0
	muls.l %d1,%d0
	add.l %d4,%d0
	sub.l %d3,%d0
	move.l -200(%a6),%a3
	move.b (%a1)+,(%a3,%d0.l)
	addq.l #1,%d1
	cmp.l %d1,%a0
	jbhi .L365
.L331:
	addq.l #1,%d3
	jbra .L344
	.align	2
.L363:
	clr.l %d2
.L296:
	move.l 8(%a6),%a1
	move.l 526(%a1),%a0
	move.l %d5,-(%sp)
	move.l %a1,-(%sp)
	move.l 52(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	move.l fb_logo+16,%a0
	move.l %d5,%a3
	move.l (%a3),%d0
	sub.l 4(%a0),%d0
	subq.l #8,%d0
	move.l %d0,(%a3)
	addq.l #1,%d2
	tst.l %d2
	jbgt .L309
	move.l 4(%a0),%d0
	move.l %d0,%d1
	addq.l #8,%d1
	muls.l %d2,%d1
	move.l 8(%a6),%a0
	move.l 8(%a0),%d3
	sub.l %d0,%d3
	cmp.l %d1,%d3
	jbcc .L296
	jbra .L309
	.align	2
.L364:
	clr.l %d2
.L302:
	move.l 8(%a6),%a1
	move.l 526(%a1),%a0
	move.l %d5,-(%sp)
	move.l %a1,-(%sp)
	move.l 52(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	move.l fb_logo+16,%a0
	move.l %d5,%a3
	move.l 4(%a3),%d0
	add.l 4(%a0),%d0
	addq.l #8,%d0
	move.l %d0,4(%a3)
	addq.l #1,%d2
	tst.l %d2
	jbgt .L309
	move.l 4(%a0),%d0
	move.l %d0,%d1
	addq.l #8,%d1
	muls.l %d2,%d1
	move.l 8(%a6),%a0
	move.l 12(%a0),%d3
	sub.l %d0,%d3
	cmp.l %d1,%d3
	jbcc .L302
	jbra .L309
	.align	2
.L358:
	move.l -188(%a6),-(%sp)
	jbsr kfree
	addq.l #4,%sp
	tst.l -192(%a6)
	jbeq .L189
	move.l 8(%a6),%a0
	move.l -192(%a6),546(%a0)
	jbra .L189
	.align	2
.L357:
	move.l 4(%a0),%d0
	move.l %d0,%d1
	addq.l #8,%d1
	muls.l %d2,%d1
	move.l 8(%a3),%d3
	sub.l %d0,%d3
	cmp.l %d1,%d3
	jbcs .L309
	move.l 8(%a6),%a3
	move.l 526(%a3),%a0
	move.l %d5,-(%sp)
	move.l %a3,-(%sp)
	move.l 52(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	move.l fb_logo+16,%a0
	move.l %d5,%a4
	move.l (%a4),%d0
	add.l 4(%a0),%d0
	addq.l #8,%d0
	move.l %d0,(%a4)
	addq.l #1,%d2
	tst.l %d2
	jbgt .L309
	jbra .L357
	.align	2
.L76:
	movm.l -252(%a6),#0x38fc
	unlk %a6
	rts
	.size	fb_show_logo, .-fb_show_logo
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d %s\n"
	.text
	.align	2
	.type	fbmem_read_proc, @function
fbmem_read_proc:
	movm.l #0x3818,-(%sp)
	move.l 24(%sp),%a4
	move.l 32(%sp),%d4
	move.l 36(%sp),%d3
	clr.l %d2
	lea registered_fb,%a3
	cmp.l #registered_fb+128,%a3
	jbcc .L368
	.align	2
.L376:
	cmp.l #3999,%d3
	jbgt .L368
	move.l (%a3),%a0
	tst.l %a0
	jbne .L379
	addq.l #4,%a3
.L380:
	cmp.l #registered_fb+128,%a3
	jbcs .L376
	.align	2
.L368:
	move.l 28(%sp),%a0
	add.l %d4,%a4
	move.l %a4,(%a0)
	cmp.l %d2,%d4
	jbge .L372
	sub.l %d4,%d2
.L373:
	move.l %d3,%d0
	cmp.l %d3,%d2
	jbge .L374
	move.l %d2,%d0
	jbra .L374
	.align	2
.L379:
	pea 168(%a0)
	move.l (%a0),-(%sp)
	pea .LC1
	pea (%a4,%d2.l)
	jbsr sprintf
	add.l %d0,%d2
	lea (16,%sp),%sp
	addq.l #4,%a3
	jbra .L380
	.align	2
.L372:
	clr.l %d2
	jbra .L373
	.align	2
.L374:
	movm.l (%sp)+,#0x181c
	rts
	.size	fbmem_read_proc, .-fbmem_read_proc
	.align	2
	.type	fb_read, @function
fb_read:
	movm.l #0x3f1e,-(%sp)
	move.l 44(%sp),%a1
	move.l 48(%sp),%d5
	move.l 52(%sp),%d3
	move.l 56(%sp),%a5
	move.l 4(%a5),%a3
	move.l 8(%a1),%a0
	move.l 8(%a0),%a0
	move.l 54(%a0),%d0
	and.l #1048575,%d0
	lea registered_fb,%a0
	move.l (%a0,%d0.l*4),%a4
	clr.l %d6
	sub.l %a6,%a6
	tst.l %a4
	jbeq .L384
	tst.l 538(%a4)
	jbeq .L384
	moveq #-1,%d0
	tst.l 550(%a4)
	jbne .L381
	move.l 526(%a4),%a0
	move.l 12(%a0),%a0
	tst.l %a0
	jbne .L466
	move.l 542(%a4),%d1
	jbeq .L467
.L387:
	clr.l %d0
	cmp.l %a3,%d1
	jbls .L381
	cmp.l %d3,%d1
	jbhi .L389
	move.l %d1,%d3
.L389:
	move.l %d3,%d0
	add.l %a3,%d0
	cmp.l %d0,%d1
	jbcc .L390
	move.l %d1,%d3
	sub.l %a3,%d3
.L390:
	move.l %d3,%d0
	cmp.l #4096,%d3
	jbls .L392
	move.l #4096,%d0
.L394:
.L392:
	pea 208.w
	move.l %d0,-(%sp)
	jbsr __kmalloc
	addq.l #8,%sp
	move.l %a0,%d4
	moveq #-12,%d0
	tst.l %a0
	jbeq .L381
	add.l 538(%a4),%a3
	move.l 526(%a4),%a0
	move.l 64(%a0),%a0
	tst.l %a0
	jbne .L468
.L428:
	tst.l %d3
	jbeq .L430
	.align	2
.L469:
	move.l %d3,%d2
	cmp.l #4096,%d3
	jbls .L431
	move.l #4096,%d2
.L431:
	move.l %d4,%a0
	move.l %d2,%d1
	asr.l #2,%d1
	subq.l #1,%d1
	moveq #-1,%d0
	cmp.l %d1,%d0
	jbeq .L461
	.align	2
.L434:
	move.l (%a3)+,%d0
	move.l %d0,(%a0)+
	dbra %d1,.L434
	clr.w %d1
	subq.l #1,%d1
	jbcc .L434
.L461:
	moveq #3,%d0
	and.l %d2,%d0
	jbeq .L440
	move.l %a0,%a1
	move.l %a3,%a0
	move.l %d0,%d1
	subq.l #1,%d1
	moveq #-1,%d7
	cmp.l %d1,%d7
	jbeq .L463
	.align	2
.L438:
	move.b (%a0)+,%d0
	move.b %d0,(%a1)+
	dbra %d1,.L438
	clr.w %d1
	subq.l #1,%d1
	jbcc .L438
.L463:
	move.l %a0,%a3
.L440:
	move.l %d2,-(%sp)
	move.l %d4,-(%sp)
	move.l %d5,-(%sp)
	jbsr __generic_copy_to_user
	lea (12,%sp),%sp
	tst.l %d0
	jbne .L464
	move.l %d2,%d1
	smi %d0
	extb.l %d0
	add.l %d1,4(%a5)
	move.l (%a5),%d7
	addx.l %d0,%d7
	move.l %d7,(%a5)
	add.l %d2,%d5
	add.l %d2,%d6
	sub.l %d2,%d3
	jbne .L469
.L430:
	move.l %d4,-(%sp)
	jbsr kfree
	addq.l #4,%sp
	move.l %a6,%d0
	jbne .L381
	move.l %d6,%d0
	jbra .L381
	.align	2
.L384:
	moveq #-19,%d0
	jbra .L381
	.align	2
.L467:
	move.l 188(%a4),%d1
	jbra .L387
	.align	2
.L466:
	move.l %a5,-(%sp)
	move.l %d3,-(%sp)
	move.l %d5,-(%sp)
	move.l %a1,-(%sp)
	jbsr (%a0)
	lea (16,%sp),%sp
	jbra .L381
	.align	2
.L468:
	move.l %a4,-(%sp)
	jbsr (%a0)
	addq.l #4,%sp
	jbra .L428
	.align	2
.L464:
	move.w #-14,%a6
	jbra .L430
	.align	2
.L381:
	movm.l (%sp)+,#0x78fc
	rts
	.size	fb_read, .-fb_read
	.align	2
	.type	fb_write, @function
fb_write:
	movm.l #0x3f1e,-(%sp)
	move.l 44(%sp),%a1
	move.l 48(%sp),%d5
	move.l 52(%sp),%d3
	move.l 56(%sp),%a5
	move.l 4(%a5),%a4
	move.l 8(%a1),%a0
	move.l 8(%a0),%a0
	move.l 54(%a0),%d0
	and.l #1048575,%d0
	lea registered_fb,%a0
	move.l (%a0,%d0.l*4),%a3
	clr.l %d6
	sub.l %a6,%a6
	tst.l %a3
	jbeq .L473
	tst.l 538(%a3)
	jbeq .L473
	moveq #-1,%d0
	tst.l 550(%a3)
	jbne .L470
	move.l 526(%a3),%a0
	move.l 16(%a0),%a0
	tst.l %a0
	jbne .L556
	move.l 542(%a3),%d1
	jbeq .L557
.L476:
	moveq #-27,%d0
	cmp.l %a4,%d1
	jbcs .L470
	cmp.l %d3,%d1
	jbcc .L478
	move.w #-27,%a6
	move.l %d1,%d3
.L478:
	move.l %d3,%d0
	add.l %a4,%d0
	cmp.l %d0,%d1
	jbcc .L479
	tst.l %a6
	jbne .L480
	move.w #-28,%a6
.L480:
	move.l %d1,%d3
	sub.l %a4,%d3
.L479:
	move.l %d3,%d0
	cmp.l #4096,%d3
	jbls .L482
	move.l #4096,%d0
.L484:
.L482:
	pea 208.w
	move.l %d0,-(%sp)
	jbsr __kmalloc
	addq.l #8,%sp
	move.l %a0,%d4
	moveq #-12,%d0
	tst.l %a0
	jbeq .L470
	add.l 538(%a3),%a4
	move.l 526(%a3),%a0
	move.l 64(%a0),%a0
	tst.l %a0
	jbne .L558
.L518:
	tst.l %d3
	jbeq .L520
	.align	2
.L559:
	move.l %d3,%d2
	cmp.l #4096,%d3
	jbls .L521
	move.l #4096,%d2
.L521:
	move.l %d4,%a3
	move.l %d2,-(%sp)
	move.l %d5,-(%sp)
	move.l %d4,-(%sp)
	jbsr __generic_copy_from_user
	lea (12,%sp),%sp
	tst.l %d0
	jbne .L554
	move.l %d2,%d1
	asr.l #2,%d1
	subq.l #1,%d1
	moveq #-1,%d0
	cmp.l %d1,%d0
	jbeq .L551
	.align	2
.L542:
	move.l (%a3)+,%d0
	move.l %d0,(%a4)+
	dbra %d1,.L542
	clr.w %d1
	subq.l #1,%d1
	jbcc .L542
.L551:
	moveq #3,%d0
	and.l %d2,%d0
	jbeq .L543
	move.l %a3,%a1
	move.l %a4,%a0
	move.l %d0,%d1
	subq.l #1,%d1
	moveq #-1,%d7
	cmp.l %d1,%d7
	jbeq .L553
	.align	2
.L546:
	move.b (%a1)+,%d0
	move.b %d0,(%a0)+
	dbra %d1,.L546
	clr.w %d1
	subq.l #1,%d1
	jbcc .L546
.L553:
	move.l %a0,%a4
.L543:
	move.l %d2,%d1
	smi %d0
	extb.l %d0
	add.l %d1,4(%a5)
	move.l (%a5),%d7
	addx.l %d0,%d7
	move.l %d7,(%a5)
	add.l %d2,%d5
	add.l %d2,%d6
	sub.l %d2,%d3
	jbne .L559
.L520:
	move.l %d4,-(%sp)
	jbsr kfree
	addq.l #4,%sp
	move.l %d6,%d0
	jbne .L470
	move.l %a6,%d0
	jbra .L470
	.align	2
.L473:
	moveq #-19,%d0
	jbra .L470
	.align	2
.L557:
	move.l 188(%a3),%d1
	jbra .L476
	.align	2
.L558:
	move.l %a3,-(%sp)
	jbsr (%a0)
	addq.l #4,%sp
	jbra .L518
	.align	2
.L556:
	move.l %a5,-(%sp)
	move.l %d3,-(%sp)
	move.l %d5,-(%sp)
	move.l %a1,-(%sp)
	jbsr (%a0)
	lea (16,%sp),%sp
	jbra .L470
	.align	2
.L554:
	move.w #-14,%a6
	jbra .L520
	.align	2
.L470:
	movm.l (%sp)+,#0x78fc
	rts
	.size	fb_write, .-fb_write
	.section	.rodata.str1.1
.LC2:
	.string	"fb%d"
	.text
	.align	2
	.type	try_to_load, @function
try_to_load:
	move.l 4(%sp),-(%sp)
	pea .LC2
	jbsr request_module
	addq.l #8,%sp
	rts
	.size	try_to_load, .-try_to_load
	.align	2
	.globl	fb_pan_display
	.type	fb_pan_display, @function
fb_pan_display:
	movm.l #0x3818,-(%sp)
	move.l 24(%sp),%a3
	move.l 28(%sp),%a4
	lea (168,%a3),%a0
	move.l 16(%a4),%d3
	move.l 20(%a4),%d2
	sub.l %a1,%a1
	move.l 12(%a3),%d4
	tst.l %d2
	jbeq .L562
	btst #0,134(%a4)
	jbeq .L563
	move.w 40(%a0),%d1
	jbeq .L569
	clr.l %d0
	move.w %d1,%d0
	move.l %d2,%d1
	divul.l %d0,%d0:%d1
	tst.l %d0
	jbne .L569
	clr.l %d4
	.align	2
.L562:
	tst.l %d3
	jbeq .L570
	move.w 36(%a0),%d1
	jbne .L578
	.align	2
.L573:
	moveq #-22,%d0
	jbra .L561
	.align	2
.L578:
	clr.l %d0
	move.w %d1,%d0
	move.l %d3,%d1
	divul.l %d0,%d0:%d1
	tst.l %d0
	jbne .L573
	.align	2
.L570:
	tst.l %a1
	jbne .L573
	move.l 526(%a3),%a0
	move.l 40(%a0),%a0
	tst.l %a0
	jbeq .L573
	tst.l %d3
	jblt .L573
	tst.l %d2
	jblt .L573
	move.l %d2,%d0
	add.l %d4,%d0
	cmp.l 20(%a3),%d0
	jbhi .L573
	move.l %d3,%d0
	add.l 8(%a3),%d0
	cmp.l 16(%a3),%d0
	jbhi .L573
	move.l %a3,-(%sp)
	move.l %a4,-(%sp)
	jbsr (%a0)
	addq.l #8,%sp
	tst.l %d0
	jbne .L561
	move.l 16(%a4),24(%a3)
	move.l 20(%a4),28(%a3)
	btst #0,134(%a4)
	jbeq .L575
	or.w #256,142(%a3)
	clr.l %d0
	jbra .L561
	.align	2
.L563:
	move.w 38(%a0),%d1
	jbeq .L569
	clr.l %d0
	move.w %d1,%d0
	move.l %d2,%d1
	divul.l %d0,%d0:%d1
	tst.l %d0
	jbeq .L562
	.align	2
.L569:
	move.w #-22,%a1
	jbra .L562
	.align	2
.L575:
	and.w #65279,142(%a3)
	clr.l %d0
	.align	2
.L561:
	movm.l (%sp)+,#0x181c
	rts
	.size	fb_pan_display, .-fb_pan_display
	.align	2
	.globl	fb_set_var
	.type	fb_set_var, @function
fb_set_var:
	link.w %a6,#-184
	movm.l #0x201c,-(%sp)
	move.l 8(%a6),%a5
	move.l 12(%a6),%a3
	move.l 4(%a5),%d2
	move.l 84(%a3),%d0
	btst #8,%d0
	jbne .L597
	tst.b %d0
	jbge .L598
.L584:
	move.l 526(%a5),%a0
	move.l 20(%a0),%a0
	tst.l %a0
	jbne .L585
	pea 160.w
	pea 8(%a5)
	move.l %a3,-(%sp)
	jbsr memcpy
	clr.l %d0
	lea (12,%sp),%sp
	jbra .L579
	.align	2
.L598:
	pea 160.w
	move.l %a3,-(%sp)
	pea 8(%a5)
	jbsr memcmp
	lea (12,%sp),%sp
	tst.l %d0
	jbne .L584
.L583:
	clr.l %d0
	jbra .L579
	.align	2
.L597:
	move.l %a3,-(%sp)
	moveq #-56,%d2
	add.l %a6,%d2
	move.l %d2,-(%sp)
	lea fb_var_to_videomode,%a4
	jbsr (%a4)
	pea 8(%a5)
	lea (-112,%a6),%a3
	move.l %a3,-(%sp)
	jbsr (%a4)
	move.l %a3,-(%sp)
	move.l %d2,-(%sp)
	jbsr fb_mode_is_equal
	move.l %d0,%a3
	lea (24,%sp),%sp
	tst.l %d0
	jbeq .L599
	tst.l %a3
	jbeq .L600
.L582:
	move.l %a3,%d0
	jbra .L579
	.align	2
.L585:
	move.l %a5,-(%sp)
	move.l %a3,-(%sp)
	jbsr (%a0)
	addq.l #8,%sp
	tst.l %d0
	jbne .L579
	bftst 87(%a3){#4:#4}
	jbne .L583
	lea (8,%a5),%a4
	pea 160.w
	move.l %a3,-(%sp)
	move.l %a4,-(%sp)
	jbsr memcpy
	move.l 526(%a5),%a0
	lea (12,%sp),%sp
	move.l 24(%a0),%a0
	tst.l %a0
	jbne .L601
.L588:
	move.l %a4,-(%sp)
	move.l %a5,-(%sp)
	jbsr fb_pan_display
	move.l %a5,-(%sp)
	pea 490(%a5)
	jbsr fb_set_cmap
	move.l %a4,-(%sp)
	lea (-168,%a6),%a4
	move.l %a4,-(%sp)
	jbsr fb_var_to_videomode
	lea (24,%sp),%sp
	tst.l 518(%a5)
	jbeq .L594
	move.l 514(%a5),%d0
	jbeq .L594
	lea (514,%a5),%a0
	cmp.l %d0,%a0
	jbne .L602
.L594:
	btst #16,%d2
	jbeq .L583
	moveq #10,%d0
	btst #6,87(%a3)
	jbne .L593
	move.b #1,%d0
.L593:
	bclr #0,5(%a5)
	move.l %a5,-184(%a6)
	pea -184(%a6)
	move.l %d0,-(%sp)
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	lea (12,%sp),%sp
	clr.l %d0
	jbra .L579
	.align	2
.L600:
	pea 514(%a5)
	move.l %d2,-(%sp)
	jbsr fb_delete_videomode
	addq.l #8,%sp
	move.l %a3,%d0
	jbra .L579
	.align	2
.L599:
	move.l %a5,-176(%a6)
	lea (-176,%a6),%a0
	move.l %d2,4(%a0)
	move.l %a0,-(%sp)
	pea 4.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	move.l %d0,%a3
	lea (12,%sp),%sp
	tst.l %a3
	jbne .L582
	jbra .L600
	.align	2
.L601:
	move.l %a5,-(%sp)
	jbsr (%a0)
	addq.l #4,%sp
	jbra .L588
	.align	2
.L602:
	move.l %a0,-(%sp)
	move.l %a4,-(%sp)
	jbsr fb_add_videomode
	addq.l #8,%sp
	tst.l %d0
	jbeq .L594
	clr.l %d0
	.align	2
.L579:
	movm.l -200(%a6),#0x3804
	unlk %a6
	rts
	.size	fb_set_var, .-fb_set_var
	.align	2
	.globl	fb_blank
	.type	fb_blank, @function
fb_blank:
	link.w %a6,#-8
	move.l %a3,-(%sp)
	move.l %d2,-(%sp)
	move.l 8(%a6),%a3
	moveq #-22,%d2
	moveq #4,%d0
	cmp.l 12(%a6),%d0
	jbge .L604
	move.l %d0,12(%a6)
.L604:
	move.l 526(%a3),%a0
	move.l 36(%a0),%a0
	tst.l %a0
	jbeq .L606
	move.l %a3,-(%sp)
	move.l 12(%a6),-(%sp)
	jbsr (%a0)
	move.l %d0,%d2
	addq.l #8,%sp
	jbne .L606
	move.l %a3,-8(%a6)
	lea (12,%a6),%a0
	move.l %a0,-4(%a6)
	pea -8(%a6)
	pea 8.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	lea (12,%sp),%sp
	.align	2
.L606:
	move.l %d2,%d0
	move.l -16(%a6),%d2
	move.l -12(%a6),%a3
	unlk %a6
	rts
	.size	fb_blank, .-fb_blank
	.align	2
	.type	fb_ioctl, @function
fb_ioctl:
	lea (-264,%sp),%sp
	movm.l #0x1e,-(%sp)
	move.l 292(%sp),%d1
	move.l 296(%sp),%a5
	move.l 284(%sp),%a0
	move.l 54(%a0),%d0
	and.l #1048575,%d0
	lea registered_fb,%a4
	move.l (%a4,%d0.l*4),%a3
	move.l 526(%a3),%a0
	move.w #-19,%a1
	tst.l %a0
	jbeq .L608
	cmp.l #17925,%d1
	jbeq .L682
	jbhi .L810
	cmp.l #17921,%d1
	jbeq .L630
	jbls .L823
	cmp.l #17922,%d1
	jbeq .L664
	cmp.l #17924,%d1
	jbeq .L699
	.align	2
.L808:
	move.l 68(%a0),%a0
	move.w #-22,%a1
	tst.l %a0
	jbeq .L608
	move.l %a5,-(%sp)
	move.l %d1,-(%sp)
	move.l %a3,-(%sp)
	jbsr (%a0)
	move.l %d0,%a1
	lea (12,%sp),%sp
	jbra .L608
	.align	2
.L810:
	cmp.l #17936,%d1
	jbeq .L786
	jbhi .L812
	cmp.l #17926,%d1
	jbeq .L716
	cmp.l #17935,%d1
	jbne .L808
	lea (24,%sp),%a6
	sub.l %a4,%a4
	move.l %a6,%a1
	move.l %a5,%a0
#APP
	
1:	moves.l	(%a0)+,%d0
	move.l	%d0,(%a1)+
2:	moves.l	(%a0)+,%d0
	move.l	%d0,(%a1)+
	.ifnc	"",""
3:	moves.	(%a0)+,%d0
	move.	%d0,(%a1)+
	.endif
4:
	.section __ex_table,"a"
	.align	4
	.long	1b,10f
	.long	2b,20f
	.ifnc	"",""
	.long	3b,30f
	.endif
	.previous

	.section .fixup,"ax"
	.even
10:	clr.l	(%a1)+
20:	clr.l	(%a1)+
	.ifnc	"",""
30:	clr.	(%a1)+
	.endif
	moveq.l	#8,%a4
	jra	4b
	.previous

#NO_APP
	move.w #-14,%a1
	tst.l %a4
	jbne .L608
	move.l 24(%sp),%d0
	subq.l #1,%d0
	move.w #-22,%a1
	moveq #62,%d1
	cmp.l %d0,%d1
	jbcs .L608
	moveq #-1,%d0
	move.l %d0,4(%a6)
	move.l %a3,16(%sp)
	lea (16,%sp),%a0
	move.l %a6,4(%a0)
	move.l %a0,-(%sp)
	pea 6.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	lea (12,%sp),%sp
	move.l %a4,%d0
#APP
	
	move.l	(%a6)+,%d1
11:	moves.l	%d1,(%a5)+
12:	move.l	(%a6)+,%d1
21:	moves.l	%d1,(%a5)+
22:
	.ifnc	"",""
	move.	(%a6)+,%d1
31:	moves.	%d1,(%a5)+
32:
	.endif
4:

	.section __ex_table,"a"
	.align	4
	.long	11b,5f
	.long	12b,5f
	.long	21b,5f
	.long	22b,5f
	.ifnc	"",""
	.long	31b,5f
	.long	32b,5f
	.endif
	.previous

	.section .fixup,"ax"
	.even
5:	moveq.l	#8,%d0
	jra	4b
	.previous

#NO_APP
.L820:
	moveq #-14,%d1
	tst.l %d0
	jbne .L770
	clr.l %d1
.L770:
	move.l %d1,%a1
	jbra .L608
	.align	2
.L823:
	cmp.l #17920,%d1
	jbne .L808
	pea 160.w
	pea 8(%a3)
	move.l %a5,-(%sp)
	jbsr __generic_copy_to_user
	lea (12,%sp),%sp
	jbra .L820
	.align	2
.L812:
	cmp.l #17937,%d1
	jbeq .L807
	move.w #-22,%a1
	cmp.l #-1069267448,%d1
	jbne .L808
	jbra .L608
	.align	2
.L682:
	lea (32,%sp),%a4
	pea 24.w
	move.l %a5,-(%sp)
	move.l %a4,-(%sp)
	jbsr __generic_copy_from_user
	lea (12,%sp),%sp
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	move.l %a3,-(%sp)
	move.l %a4,-(%sp)
	jbsr fb_set_user_cmap
	move.l %d0,%a1
.L814:
	addq.l #8,%sp
	jbra .L608
	.align	2
.L786:
	lea (24,%sp),%a6
	clr.l %d0
	move.l %a6,%a1
#APP
	
1:	moves.l	(%a5)+,%d1
	move.l	%d1,(%a1)+
2:	moves.l	(%a5)+,%d1
	move.l	%d1,(%a1)+
	.ifnc	"",""
3:	moves.	(%a5)+,%d1
	move.	%d1,(%a1)+
	.endif
4:
	.section __ex_table,"a"
	.align	4
	.long	1b,10f
	.long	2b,20f
	.ifnc	"",""
	.long	3b,30f
	.endif
	.previous

	.section .fixup,"ax"
	.even
10:	clr.l	(%a1)+
20:	clr.l	(%a1)+
	.ifnc	"",""
30:	clr.	(%a1)+
	.endif
	moveq.l	#8,%d0
	jra	4b
	.previous

#NO_APP
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	move.w #-22,%a1
	moveq #63,%d1
	cmp.l 24(%sp),%d1
	jbcs .L608
	move.l 4(%a6),%d0
	move.b #31,%d1
	cmp.l %d0,%d1
	jbcs .L608
	tst.l (%a4,%d0.l*4)
	jbeq .L824
.L805:
	move.w #-22,%a1
	tst.l (%a4,%d0.l*4)
	jbeq .L608
	move.l %a3,16(%sp)
	lea (16,%sp),%a0
	move.l %a6,4(%a0)
	move.l %a0,-(%sp)
	pea 7.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	move.l %d0,%a1
	lea (12,%sp),%sp
	jbra .L608
	.align	2
.L630:
	lea (120,%sp),%a6
	pea 160.w
	move.l %a5,-(%sp)
	move.l %a6,-(%sp)
	jbsr __generic_copy_from_user
	lea (12,%sp),%sp
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	jbsr acquire_console_sem
	bset #0,5(%a3)
	move.l %a6,-(%sp)
	move.l %a3,-(%sp)
	jbsr fb_set_var
	move.l %d0,%a4
	bclr #0,5(%a3)
	jbsr release_console_sem
	addq.l #8,%sp
	move.l %a4,%a1
	tst.l %a4
	jbne .L608
.L825:
	pea 160.w
	move.l %a6,-(%sp)
	move.l %a5,-(%sp)
	jbsr __generic_copy_to_user
	lea (12,%sp),%sp
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	sub.l %a1,%a1
	jbra .L608
	.align	2
.L824:
	move.l %d0,-(%sp)
	jbsr try_to_load
	addq.l #4,%sp
	move.l 4(%a6),%d0
	jbra .L805
	.align	2
.L699:
	lea (32,%sp),%a4
	pea 24.w
	move.l %a5,-(%sp)
	move.l %a4,-(%sp)
	jbsr __generic_copy_from_user
	lea (12,%sp),%sp
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	move.l %a4,-(%sp)
	pea 490(%a3)
	jbsr fb_cmap_to_user
	move.l %d0,%a1
	jbra .L814
	.align	2
.L664:
	pea 64.w
	pea 168(%a3)
	move.l %a5,-(%sp)
	jbsr __generic_copy_to_user
	lea (12,%sp),%sp
	jbra .L820
	.align	2
.L807:
	jbsr acquire_console_sem
	bset #0,5(%a3)
	move.l %a5,-(%sp)
	move.l %a3,-(%sp)
	jbsr fb_blank
	move.l %d0,%a4
	bclr #0,5(%a3)
	jbsr release_console_sem
	move.l %a4,%a1
	addq.l #8,%sp
	jbra .L608
	.align	2
.L716:
	lea (120,%sp),%a6
	pea 160.w
	move.l %a5,-(%sp)
	move.l %a6,-(%sp)
	jbsr __generic_copy_from_user
	lea (12,%sp),%sp
	move.w #-14,%a1
	tst.l %d0
	jbne .L608
	jbsr acquire_console_sem
	move.l %a6,-(%sp)
	move.l %a3,-(%sp)
	jbsr fb_pan_display
	move.l %d0,%a4
	jbsr release_console_sem
	addq.l #8,%sp
	move.l %a4,%a1
	tst.l %a4
	jbeq .L825
	.align	2
.L608:
	move.l %a1,%d0
	movm.l (%sp)+,#0x7800
	lea (264,%sp),%sp
	rts
	.size	fb_ioctl, .-fb_ioctl
	.align	2
	.type	fb_mmap, @function
fb_mmap:
	movm.l #0x3018,-(%sp)
	move.l 24(%sp),%a4
	move.l 20(%sp),%a0
	move.l 8(%a0),%a0
	move.l 8(%a0),%a0
	move.l 54(%a0),%d0
	and.l #1048575,%d0
	lea registered_fb,%a0
	move.l (%a0,%d0.l*4),%a0
	move.l 526(%a0),%a3
	move.l 72(%a4),%d0
	move.w #-22,%a1
	cmp.l #1048575,%d0
	jbhi .L826
	move.l %d0,%d3
	moveq #12,%d1
	lsl.l %d1,%d3
	move.w #-19,%a1
	tst.l %a3
	jbeq .L826
	move.l 76(%a3),%a1
	tst.l %a1
	jbne .L843
	move.l 184(%a0),%d2
	move.l %d2,%d0
	and.l #4095,%d0
	add.l 188(%a0),%d0
	move.l %d0,%d1
	add.l #4095,%d1
	and.w #61440,%d1
	cmp.l %d3,%d1
	jbls .L844
.L837:
	and.w #61440,%d2
	move.l 4(%a4),%a3
	move.l 8(%a4),%a0
	sub.l %a3,%a0
	move.l %a0,%d0
	add.l %d3,%d0
	move.w #-22,%a1
	cmp.l %d0,%d1
	jbcs .L826
	move.l %d3,%d1
	add.l %d2,%d1
	moveq #12,%d2
	lsr.l %d2,%d1
	move.l %d1,72(%a4)
	or.l #540672,20(%a4)
	move.l m68k_is040or060,%d0
	jbne .L839
	move.b #64,%d0
	or.l %d0,16(%a4)
	move.l m68k_is040or060,%d0
.L839:
	tst.l %d0
	jbeq .L840
	moveq #-97,%d0
	and.l 16(%a4),%d0
	moveq #64,%d2
	or.l %d0,%d2
	move.l %d2,16(%a4)
.L840:
	move.l 16(%a4),-(%sp)
	move.l %a0,-(%sp)
	move.l %d1,-(%sp)
	move.l %a3,-(%sp)
	move.l %a4,-(%sp)
	jbsr remap_pfn_range
	lea (20,%sp),%sp
	move.w #-11,%a1
	tst.l %d0
	jbne .L826
	sub.l %a1,%a1
	jbra .L826
	.align	2
.L844:
	sub.l %d1,%d3
	move.w #-22,%a1
	tst.l 104(%a0)
	jbne .L826
	move.l 214(%a0),%d2
	move.l %d2,%d0
	and.l #4095,%d0
	add.l 218(%a0),%d0
	move.l %d0,%d1
	add.l #4095,%d1
	and.w #61440,%d1
	jbra .L837
	.align	2
.L843:
	move.l %a4,-(%sp)
	move.l %a0,-(%sp)
	jbsr (%a1)
	addq.l #8,%sp
	move.l %d0,%a1
	.align	2
.L826:
	move.l %a1,%d0
	movm.l (%sp)+,#0x180c
	rts
	.size	fb_mmap, .-fb_mmap
	.align	2
	.type	fb_open, @function
fb_open:
	movm.l #0x3018,-(%sp)
	move.l 20(%sp),%a0
	move.l 54(%a0),%d2
	and.l #1048575,%d2
	clr.l %d3
	moveq #-19,%d0
	moveq #31,%d1
	cmp.l %d2,%d1
	jblt .L845
	lea registered_fb,%a4
	move.l (%a4,%d2.l*4),%a3
	tst.l %a3
	jbeq .L872
.L848:
	moveq #-19,%d0
	tst.l %a3
	jbeq .L845
	move.l 526(%a3),%a0
	move.l (%a0),%a0
	tst.l %a0
	jbeq .L850
	moveq #2,%d1
	cmp.l (%a0),%d1
	jbeq .L845
#APP
	addql #1,240(%a0)
#NO_APP
.L850:
	move.l 24(%sp),%a0
	move.l %a3,114(%a0)
	move.l 526(%a3),%a0
	move.l 4(%a0),%a0
	tst.l %a0
	jbne .L873
.L860:
	move.l %d3,%d0
	jbra .L845
	.align	2
.L872:
	move.l %d2,-(%sp)
	jbsr try_to_load
	addq.l #4,%sp
	move.l (%a4,%d2.l*4),%a3
	jbra .L848
	.align	2
.L873:
	pea 1.w
	move.l %a3,-(%sp)
	jbsr (%a0)
	move.l %d0,%d3
	addq.l #8,%sp
	jbeq .L860
	move.l 526(%a3),%a0
	move.l (%a0),%a0
	tst.l %a0
	jbeq .L860
#APP
	subql #1,240(%a0)
#NO_APP
	moveq #2,%d0
	cmp.l (%a0),%d0
	jbne .L860
	move.l 264(%a0),-(%sp)
	jbsr wake_up_process
	addq.l #4,%sp
	jbra .L860
	.align	2
.L845:
	movm.l (%sp)+,#0x180c
	rts
	.size	fb_open, .-fb_open
	.align	2
	.type	fb_release, @function
fb_release:
	move.l %a3,-(%sp)
	move.l 12(%sp),%a0
	move.l 114(%a0),%a3
	move.l 526(%a3),%a0
	move.l 8(%a0),%a1
	tst.l %a1
	jbne .L887
.L876:
	move.l (%a0),%a0
	tst.l %a0
	jbeq .L885
#APP
	subql #1,240(%a0)
#NO_APP
	moveq #2,%d0
	cmp.l (%a0),%d0
	jbne .L885
	jbra .L888
	.align	2
.L887:
	pea 1.w
	move.l %a3,-(%sp)
	jbsr (%a1)
	addq.l #8,%sp
	move.l 526(%a3),%a0
	jbra .L876
	.align	2
.L888:
	move.l 264(%a0),-(%sp)
	jbsr wake_up_process
	addq.l #4,%sp
	.align	2
.L885:
	clr.l %d0
	move.l (%sp)+,%a3
	rts
	.size	fb_release, .-fb_release
	.section	.rodata.str1.1
.LC3:
	.string	"<4>Unable to create class_device for framebuffer %d; errno = %ld\n"
	.text
	.align	2
	.globl	register_framebuffer
	.type	register_framebuffer, @function
register_framebuffer:
	link.w %a6,#-64
	movm.l #0x301c,-(%sp)
	move.l 8(%a6),%a5
	move.l num_registered_fb,%d1
	moveq #-6,%d0
	moveq #32,%d2
	cmp.l %d1,%d2
	jbeq .L889
	addq.l #1,%d1
	move.l %d1,num_registered_fb
	clr.b %d2
	move.l #registered_fb,%d3
	.align	2
.L895:
	move.l %d3,%a0
	tst.l (%a0,%d2.l*4)
	jbeq .L892
	addq.l #1,%d2
	moveq #31,%d0
	cmp.l %d2,%d0
	jbge .L895
.L892:
	move.l %d2,(%a5)
	move.l %d2,-(%sp)
	pea .LC2
	move.l 530(%a5),-(%sp)
	move.l %d2,%d0
	or.l #30408704,%d0
	move.l %d0,-(%sp)
	clr.l -(%sp)
	move.l fb_class,-(%sp)
	jbsr class_device_create
	move.l %a0,534(%a5)
	lea (24,%sp),%sp
	cmp.w #-1000,%a0
	jbls .L896
	move.l %a0,-(%sp)
	move.l %d2,-(%sp)
	pea .LC3
	jbsr printk
	clr.l 534(%a5)
	lea (12,%sp),%sp
	tst.l 418(%a5)
	jbeq .L944
.L900:
	clr.l 426(%a5)
	tst.l 518(%a5)
	jbeq .L938
.L945:
	lea (514,%a5),%a4
	tst.l 514(%a5)
	jbeq .L938
.L937:
	pea 8(%a5)
	lea (-56,%a6),%a3
	move.l %a3,-(%sp)
	jbsr fb_var_to_videomode
	move.l %a4,-(%sp)
	move.l %a3,-(%sp)
	jbsr fb_add_videomode
	move.l %d3,%a0
	move.l %a5,(%a0,%d2.l*4)
	lea (16,%sp),%sp
	move.l %a5,-64(%a6)
	pea -64(%a6)
	pea 5.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	clr.l %d0
	lea (12,%sp),%sp
	jbra .L889
.L903:
	.align	2
.L944:
	pea 208.w
	move.l malloc_sizes+124,-(%sp)
	jbsr kmem_cache_alloc
	addq.l #8,%sp
	move.l %a0,418(%a5)
	jbeq .L900
	move.l #8192,422(%a5)
	moveq #1,%d0
	move.l %d0,430(%a5)
	move.l %d0,434(%a5)
	move.b #32,%d0
	move.l %d0,438(%a5)
	move.b #1,%d0
	move.l %d0,442(%a5)
	clr.l 426(%a5)
	tst.l 518(%a5)
	jbne .L945
.L938:
	lea (514,%a5),%a4
	move.l %a4,(%a4)
	move.l %a4,4(%a4)
	jbra .L937
	.align	2
.L896:
	move.l %a5,-(%sp)
	jbsr fb_init_class_device
	addq.l #4,%sp
	tst.l 418(%a5)
	jbne .L900
	jbra .L944
	.align	2
.L889:
	movm.l -84(%a6),#0x380c
	unlk %a6
	rts
	.size	register_framebuffer, .-register_framebuffer
	.align	2
	.globl	unregister_framebuffer
	.type	unregister_framebuffer, @function
unregister_framebuffer:
	movm.l #0x2018,-(%sp)
	move.l 16(%sp),%a3
	move.l (%a3),%d2
	lea registered_fb,%a4
	moveq #-22,%d0
	tst.l (%a4,%d2.l*4)
	jbeq .L946
	move.l 418(%a3),%d0
	jbne .L951
.L949:
	pea 514(%a3)
	jbsr fb_destroy_modelist
	clr.l (%a4,%d2.l*4)
	subq.l #1,num_registered_fb
	move.l %a3,-(%sp)
	jbsr fb_cleanup_class_device
	or.l #30408704,%d2
	move.l %d2,-(%sp)
	move.l fb_class,-(%sp)
	jbsr class_device_destroy
	clr.l %d0
	lea (16,%sp),%sp
	jbra .L946
	.align	2
.L951:
	btst #0,445(%a3)
	jbeq .L949
	move.l %d0,-(%sp)
	jbsr kfree
	addq.l #4,%sp
	jbra .L949
	.align	2
.L946:
	movm.l (%sp)+,#0x1804
	rts
	.size	unregister_framebuffer, .-unregister_framebuffer
	.align	2
	.globl	fb_register_client
	.type	fb_register_client, @function
fb_register_client:
	move.l 4(%sp),-(%sp)
	pea fb_notifier_list
	jbsr blocking_notifier_chain_register
	addq.l #8,%sp
	rts
	.size	fb_register_client, .-fb_register_client
	.align	2
	.globl	fb_unregister_client
	.type	fb_unregister_client, @function
fb_unregister_client:
	move.l 4(%sp),-(%sp)
	pea fb_notifier_list
	jbsr blocking_notifier_chain_unregister
	addq.l #8,%sp
	rts
	.size	fb_unregister_client, .-fb_unregister_client
	.align	2
	.globl	fb_set_suspend
	.type	fb_set_suspend, @function
fb_set_suspend:
	link.w %a6,#-8
	move.l %a3,-(%sp)
	move.l 8(%a6),%a3
	move.l %a3,-8(%a6)
	tst.l 12(%a6)
	jbeq .L955
	pea -8(%a6)
	pea 2.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	moveq #1,%d0
	move.l %d0,550(%a3)
	jbra .L957
	.align	2
.L955:
	clr.l 550(%a3)
	pea -8(%a6)
	pea 3.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
.L957:
	lea (12,%sp),%sp
	move.l -12(%a6),%a3
	unlk %a6
	rts
	.size	fb_set_suspend, .-fb_set_suspend
	.section	.rodata.str1.1
.LC5:
	.string	"fb"
.LC7:
	.string	"graphics"
.LC6:
	.string	"unable to get major %d for fb devs\n"
.LC8:
	.string	"<4>Unable to create fb class; errno = %ld\n"
	.section	.init.text,"ax",@progbits
	.align	2
	.type	fbmem_init, @function
fbmem_init:
	clr.l -(%sp)
	clr.l -(%sp)
	pea .LC5
	jbsr create_proc_entry
	lea (12,%sp),%sp
	tst.l %a0
	jbeq .L960
	move.l #fbmem_read_proc,62(%a0)
	clr.l 58(%a0)
.L960:
	pea fb_fops
	pea .LC5
	pea 29.w
	jbsr register_chrdev
	lea (12,%sp),%sp
	tst.l %d0
	jbne .L968
	pea .LC7
	clr.l -(%sp)
	jbsr class_create
	move.l %a0,fb_class
	addq.l #8,%sp
	cmp.w #-1000,%a0
	jbls .L964
	jbra .L969
	.align	2
.L968:
	pea 29.w
	pea .LC6
	jbsr printk
	addq.w #4,%sp
	move.l #.LC7,(%sp)
	clr.l -(%sp)
	jbsr class_create
	move.l %a0,fb_class
	addq.l #8,%sp
	cmp.w #-1000,%a0
	jbls .L964
	.align	2
.L969:
	move.l %a0,-(%sp)
	pea .LC8
	jbsr printk
	clr.l fb_class
	addq.l #8,%sp
	.align	2
.L964:
	clr.l %d0
	rts
	.size	fbmem_init, .-fbmem_init
	.text
	.align	2
	.globl	fb_new_modelist
	.type	fb_new_modelist, @function
fb_new_modelist:
	link.w %a6,#-224
	movm.l #0x3f1c,-(%sp)
	move.l %a6,%d3
	add.l #-160,%d3
	pea 160.w
	move.l 8(%a6),%a0
	pea 8(%a0)
	move.l %d3,-(%sp)
	jbsr memcpy
	move.l 8(%a6),%a0
	move.l 514(%a0),%a3
	move.l (%a3),%d4
	lea (12,%sp),%sp
	lea (514,%a0),%a5
	cmp.l %a5,%a3
	jbeq .L982
	move.l #fb_set_var,%d7
	move.l %a6,%d5
	add.l #-216,%d5
	move.l #fb_var_to_videomode,%d6
	.align	2
.L978:
	lea (8,%a3),%a4
	move.l %a4,-(%sp)
	move.l %d3,-(%sp)
	jbsr fb_videomode_to_var
	moveq #2,%d0
	move.l %d0,-76(%a6)
	move.l %d3,-(%sp)
	move.l 8(%a6),-(%sp)
	move.l %d7,%a0
	jbsr (%a0)
	move.l %d0,%d2
	move.l %d3,-(%sp)
	move.l %d5,-(%sp)
	move.l %d6,%a0
	jbsr (%a0)
	lea (24,%sp),%sp
	tst.l %d2
	jbne .L975
	move.l %d5,-(%sp)
	move.l %a4,-(%sp)
	jbsr fb_mode_is_equal
	addq.l #8,%sp
	tst.l %d0
	jbne .L973
.L975:
	move.l 4(%a3),%a1
	move.l (%a3),%a0
	move.l %a1,4(%a0)
	move.l %a0,(%a1)
	move.l #1048832,(%a3)
	move.l #2097664,4(%a3)
	move.l %a3,-(%sp)
	jbsr kfree
	addq.l #4,%sp
.L973:
	move.l %d4,%a3
	move.l (%a3),%d4
	cmp.l %a5,%a3
	jbne .L978
.L982:
	moveq #1,%d2
	cmp.l (%a5),%a5
	jbeq .L979
	move.l 8(%a6),-224(%a6)
	pea -224(%a6)
	pea 9.w
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	move.l %d0,%d2
	lea (12,%sp),%sp
	.align	2
.L979:
	move.l %d2,%d0
	movm.l -260(%a6),#0x38fc
	unlk %a6
	rts
	.size	fb_new_modelist, .-fb_new_modelist
	.align	2
	.globl	fb_con_duit
	.type	fb_con_duit, @function
fb_con_duit:
	link.w %a6,#-8
	move.l 8(%a6),-8(%a6)
	move.l 16(%a6),-4(%a6)
	pea -8(%a6)
	move.l 12(%a6),-(%sp)
	pea fb_notifier_list
	jbsr blocking_notifier_call_chain
	lea (12,%sp),%sp
	unlk %a6
	rts
	.size	fb_con_duit, .-fb_con_duit
	.section	.rodata.str1.1
.LC9:
	.string	"offb"
.LC10:
	.string	"off"
	.text
	.align	2
	.globl	fb_get_options
	.type	fb_get_options, @function
fb_get_options:
	movm.l #0x3c1e,-(%sp)
	move.l 36(%sp),%a4
	move.l 40(%sp),%d5
	sub.l %a6,%a6
	clr.l %d4
	move.l %a4,%a0
	tst.b (%a4)
	jbeq .L1014
	.align	2
.L989:
	addq.l #1,%a0
	tst.b (%a0)
	jbne .L989
.L1014:
	move.l %a0,%d3
	sub.l %a4,%d3
	jbeq .L991
	tst.l ofonly
	jbeq .L991
	lea .LC9,%a0
	moveq #4,%d0
	move.l %a4,%a1
#APP
	1:	movb %a1@+,%d1
	cmpb   %a0@+,%d1
	jne    3f
	tstb   %d1
	jeq    4f
	subql  #1,%d0
	jne    1b
	2:	moveq #0,%d1
	jra    4f
	3:	subb %a0@-,%d1
	4:
#NO_APP
	tst.b %d1
	jbne .L1020
.L991:
	tst.l %d3
	jbeq .L1009
	tst.l %d4
	jbne .L1009
	clr.l %d2
	lea video_options,%a5
	.align	2
.L1008:
	move.l (%a5,%d2.l*4),%a1
	tst.l %a1
	jbne .L1021
.L997:
	addq.l #1,%d2
	moveq #31,%d0
	cmp.l %d2,%d0
	jbge .L1008
.L1022:
	tst.l %a6
	jbeq .L1009
	lea .LC10,%a0
	move.b #3,%d0
	move.l %a6,%a1
#APP
	1:	movb %a1@+,%d1
	cmpb   %a0@+,%d1
	jne    3f
	tstb   %d1
	jeq    4f
	subql  #1,%d0
	jne    1b
	2:	moveq #0,%d1
	jra    4f
	3:	subb %a0@-,%d1
	4:
#NO_APP
	tst.b %d1
	jbne .L1009
	moveq #1,%d4
.L1009:
	tst.l %d5
	jbeq .L1012
	move.l %d5,%a0
	move.l %a6,(%a0)
	jbra .L1012
	.align	2
.L1021:
	move.l %a1,%a0
	tst.b (%a1)
	jbeq .L1017
	.align	2
.L1002:
	addq.l #1,%a0
	tst.b (%a0)
	jbne .L1002
.L1017:
	cmp.l %a0,%a1
	jbeq .L997
	move.l (%a5,%d2.l*4),%a3
	tst.l %d3
	jbeq .L1018
	move.l %a4,%a1
	move.l %a3,%a0
	move.l %d3,%d1
#APP
	1:	movb %a1@+,%d0
	cmpb   %a0@+,%d0
	jne    3f
	tstb   %d0
	jeq    4f
	subql  #1,%d1
	jne    1b
	2:	moveq #0,%d0
	jra    4f
	3:	subb %a0@-,%d0
	4:
#NO_APP
	tst.b %d0
	jbne .L997
.L1018:
	cmp.b #58,(%a3,%d3.l)
	jbne .L997
	lea 1(%a3,%d3.l),%a6
	addq.l #1,%d2
	moveq #31,%d0
	cmp.l %d2,%d0
	jbge .L1008
	jbra .L1022
	.align	2
.L1020:
	moveq #1,%d4
	jbra .L991
	.align	2
.L1012:
	move.l %d4,%d0
	movm.l (%sp)+,#0x783c
	rts
	.size	fb_get_options, .-fb_get_options
	.section	.rodata.str1.1
.LC11:
	.string	"ofonly"
.LC12:
	.string	"fb:"
	.section	.init.text
	.align	2
	.type	video_setup, @function
video_setup:
	move.l %a3,-(%sp)
	move.l 8(%sp),%a3
	tst.l %a3
	jbeq .L1030
	tst.b (%a3)
	jbeq .L1030
	lea .LC11,%a0
	moveq #6,%d0
	move.l %a3,%a1
#APP
	1:	movb %a1@+,%d1
	cmpb   %a0@+,%d1
	jne    3f
	tstb   %d1
	jeq    4f
	subql  #1,%d0
	jne    1b
	2:	moveq #0,%d1
	jra    4f
	3:	subb %a0@-,%d1
	4:
#NO_APP
	tst.b %d1
	jbne .L1038
	moveq #1,%d0
	move.l %d0,ofonly
	jbra .L1030
	.align	2
.L1038:
	pea .LC12
	move.l %a3,-(%sp)
	jbsr strstr
	addq.l #8,%sp
	tst.l %a0
	jbeq .L1042
	clr.l %d0
	lea video_options,%a0
	tst.l (%a0,%d0.l*4)
	jbeq .L1043
	.align	2
.L1033:
	addq.l #1,%d0
	moveq #31,%d1
	cmp.l %d0,%d1
	jblt .L1030
	tst.l (%a0,%d0.l*4)
	jbne .L1033
.L1043:
	move.l %a3,(%a0,%d0.l*4)
	jbra .L1030
	.align	2
.L1042:
	move.l %a3,global_mode_option
	.align	2
.L1030:
	moveq #1,%d0
	move.l (%sp)+,%a3
	rts
	.size	video_setup, .-video_setup
	.globl	registered_fb
	.section	.bss
	.align	2
	.type	registered_fb, @object
	.size	registered_fb, 128
registered_fb:
	.zero	128
	.globl	num_registered_fb
	.align	2
	.type	num_registered_fb, @object
	.size	num_registered_fb, 4
num_registered_fb:
	.zero	4
	.local	fb_logo
	.comm	fb_logo,20,2
	.local	fb_class
	.comm	fb_class,4,2
	.local	video_options
	.comm	video_options,128,2
	.local	ofonly
	.comm	ofonly,4,2
	.section	.note.GNU-stack,"",@progbits
	.ident	"GCC: (GNU) 3.4.6"



Reply to: