summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@ginger.bigkitten.com>2008-06-09 19:06:44 -0700
committerDavid Schleef <ds@ginger.bigkitten.com>2008-06-09 19:06:44 -0700
commitc389ab30282f868dd41ed88092d3779c023ac740 (patch)
tree99636a3ea033b4ce9cb626d678b5c1c063b61474
parentcc9af0b0bb9dc00feef0b5b47191781300a9db16 (diff)
parent8304de0c341d3e79799c0e6c00dafe62bbf079e0 (diff)
downloadliboil-c389ab30282f868dd41ed88092d3779c023ac740.tar.gz
Merge branch 'master' of ssh://git.freedesktop.org/git/liboil
-rw-r--r--examples/orc/Makefile.am4
-rw-r--r--examples/orc/jit.c1
-rw-r--r--examples/orc/simple.c1
-rw-r--r--liboil/c/copy.c2
-rw-r--r--liboil/c/swab.c2
-rw-r--r--liboil/conv/conv_bitstuff.c2
-rw-r--r--liboil/conv/conv_misc.c2
-rw-r--r--liboil/dct/dct.h4
-rw-r--r--liboil/dct/idct8x8_c.c6
-rw-r--r--liboil/jpeg/convert8x8_c.c10
-rw-r--r--liboil/jpeg/quantize8x8_c.c2
-rw-r--r--liboil/liboilcpu-x86.c8
-rw-r--r--liboil/liboiltest.c3
-rw-r--r--liboil/liboilutils.c2
-rw-r--r--orc/Makefile.am13
-rw-r--r--orc/orc.c2
-rw-r--r--orc/orcprogram-powerpc.c1
-rw-r--r--orc/orcprogram-unknown-os.c58
-rw-r--r--orc/orcprogram-x86.c1
-rw-r--r--orc/orcprogram.h1
-rw-r--r--orc/orcrules-mmx.c1
-rw-r--r--orc/orcrules-sse.c1
-rw-r--r--orc/orcrules-x86.c1
-rw-r--r--orc/x86.c1
24 files changed, 105 insertions, 24 deletions
diff --git a/examples/orc/Makefile.am b/examples/orc/Makefile.am
index 9023579..c91a3d8 100644
--- a/examples/orc/Makefile.am
+++ b/examples/orc/Makefile.am
@@ -1,8 +1,8 @@
noinst_PROGRAMS = jit simple
-AM_LDFLAGS = $(ORC_LIBS) $(GLIB_LIBS)
-AM_CFLAGS = $(ORC_CFLAGS) $(GLIB_CFLAGS)
+AM_LDFLAGS = $(ORC_LIBS)
+AM_CFLAGS = $(ORC_CFLAGS)
jit_SOURCES = jit.c
diff --git a/examples/orc/jit.c b/examples/orc/jit.c
index cab412c..9f40a73 100644
--- a/examples/orc/jit.c
+++ b/examples/orc/jit.c
@@ -1,7 +1,6 @@
#include "config.h"
-#include <glib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
diff --git a/examples/orc/simple.c b/examples/orc/simple.c
index 4cc1e84..ef75e86 100644
--- a/examples/orc/simple.c
+++ b/examples/orc/simple.c
@@ -1,7 +1,6 @@
#include "config.h"
-#include <glib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
diff --git a/liboil/c/copy.c b/liboil/c/copy.c
index c10f7f1..4ed6e7d 100644
--- a/liboil/c/copy.c
+++ b/liboil/c/copy.c
@@ -33,7 +33,9 @@
#include <liboil/liboilfunction.h>
#include <liboil/liboilclasses.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
static void
diff --git a/liboil/c/swab.c b/liboil/c/swab.c
index dac86b0..c32fbc9 100644
--- a/liboil/c/swab.c
+++ b/liboil/c/swab.c
@@ -33,7 +33,9 @@
#include <liboil/liboilfunction.h>
#include <liboil/liboilclasses.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <string.h>
diff --git a/liboil/conv/conv_bitstuff.c b/liboil/conv/conv_bitstuff.c
index a962f92..944a1fc 100644
--- a/liboil/conv/conv_bitstuff.c
+++ b/liboil/conv/conv_bitstuff.c
@@ -29,7 +29,7 @@
#include "config.h"
#endif
#include <liboil/liboilfunction.h>
-#include <conv.h>
+#include "conv.h"
#ifdef HAVE_IEEE754_H
diff --git a/liboil/conv/conv_misc.c b/liboil/conv/conv_misc.c
index 6c46560..bf77404 100644
--- a/liboil/conv/conv_misc.c
+++ b/liboil/conv/conv_misc.c
@@ -29,7 +29,7 @@
#include "config.h"
#endif
#include <liboil/liboilfunction.h>
-#include <conv.h>
+#include "conv.h"
#include <math.h>
diff --git a/liboil/dct/dct.h b/liboil/dct/dct.h
index da4cd25..3d7be3c 100644
--- a/liboil/dct/dct.h
+++ b/liboil/dct/dct.h
@@ -30,6 +30,10 @@
#include <liboil/liboilfunction.h>
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
OIL_DECLARE_CLASS(dct12_f32);
OIL_DECLARE_CLASS(dct36_f32);
OIL_DECLARE_CLASS(fdct8_f64);
diff --git a/liboil/dct/idct8x8_c.c b/liboil/dct/idct8x8_c.c
index 078d78d..673a7c4 100644
--- a/liboil/dct/idct8x8_c.c
+++ b/liboil/dct/idct8x8_c.c
@@ -43,13 +43,13 @@
*/
#define BLOCK8x8_F64(ptr, stride, row, column) \
- (*((double *)((void *)ptr + stride*row) + column))
+ (*((double *)((unsigned char *)ptr + stride*row) + column))
#define BLOCK8x8_PTR_F64(ptr, stride, row, column) \
- ((double *)((void *)ptr + stride*row) + column)
+ ((double *)((unsigned char *)ptr + stride*row) + column)
#define BLOCK8x8_S16(ptr, stride, row, column) \
- (*((int16_t *)((void *)ptr + stride*row) + column))
+ (*((int16_t *)((unsigned char *)ptr + stride*row) + column))
static void
idct8x8_test (OilTest *test)
diff --git a/liboil/jpeg/convert8x8_c.c b/liboil/jpeg/convert8x8_c.c
index 496aa95..23bcae6 100644
--- a/liboil/jpeg/convert8x8_c.c
+++ b/liboil/jpeg/convert8x8_c.c
@@ -74,16 +74,16 @@ OIL_DEFINE_CLASS (clipconv8x8_u8_s16,
"uint8_t * d_8x8, int dstr, int16_t * s_8x8, int sstr");
#define BLOCK8x8_F64(ptr, stride, row, column) \
- (*((double *)((void *)ptr + stride*row) + column))
+ (*((double *)((unsigned char *)ptr + stride*row) + column))
#define BLOCK8x8_PTR_F64(ptr, stride, row, column) \
- ((double *)((void *)ptr + stride*row) + column)
+ ((double *)((unsigned char *)ptr + stride*row) + column)
#define BLOCK8x8_S16(ptr, stride, row, column) \
- (*((int16_t *)((void *)ptr + stride*row) + column))
+ (*((int16_t *)((unsigned char *)ptr + stride*row) + column))
#define BLOCK8x8_U8(ptr, stride, row, column) \
- (*((uint8_t *)((void *)ptr + stride*row) + column))
+ (*((uint8_t *)((unsigned char *)ptr + stride*row) + column))
static void
@@ -93,7 +93,7 @@ conv8x8_s16_f64_c (int16_t * dest, int dstr, double *src, int sstr)
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
- BLOCK8x8_S16 (dest, dstr, i, j) = rint (BLOCK8x8_F64 (src, sstr, i, j));
+ BLOCK8x8_S16 (dest, dstr, i, j) = floor (0.5 + BLOCK8x8_F64 (src, sstr, i, j));
}
}
}
diff --git a/liboil/jpeg/quantize8x8_c.c b/liboil/jpeg/quantize8x8_c.c
index 7f8e03c..949f066 100644
--- a/liboil/jpeg/quantize8x8_c.c
+++ b/liboil/jpeg/quantize8x8_c.c
@@ -48,7 +48,7 @@ OIL_DEFINE_CLASS (dequantize8x8_s16,
"int16_t *s2_8x8, int sstr2");
#define BLOCK8x8_S16(ptr, stride, row, column) \
- (*((int16_t *)((void *)ptr + stride*row) + column))
+ (*((int16_t *)((unsigned char *)ptr + stride*row) + column))
static void
dequantize8x8_s16_ref (int16_t *dest, int dstr, int16_t *src, int sstr,
diff --git a/liboil/liboilcpu-x86.c b/liboil/liboilcpu-x86.c
index ebddc93..56f7790 100644
--- a/liboil/liboilcpu-x86.c
+++ b/liboil/liboilcpu-x86.c
@@ -34,14 +34,18 @@
#include <liboil/liboilfault.h>
#include <liboil/liboilutils.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <setjmp.h>
#include <signal.h>
+#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
+#endif
#include <time.h>
#if defined(__FreeBSD__) || defined(__APPLE__)
@@ -129,6 +133,7 @@ oil_cpu_i386_getflags_cpuinfo (char *cpuinfo)
}
#endif
+#ifdef HAVE_GCC_ASM
static unsigned long
oil_profile_stamp_rdtsc(void)
{
@@ -136,6 +141,7 @@ oil_profile_stamp_rdtsc(void)
__asm__ __volatile__("rdtsc\n" : "=a" (ts) : : "edx");
return ts;
}
+#endif
#ifdef USE_I386_CPUID
#ifdef __i386__
@@ -201,9 +207,11 @@ oil_cpu_detect_cpuid (void)
get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx);
+#ifdef HAVE_GCC_ASM
if (edx & (1<<4)) {
_oil_profile_stamp = oil_profile_stamp_rdtsc;
}
+#endif
/* Intel flags */
if (edx & (1<<15)) {
diff --git a/liboil/liboiltest.c b/liboil/liboiltest.c
index b4c6e5d..43bcde2 100644
--- a/liboil/liboiltest.c
+++ b/liboil/liboiltest.c
@@ -671,7 +671,8 @@ check_holes (void *data, OilType type, int pre_n, int stride, int post_n,
}
for(i=0;i<post_n;i++){
- if (!check_guard (data + stride * i + chunk_size, hole_size, guard)) {
+ if (!check_guard (OIL_OFFSET(data, stride * i + chunk_size),
+ hole_size, guard)) {
return 0;
}
}
diff --git a/liboil/liboilutils.c b/liboil/liboilutils.c
index 0d7cc15..faa70ce 100644
--- a/liboil/liboilutils.c
+++ b/liboil/liboilutils.c
@@ -32,7 +32,9 @@
#include <liboil/liboildebug.h>
#include <liboil/liboilutils.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
diff --git a/orc/Makefile.am b/orc/Makefile.am
index bb0d56e..b46eaac 100644
--- a/orc/Makefile.am
+++ b/orc/Makefile.am
@@ -5,6 +5,11 @@ lib_LTLIBRARIES = liborc-@LIBOIL_MAJORMINOR@.la
liborc_@LIBOIL_MAJORMINOR@_la_LIBS = $(LIBOIL_LIBS) $(GLIB_LIBS)
liborc_@LIBOIL_MAJORMINOR@_la_CFLAGS = $(LIBOIL_CFLAGS) $(GLIB_CFLAGS)
+liborc_@LIBOIL_MAJORMINOR@_la_LDFLAGS = \
+ -no-undefined \
+ -version-info $(LIBOIL_LIBVERSION) \
+ -export-symbols-regex '^orc_'
+
liborc_@LIBOIL_MAJORMINOR@_la_SOURCES = \
orc.c \
@@ -17,12 +22,18 @@ liborc_@LIBOIL_MAJORMINOR@_la_SOURCES = \
orcprogram-powerpc.c \
orcprogram.h \
orcopcodes.c \
- orcprogram-linux.c \
orcrules-mmx.c \
orcrules-x86.c \
orcrules-sse.c \
x86.c
+if HAVE_OS_LINUX
+liborc_@LIBOIL_MAJORMINOR@_la_SOURCES += orcprogram-linux.c
+else
+liborc_@LIBOIL_MAJORMINOR@_la_SOURCES += orcprogram-unknown-os.c
+endif
+
+
pkginclude_HEADERS = \
orc.h \
orcprogram.h \
diff --git a/orc/orc.c b/orc/orc.c
index 6094adb..27b4d35 100644
--- a/orc/orc.c
+++ b/orc/orc.c
@@ -12,7 +12,7 @@
void
orc_init (void)
{
- oil_init ();
+ //oil_init ();
orc_opcode_init();
orc_x86_init();
orc_powerpc_init();
diff --git a/orc/orcprogram-powerpc.c b/orc/orcprogram-powerpc.c
index 543b95b..131f594 100644
--- a/orc/orcprogram-powerpc.c
+++ b/orc/orcprogram-powerpc.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
diff --git a/orc/orcprogram-unknown-os.c b/orc/orcprogram-unknown-os.c
new file mode 100644
index 0000000..130fc34
--- /dev/null
+++ b/orc/orcprogram-unknown-os.c
@@ -0,0 +1,58 @@
+
+#include "config.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <unistd.h>
+#include <sys/types.h>
+#if 0
+#include <sys/mman.h>
+#endif
+
+#include <orc/orcprogram.h>
+
+#define SIZE 65536
+
+
+void
+orc_program_allocate_codemem (OrcProgram *program)
+{
+#if 0
+ char filename[32] = "/tmp/orcexecXXXXXX";
+ int fd;
+
+ fd = mkstemp (filename);
+ if (fd == -1) {
+ /* FIXME oh crap */
+ printf("failed to create temp file\n");
+ program->error = TRUE;
+ return;
+ }
+ unlink (filename);
+
+ ftruncate (fd, SIZE);
+
+ program->code = mmap (NULL, SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ if (program->code == MAP_FAILED) {
+ /* FIXME oh crap */
+ printf("failed to create write map\n");
+ program->error = TRUE;
+ return;
+ }
+ program->code_exec = mmap (NULL, SIZE, PROT_READ|PROT_EXEC, MAP_SHARED, fd, 0);
+ if (program->code_exec == MAP_FAILED) {
+ /* FIXME oh crap */
+ printf("failed to create exec map\n");
+ program->error = TRUE;
+ return;
+ }
+
+ close (fd);
+
+ program->code_size = SIZE;
+ program->codeptr = program->code;
+#endif
+}
+
diff --git a/orc/orcprogram-x86.c b/orc/orcprogram-x86.c
index ca70bb2..7308b7b 100644
--- a/orc/orcprogram-x86.c
+++ b/orc/orcprogram-x86.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
#include <orc/x86.h>
diff --git a/orc/orcprogram.h b/orc/orcprogram.h
index 3281f0e..2dbacf4 100644
--- a/orc/orcprogram.h
+++ b/orc/orcprogram.h
@@ -3,6 +3,7 @@
#define _ORC_PROGRAM_H_
//#include <glib.h>
+#include <liboil/liboil-stdint.h>
typedef struct _OrcType OrcType;
typedef struct _OrcExecutor OrcExecutor;
diff --git a/orc/orcrules-mmx.c b/orc/orcrules-mmx.c
index 23248de..7ecadeb 100644
--- a/orc/orcrules-mmx.c
+++ b/orc/orcrules-mmx.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
#include <orc/x86.h>
diff --git a/orc/orcrules-sse.c b/orc/orcrules-sse.c
index 9f559e0..155ac5f 100644
--- a/orc/orcrules-sse.c
+++ b/orc/orcrules-sse.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
#include <orc/x86.h>
diff --git a/orc/orcrules-x86.c b/orc/orcrules-x86.c
index 4becb48..e2fbd73 100644
--- a/orc/orcrules-x86.c
+++ b/orc/orcrules-x86.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
#include <orc/x86.h>
diff --git a/orc/x86.c b/orc/x86.c
index 55de4b3..aaf09c1 100644
--- a/orc/x86.c
+++ b/orc/x86.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#include <sys/types.h>
-#include <sys/mman.h>
#include <orc/orcprogram.h>
#include <orc/x86.h>