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: