patch-2.2.14 linux/include/asm-alpha/vga.h
Next file: linux/include/asm-i386/fixmap.h
Previous file: linux/include/asm-alpha/system.h
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Tue Jan 4 10:12:24 2000
- Orig file:
v2.2.13/linux/include/asm-alpha/vga.h
- Orig date:
Thu Feb 25 10:02:12 1999
diff -u --recursive --new-file v2.2.13/linux/include/asm-alpha/vga.h linux/include/asm-alpha/vga.h
@@ -11,6 +11,7 @@
#define VT_BUF_HAVE_RW
#define VT_BUF_HAVE_MEMSETW
+#define VT_BUF_HAVE_MEMCPYW
#define VT_BUF_HAVE_MEMCPYF
extern inline void scr_writew(u16 val, u16 *addr)
@@ -37,16 +38,28 @@
memsetw_io(s, c, count);
}
-extern inline void scr_memcpyw_from(u16 *d, const u16 *s, unsigned int count)
+/* Try to do this the optimal way for the given destination and source. */
+extern inline void scr_memcpyw(u16 *d, const u16 *s, unsigned int count)
{
- memcpy_fromio(d, s, count);
-}
-
-extern inline void scr_memcpyw_to(u16 *d, const u16 *s, unsigned int count)
-{
- memcpy_toio(d, s, count);
+ if ((long)s < 0) { /* source is memory */
+ if ((long)d < 0) memcpy(d, s, count); /* dest is memory */
+ else memcpy_toio(d, s, count); /* dest is screen */
+ } else { /* source is screen */
+ if ((long)d < 0) memcpy_fromio(d, s, count); /* dest is memory */
+ else { /* dest is screen */
+ /* Right now, we do this the slow way,
+ as we cannot handle screen unaligned ops...
+ */
+ count /= 2;
+ while (count--)
+ scr_writew(scr_readw(s++), d++);
+ }
+ }
}
+/* Do not trust that the usage will be correct; analyze the arguments. */
+#define scr_memcpyw_from scr_memcpyw
+#define scr_memcpyw_to scr_memcpyw
#define vga_readb readb
#define vga_writeb writeb
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)