libev support for m68k, m88k and superH

Miod Vallat miod at openbsd.org
Wed Sep 4 23:16:10 CEST 2013


Hello,

  the following diff allows libev to build on m68k, m88k and superH
systems (at least under OpenBSD ports to such platforms). It is relative
to 4.15 but ought to apply cleanly to HEAD.

Rationale for ECB_MEMORY_FENCE: neither m68k nor superH need explicit
synchronisation routines, while m88k does (especially when running on
the superscalar 88110).

Rationale for ECB_STDFP: m68k (when used with an FPU) and m88k are
IEEE754 compatible. superH processors with an FPU (i.e. sh4 onwards) are
IEEE754 compatible, except for the lack of two rounding modes, but that
does not impact the layout of the floating point types. FPU-less m68k
and superH systems are expected to have IEEE754-compatible software FPU
emulation anyways.

Thanks,
Miod

PS: I am not subscribed to the list. Please cc: me when replying. TIA

--- ev.c	Fri Mar  1 11:10:48 2013
+++ ev.c	Wed Sep  4 21:14:53 2013
@@ -637,6 +637,12 @@
       #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("")
     #elif defined __ia64__
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("mf"       : : : "memory")
+    #elif defined __m68k__
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ (""         : : : "memory")
+    #elif defined __m88k__
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("tb1 0,%%r0,128" : : : "memory")
+    #elif defined __sh__
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ (""         : : : "memory")
     #endif
   #endif
 #endif
@@ -1053,6 +1059,9 @@
     || defined __alpha__ \
     || defined __hppa__ \
     || defined __ia64__ \
+    || defined __m68k__ \
+    || defined __m88k__ \
+    || defined __sh__ \
     || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64
   #define ECB_STDFP 1
   #include <string.h> /* for memcpy */



More information about the libev mailing list