9838b7032e
This is strictly the application of the script 'x-indent-all.sh' from util/modular. Compared to the patch that Daniel posted in January, I've added a few indent flags: -bap -psl -T PrivatePtr -T pmWait -T _XFUNCPROTOBEGIN -T _XFUNCPROTOEND -T _X_EXPORT The typedefs were needed to make the output of sdksyms.sh match the previous output, otherwise, the code is formatted badly enough that sdksyms.sh generates incorrect output. The generated code was compared with the previous version and found to be essentially identical -- "assert" line numbers and BUILD_TIME were the only differences found. The comparison was done with this script: dir1=$1 dir2=$2 for dir in $dir1 $dir2; do (cd $dir && find . -name '*.o' | while read file; do dir=`dirname $file` base=`basename $file .o` dump=$dir/$base.dump objdump -d $file > $dump done) done find $dir1 -name '*.dump' | while read dump; do otherdump=`echo $dump | sed "s;$dir1;$dir2;"` diff -u $dump $otherdump done Signed-off-by: Keith Packard <keithp@keithp.com> Acked-by: Daniel Stone <daniel@fooishbar.org> Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
117 lines
2.4 KiB
C
117 lines
2.4 KiB
C
/*******************************************************************************
|
|
for Alpha Linux
|
|
*******************************************************************************/
|
|
|
|
/*
|
|
* Create a dependency that should be immune from the effect of register
|
|
* renaming as is commonly seen in superscalar processors. This should
|
|
* insert a minimum of 100-ns delays between reads/writes at clock rates
|
|
* up to 100 MHz---GGL
|
|
*
|
|
* Slowbcopy(char *src, char *dst, int count)
|
|
*
|
|
*/
|
|
|
|
#ifdef HAVE_XORG_CONFIG_H
|
|
#include <xorg-config.h>
|
|
#endif
|
|
|
|
#include <X11/X.h>
|
|
#include "xf86.h"
|
|
#include "xf86Priv.h"
|
|
#include "xf86_OSlib.h"
|
|
#include "compiler.h"
|
|
|
|
static int really_slow_bcopy;
|
|
|
|
void
|
|
xf86SetReallySlowBcopy(void)
|
|
{
|
|
really_slow_bcopy = 1;
|
|
}
|
|
|
|
#if defined(__i386__) || defined(__amd64__)
|
|
static void
|
|
xf86_really_slow_bcopy(unsigned char *src, unsigned char *dst, int len)
|
|
{
|
|
while (len--) {
|
|
*dst++ = *src++;
|
|
outb(0x80, 0x00);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
/* The outb() isn't needed on my machine, but who knows ... -- ost */
|
|
void
|
|
xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
|
|
{
|
|
#if defined(__i386__) || defined(__amd64__)
|
|
if (really_slow_bcopy) {
|
|
xf86_really_slow_bcopy(src, dst, len);
|
|
return;
|
|
}
|
|
#endif
|
|
while (len--)
|
|
*dst++ = *src++;
|
|
}
|
|
|
|
#ifdef __alpha__
|
|
|
|
#ifdef linux
|
|
|
|
unsigned long _bus_base(void);
|
|
|
|
#define useSparse() (!_bus_base())
|
|
|
|
#define SPARSE (7)
|
|
|
|
#else
|
|
|
|
#define useSparse() 0
|
|
|
|
#define SPARSE 0
|
|
|
|
#endif
|
|
|
|
void
|
|
xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int count)
|
|
{
|
|
if (useSparse()) {
|
|
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);
|
|
}
|
|
}
|
|
else
|
|
xf86SlowBcopy(src, dst, count);
|
|
}
|
|
|
|
void
|
|
xf86SlowBCopyToBus(unsigned char *src, unsigned char *dst, int count)
|
|
{
|
|
if (useSparse()) {
|
|
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);
|
|
}
|
|
}
|
|
else
|
|
xf86SlowBcopy(src, dst, count);
|
|
}
|
|
#endif
|