[Xorg-driver-geode] [PATCH] Allow compilation under 64 bit systems
Gaetan Nadon
memsize at videotron.ca
Tue Jun 22 16:53:11 PDT 2010
Only a few assembler related statements fails to compile
on x86_64. These will be compiled under i386+
Although the driver does not run on 64 bit systems. it prevents
build errors to be reported and it allows non-geode specific
contributions to be made.
Compiled on AMD64
Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
src/cim/cim_defs.h | 5 ++++-
src/durango.c | 4 ++++
src/lx_driver.c | 4 ++++
3 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/src/cim/cim_defs.h b/src/cim/cim_defs.h
index eea2f49..5d7e257 100644
--- a/src/cim/cim_defs.h
+++ b/src/cim/cim_defs.h
@@ -674,7 +674,9 @@ void cim_outd(unsigned short port, unsigned long data);
void
cim_outd(unsigned short port, unsigned long data)
{
+#ifdef __i386__
__asm__ __volatile__("outl %0,%w1"::"a"(data), "Nd"(port));
+#endif
}
/*-------------------------------------------
@@ -688,8 +690,9 @@ unsigned long
cim_ind(unsigned short port)
{
unsigned long value;
+#ifdef __i386__
__asm__ __volatile__("inl %w1,%0":"=a"(value):"Nd"(port));
-
+#endif
return value;
}
diff --git a/src/durango.c b/src/durango.c
index 9d6970b..20a25a3 100644
--- a/src/durango.c
+++ b/src/durango.c
@@ -200,7 +200,9 @@ gfx_msr_asm_write(unsigned short reg, unsigned long addr,
}
/* This is the fallback VSA method - not preferred */
+#ifdef __i386__
vsa_msr_write(reg, addr, hi, lo);
+#endif
}
void
@@ -218,7 +220,9 @@ gfx_msr_asm_read(unsigned short reg, unsigned long addr,
}
/* This is the fallback VSA method - not preferred */
+#ifdef __i386__
vsa_msr_read(reg, addr, hi, lo);
+#endif
}
#include "gfx_init.c"
diff --git a/src/lx_driver.c b/src/lx_driver.c
index 08d1fdd..71fc958 100644
--- a/src/lx_driver.c
+++ b/src/lx_driver.c
@@ -125,7 +125,9 @@ LXReadMSR(unsigned long addr, unsigned long *lo, unsigned long *hi)
if (GeodeReadMSR(addr, lo, hi) == -1) {
unsigned int l, h;
+#ifdef __i386__
LX_MSR_READ(addr, l, h);
+#endif
*lo = l;
*hi = h;
}
@@ -134,8 +136,10 @@ LXReadMSR(unsigned long addr, unsigned long *lo, unsigned long *hi)
static void
LXWriteMSR(unsigned long addr, unsigned long lo, unsigned long hi)
{
+#ifdef __i386__
if (GeodeWriteMSR(addr, lo, hi) == -1)
LX_MSR_WRITE(addr, lo, hi);
+#endif
}
static unsigned int
--
1.6.0.4
This is my preferred solution. Most drivers compile on all platforms
even if runnable on some.
Compiled on Intel 32 and AMD64. Please check that __i386__ is defined
on all platforms that Geode is expected to run under.
More information about the Xorg-driver-geode
mailing list