On Sat, 1 Apr 2000, David S. Miller wrote:
> fb->screenbase is an I/O address, so include/linux/fbcon.h cannot
> call the normal memmove() on the frame buffer addresses passed
> to it.
> 
> The traces make it clear that memmove() is being called with
> physical I/O addresses:
> 
> >>TPC; 0055e3c0 <dest_is_64byte_aligned+48/5c>   <=====
> 
> (arch/sparc64/lib/VIScopy.S) dest_is_64byte_aligned:
>   ... skip 0x48 bytes ...
>       EXVIS1(LDBLK            [%o1 + 0x00] ASIBLK, %f0)       ! LSU   Group
> 
> o0: 000001ffe1800000 o1: 000001ffe1ab6600 o2: 0000000000000010 o3: 00000000000000f0
>                    ^^^^^^^^^^^^^^^^^^^^
> 
> I/O space starts at 0x10000000000 on UltraSparc systems.
> 
> One suggestion is to change include/video/fbcon.h to implement
> fb_memmove() in terms of fb_read{b,w,l}/fb_write{b,w,l}
> 
> This would be correct for all architectures which lack a specific
> version in fbcon.h already.  The ix86 version works by accident
> because ioremap()'d areas just so happen to be implemented by
> virtually mapping them into the kernel.

That's also my suggestion. BTW, how come no one ever found out before on
SPARC64?

> Even better would be to require that the asm/io.h headers define a
> {memcpy,memmove}_io() (ie. where source _and_ destination are I/O
> addresses) and then have fbcon.h just define fb_memmove to memmove_io
> in the generic cases.

Indeed even better.

Gr{oetje,eeting}s,

                                                Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                                            -- Linus Torvalds

-
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of the message to [EMAIL PROTECTED]

Reply via email to