Revert "alpha: kill xf86SlowBCopyToBus and xf86SlowBCopyFromBus"
The vesa driver still uses slowbcopy_frombus and slowbcopy_tobus.
This reverts commit 5ef53a94ce
.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
6676f49e34
commit
aa07957373
|
@ -1211,6 +1211,8 @@ extern _X_EXPORT void (*xf86WriteMmio32)(int, void *, unsigned long);
|
||||||
extern _X_EXPORT void (*xf86WriteMmioNB8)(int, void *, unsigned long);
|
extern _X_EXPORT void (*xf86WriteMmioNB8)(int, void *, unsigned long);
|
||||||
extern _X_EXPORT void (*xf86WriteMmioNB16)(int, void *, unsigned long);
|
extern _X_EXPORT void (*xf86WriteMmioNB16)(int, void *, unsigned long);
|
||||||
extern _X_EXPORT void (*xf86WriteMmioNB32)(int, void *, unsigned long);
|
extern _X_EXPORT void (*xf86WriteMmioNB32)(int, void *, unsigned long);
|
||||||
|
extern _X_EXPORT void xf86SlowBCopyFromBus(unsigned char *, unsigned char *, int);
|
||||||
|
extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int);
|
||||||
|
|
||||||
/* Some macros to hide the system dependencies for MMIO accesses */
|
/* Some macros to hide the system dependencies for MMIO accesses */
|
||||||
/* Changed to kill noise generated by gcc's -Wcast-align */
|
/* Changed to kill noise generated by gcc's -Wcast-align */
|
||||||
|
@ -1342,4 +1344,18 @@ extern _X_EXPORT void (*xf86WriteMmioNB32)(int, void *, unsigned long);
|
||||||
# define MMIO_MOVE32(base, offset, val) MMIO_OUT32(base, offset, val)
|
# define MMIO_MOVE32(base, offset, val) MMIO_OUT32(base, offset, val)
|
||||||
|
|
||||||
# endif /* __alpha__ */
|
# endif /* __alpha__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* With Intel, the version in os-support/misc/SlowBcopy.s is used.
|
||||||
|
* This avoids port I/O during the copy (which causes problems with
|
||||||
|
* some hardware).
|
||||||
|
*/
|
||||||
|
# ifdef __alpha__
|
||||||
|
# define slowbcopy_tobus(src,dst,count) xf86SlowBCopyToBus(src,dst,count)
|
||||||
|
# define slowbcopy_frombus(src,dst,count) xf86SlowBCopyFromBus(src,dst,count)
|
||||||
|
# else /* __alpha__ */
|
||||||
|
# define slowbcopy_tobus(src,dst,count) xf86SlowBcopy(src,dst,count)
|
||||||
|
# define slowbcopy_frombus(src,dst,count) xf86SlowBcopy(src,dst,count)
|
||||||
|
# endif /* __alpha__ */
|
||||||
|
|
||||||
#endif /* _COMPILER_H */
|
#endif /* _COMPILER_H */
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
for Alpha Linux
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a dependency that should be immune from the effect of register
|
* Create a dependency that should be immune from the effect of register
|
||||||
* renaming as is commonly seen in superscalar processors. This should
|
* renaming as is commonly seen in superscalar processors. This should
|
||||||
* insert a minimum of 100-ns delays between reads/writes at clock rates
|
* insert a minimum of 100-ns delays between reads/writes at clock rates
|
||||||
* up to 100 MHz---GGL
|
* up to 100 MHz---GGL
|
||||||
|
*
|
||||||
|
* Slowbcopy(char *src, char *dst, int count)
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
|
@ -47,3 +54,48 @@ xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
|
||||||
while(len--)
|
while(len--)
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __alpha__
|
||||||
|
|
||||||
|
#ifdef linux
|
||||||
|
|
||||||
|
#define SPARSE (7)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define SPARSE 0
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void
|
||||||
|
xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int count)
|
||||||
|
{
|
||||||
|
unsigned long addr;
|
||||||
|
long result;
|
||||||
|
|
||||||
|
addr = (unsigned long) src;
|
||||||
|
while( count ){
|
||||||
|
result = *(volatile int *) addr;
|
||||||
|
result >>= ((addr>>SPARSE) & 3) * 8;
|
||||||
|
*dst++ = (unsigned char) (0xffUL & result);
|
||||||
|
addr += 1<<SPARSE;
|
||||||
|
count--;
|
||||||
|
outb(0x80, 0x00);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xf86SlowBCopyToBus(unsigned char *src, unsigned char *dst, int count)
|
||||||
|
{
|
||||||
|
unsigned long addr;
|
||||||
|
|
||||||
|
addr = (unsigned long) dst;
|
||||||
|
while(count) {
|
||||||
|
*(volatile unsigned int *) addr = (unsigned short)(*src) * 0x01010101;
|
||||||
|
src++;
|
||||||
|
addr += 1<<SPARSE;
|
||||||
|
count--;
|
||||||
|
outb(0x80, 0x00);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -131,7 +131,7 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
xf86SlowBcopy((unsigned char *)(base+Offset), Buf, Len);
|
xf86SlowBCopyFromBus((unsigned char *)(base+Offset), Buf, Len);
|
||||||
|
|
||||||
munmap((caddr_t)base, mlen);
|
munmap((caddr_t)base, mlen);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
|
@ -793,7 +793,7 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
|
||||||
if (hwp->FontInfo1) {
|
if (hwp->FontInfo1) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
|
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
|
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
|
||||||
xf86SlowBcopy(hwp->FontInfo1, hwp->Base, FONT_AMOUNT);
|
slowbcopy_tobus(hwp->FontInfo1, hwp->Base, FONT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -801,7 +801,7 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
|
||||||
if (hwp->FontInfo2) {
|
if (hwp->FontInfo2) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
|
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
|
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
|
||||||
xf86SlowBcopy(hwp->FontInfo2, hwp->Base, FONT_AMOUNT);
|
slowbcopy_tobus(hwp->FontInfo2, hwp->Base, FONT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -809,10 +809,10 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
|
||||||
if (hwp->TextInfo) {
|
if (hwp->TextInfo) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
|
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
|
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
|
||||||
xf86SlowBcopy(hwp->TextInfo, hwp->Base, TEXT_AMOUNT);
|
slowbcopy_tobus(hwp->TextInfo, hwp->Base, TEXT_AMOUNT);
|
||||||
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
|
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
|
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
|
||||||
xf86SlowBcopy((unsigned char *)hwp->TextInfo + TEXT_AMOUNT,
|
slowbcopy_tobus((unsigned char *)hwp->TextInfo + TEXT_AMOUNT,
|
||||||
hwp->Base, TEXT_AMOUNT);
|
hwp->Base, TEXT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -971,24 +971,24 @@ vgaHWSaveFonts(ScrnInfoPtr scrninfp, vgaRegPtr save)
|
||||||
if (hwp->FontInfo1 || (hwp->FontInfo1 = xalloc(FONT_AMOUNT))) {
|
if (hwp->FontInfo1 || (hwp->FontInfo1 = xalloc(FONT_AMOUNT))) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
|
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
|
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
|
||||||
xf86SlowBcopy(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
|
slowbcopy_frombus(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif /* SAVE_FONT1 */
|
#endif /* SAVE_FONT1 */
|
||||||
#if SAVE_FONT2
|
#if SAVE_FONT2
|
||||||
if (hwp->FontInfo2 || (hwp->FontInfo2 = xalloc(FONT_AMOUNT))) {
|
if (hwp->FontInfo2 || (hwp->FontInfo2 = xalloc(FONT_AMOUNT))) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
|
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
|
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
|
||||||
xf86SlowBcopy(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
|
slowbcopy_frombus(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif /* SAVE_FONT2 */
|
#endif /* SAVE_FONT2 */
|
||||||
#if SAVE_TEXT
|
#if SAVE_TEXT
|
||||||
if (hwp->TextInfo || (hwp->TextInfo = xalloc(2 * TEXT_AMOUNT))) {
|
if (hwp->TextInfo || (hwp->TextInfo = xalloc(2 * TEXT_AMOUNT))) {
|
||||||
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
|
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
|
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
|
||||||
xf86SlowBcopy(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);
|
slowbcopy_frombus(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);
|
||||||
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
|
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
|
||||||
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
|
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
|
||||||
xf86SlowBcopy(hwp->Base,
|
slowbcopy_frombus(hwp->Base,
|
||||||
(unsigned char *)hwp->TextInfo + TEXT_AMOUNT, TEXT_AMOUNT);
|
(unsigned char *)hwp->TextInfo + TEXT_AMOUNT, TEXT_AMOUNT);
|
||||||
}
|
}
|
||||||
#endif /* SAVE_TEXT */
|
#endif /* SAVE_TEXT */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user