[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

X Strike Force SVN commit: rev 191 - branches/4.3.0/sid/debian/patches



Author: daniel
Date: 2003-06-13 01:54:16 -0500 (Fri, 13 Jun 2003)
New Revision: 191

Added:
   branches/4.3.0/sid/debian/patches/302_arm_compiler.h.diff
Log:
New patch #302: ARM compiler.h diff from Phil Blundell. Maybe there's a
snowball's chance in hell of ARM completing a build now. We'll see.


Added: branches/4.3.0/sid/debian/patches/302_arm_compiler.h.diff
==============================================================================
--- branches/4.3.0/sid/debian/patches/302_arm_compiler.h.diff	2003-06-12 20:18:13 UTC (rev 190)
+++ branches/4.3.0/sid/debian/patches/302_arm_compiler.h.diff	2003-06-13 06:54:16 UTC (rev 191)
@@ -0,0 +1,99 @@
+This patch fixes compiler.h so it actually has a snowball's chance in hell of
+building on ARM; this patch by Phil Blundell.
+
+--- clean/xc/programs/Xserver/hw/xfree86/common/compiler.h	2003-01-29 15:23:20.000000000 +0000
++++ xc/programs/Xserver/hw/xfree86/common/compiler.h	2003-06-11 11:37:04.000000000 +0000
+@@ -87,7 +87,8 @@
+ 
+ # if defined(NO_INLINE) || defined(DO_PROTOTYPES)
+ 
+-#  if !defined(__sparc__) && !defined(__arm32__) \
++#  if !defined(__arm__)
++#   if !defined(__sparc__) && !defined(__arm32__) \
+       && !(defined(__alpha__) && defined(linux))
+ 
+ extern void outb(unsigned short, unsigned char);
+@@ -97,7 +98,7 @@
+ extern unsigned int inw(unsigned short);
+ extern unsigned int inl(unsigned short);
+ 
+-#  else /* __sparc__,  __arm32__, __alpha__*/
++#   else /* __sparc__,  __arm32__, __alpha__*/
+ 
+ extern void outb(unsigned long, unsigned char);
+ extern void outw(unsigned long, unsigned short);
+@@ -106,7 +107,8 @@
+ extern unsigned int inw(unsigned long);
+ extern unsigned int inl(unsigned long);
+ 
+-#  endif /* __sparc__,  __arm32__, __alpha__ */
++#   endif /* __sparc__,  __arm32__, __alpha__ */
++#  endif /* __arm__ */
+ 
+ extern unsigned long ldq_u(unsigned long *);
+ extern unsigned long ldl_u(unsigned int *);
+@@ -848,7 +850,7 @@
+ #    define mem_barrier()         /* XXX: nop for now */
+ #    define write_mem_barrier()   /* XXX: nop for now */
+ 
+-#   elif defined(__mips__) || defined(__arm32__)
++#   elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__))
+ #ifdef __arm32__
+ #define PORT_SIZE long
+ #else
+@@ -1244,6 +1246,55 @@
+ #    define mem_barrier()	eieio()
+ #    define write_mem_barrier()	eieio()
+ 
++#elif defined(__arm__) && defined(__linux__)
++
++#define ldq_u(p)	(*((unsigned long  *)(p)))
++#define ldl_u(p)	(*((unsigned int   *)(p)))
++#define ldw_u(p)	(*((unsigned short *)(p)))
++#define stq_u(v,p)	(*(unsigned long  *)(p)) = (v)
++#define stl_u(v,p)	(*(unsigned int   *)(p)) = (v)
++#define stw_u(v,p)	(*(unsigned short *)(p)) = (v)
++#define mem_barrier()   /* NOP */
++#define write_mem_barrier()   /* NOP */
++
++/* for Linux on ARM, we use the LIBC inx/outx routines */
++/* note that the appropriate setup via "ioperm" needs to be done */
++/*  *before* any inx/outx is done. */
++
++#include <sys/io.h>
++
++static __inline__ void
++xf_outb(unsigned short port, unsigned char val)
++{
++    outb(val, port);
++}
++
++static __inline__ void
++xf_outw(unsigned short port, unsigned short val)
++{
++    outw(val, port);
++}
++
++static __inline__ void
++xf_outl(unsigned short port, unsigned int val)
++{
++    outl(val, port);
++}
++
++#define outb xf_outb
++#define outw xf_outw
++#define outl xf_outl
++
++#define arm_flush_cache(addr)						\
++do {									\
++  register unsigned long _beg __asm ("a1") = (unsigned long) (addr);	\
++  register unsigned long _end __asm ("a2") = (unsigned long) (addr) + 4;\
++  register unsigned long _flg __asm ("a3") = 0;				\
++  __asm __volatile ("swi 0x9f0002		@ sys_cacheflush"	\
++    : "=r" (_beg)							\
++    : "0" (_beg), "r" (_end), "r" (_flg));				\
++} while (0)
++
+ #   else /* ix86 */
+ 
+ #    define ldq_u(p)	(*((unsigned long  *)(p)))



Reply to: