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 [EMAIL PROTECTED],%d1
        cmpb   [EMAIL PROTECTED],%d1
        jne    3f
        tstb   %d1
        jeq    4f
        subql  #1,%d0
        jne    1b
        2:      moveq #0,%d1
        jra    4f
        3:      subb [EMAIL PROTECTED],%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 [EMAIL PROTECTED],%d1
        cmpb   [EMAIL PROTECTED],%d1
        jne    3f
        tstb   %d1
        jeq    4f
        subql  #1,%d0
        jne    1b
        2:      moveq #0,%d1
        jra    4f
        3:      subb [EMAIL PROTECTED],%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 [EMAIL PROTECTED],%d0
        cmpb   [EMAIL PROTECTED],%d0
        jne    3f
        tstb   %d0
        jeq    4f
        subql  #1,%d1
        jne    1b
        2:      moveq #0,%d0
        jra    4f
        3:      subb [EMAIL PROTECTED],%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 [EMAIL PROTECTED],%d1
        cmpb   [EMAIL PROTECTED],%d1
        jne    3f
        tstb   %d1
        jeq    4f
        subql  #1,%d0
        jne    1b
        2:      moveq #0,%d1
        jra    4f
        3:      subb [EMAIL PROTECTED],%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"


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to