diff options
author | joerg <joerg@pkgsrc.org> | 2013-06-18 19:58:20 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2013-06-18 19:58:20 +0000 |
commit | b469e6b13a2843b6f18a049e3dbf464002b9b19b (patch) | |
tree | c859f6a03e678c875752726a67992b08cca8be87 | |
parent | 306b1e0faec780e4ce55e8292e107b1465f32456 (diff) | |
download | pkgsrc-b469e6b13a2843b6f18a049e3dbf464002b9b19b.tar.gz |
Don't use register variables with Clang/amd64, provide assembler for
fetching/setting SP. Can't use the fast accessor as clisp doesn't align
in the stack correctly in that case. Still fails somewhere in the middle
of the regression tests, but much much farther in.
-rw-r--r-- | lang/clisp/distinfo | 3 | ||||
-rw-r--r-- | lang/clisp/patches/patch-src_lispbibl.d | 20 |
2 files changed, 22 insertions, 1 deletions
diff --git a/lang/clisp/distinfo b/lang/clisp/distinfo index b96c7d0fc98..174b81de375 100644 --- a/lang/clisp/distinfo +++ b/lang/clisp/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.26 2010/07/09 18:08:05 asau Exp $ +$NetBSD: distinfo,v 1.27 2013/06/18 19:58:20 joerg Exp $ SHA1 (clisp-2.49.tar.gz) = 1743e7917013162400c955af441e991db43b3323 RMD160 (clisp-2.49.tar.gz) = ae30f3b681cb023e885c6e4ed12210ee5ba14c76 @@ -6,3 +6,4 @@ Size (clisp-2.49.tar.gz) = 9823111 bytes SHA1 (patch-aa) = 1a0af21eb2c2de898a7cb3500ce72f15581bfeb8 SHA1 (patch-ab) = 225873ed24e4a1f343acc8e3163c8151e9958c77 SHA1 (patch-ac) = c31fcd65d7d37aeaf69c0eee9499bff596b6619b +SHA1 (patch-src_lispbibl.d) = 122cdcc570065b7518b391d9433c5994c3925880 diff --git a/lang/clisp/patches/patch-src_lispbibl.d b/lang/clisp/patches/patch-src_lispbibl.d new file mode 100644 index 00000000000..8e1b69e40c3 --- /dev/null +++ b/lang/clisp/patches/patch-src_lispbibl.d @@ -0,0 +1,20 @@ +$NetBSD: patch-src_lispbibl.d,v 1.1 2013/06/18 19:58:20 joerg Exp $ + +--- src/lispbibl.d.orig 2013-06-17 14:15:17.000000000 +0000 ++++ src/lispbibl.d +@@ -9090,6 +9090,15 @@ All other long words on the LISP-Stack a + #define setSP(adresse) \ + ({ __asm__ __volatile__ ("movel %0,"REGISTER_PREFIX"sp" : : "g" ((aint)(adresse)) : "sp" ); }) + #define FAST_SP ++#elif defined(__clang__) && defined(__x86_64__) ++ /* Access to a register-"variable" %rsp */ ++ #define SP() \ ++ ({var aint __SP; \ ++ __asm__ __volatile__ ("movq %%rsp,%0" : "=g" (__SP) : ); \ ++ __SP; \ ++ }) ++ #define setSP(adresse) \ ++ ({ __asm__ __volatile__ ("movq %0,%%rsp" : : "g" ((aint)(adresse)) : "sp" ); }) + #elif (defined(GNU) || defined(INTEL)) && defined(I80386) && !defined(NO_ASM) + /* Access to a register-"variable" %esp */ + #define SP() \ |