Re: Failed build of xorg on Arm Netwinder
Donnie Berkholz <[email protected]>
| Newsgroups | gmane.comp.freedesktop.release-wranglers |
|---|---|
| Message-ID | <1093231660.25626.0.camel@localhost> |
On Sun, 2004-08-22 at 10:31, Mark Berry wrote: > Following is the crash of cvs xc release of xorg on an arm netwinder. > Any idea's or thoughts about the problem would be greatly appreciated!! Try the attached patch. I earlier posted it, but apparently it hasn't made it in. -- Donnie Berkholz Gentoo Linux _______________________________________________ release-wranglers mailing list [email protected] http://freedesktop.org/mailman/listinfo/release-wranglers
9210_all_XFree86-4.3.0-arm32-compiler.h.patch
(text/x-patch, 3 KB)
--- 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)))
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBBKWQsXVaO67S1rtsRAuDQAJ96d//ow5F8dTRwtzJEAHWjDCTilwCffS3M lDTuypUzmq2izE8HisQwImw= =3qqH -----END PGP SIGNATURE-----