pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/ffcall Merge sparc and sparc64 avcall patches, t...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/090e28d83e69
branches:  trunk
changeset: 539329:090e28d83e69
user:      tnn <tnn%pkgsrc.org@localhost>
date:      Mon Mar 03 21:41:30 2008 +0000

description:
Merge sparc and sparc64 avcall patches, taken from clisp-2.43.
Needed for clisp-2.44 now that it doesn't ship bundled avcall.
Hinted by uwe@
Bump PKGREVISION.
XXX untested

diffstat:

 devel/ffcall/Makefile         |    4 +-
 devel/ffcall/distinfo         |    6 +-
 devel/ffcall/patches/patch-ag |  117 +++++++++++++++++++
 devel/ffcall/patches/patch-ah |  254 ++++++++++++++++++++++++++++++++++++++++++
 devel/ffcall/patches/patch-ai |   13 ++
 devel/ffcall/patches/patch-aj |   17 ++
 6 files changed, 408 insertions(+), 3 deletions(-)

diffs (truncated from 447 to 300 lines):

diff -r 688e8b573e99 -r 090e28d83e69 devel/ffcall/Makefile
--- a/devel/ffcall/Makefile     Mon Mar 03 20:17:11 2008 +0000
+++ b/devel/ffcall/Makefile     Mon Mar 03 21:41:30 2008 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.22 2007/06/18 02:56:05 schmonz Exp $
+# $NetBSD: Makefile,v 1.23 2008/03/03 21:41:30 tnn Exp $
 
 DISTNAME=      ffcall-1.10
-PKGREVISION=   1
+PKGREVISION=   2
 CATEGORIES=    devel
 MASTER_SITES=  ftp://ftp.santafe.edu/pub/gnu/ \
                http://www.haible.de/bruno/gnu/ \
diff -r 688e8b573e99 -r 090e28d83e69 devel/ffcall/distinfo
--- a/devel/ffcall/distinfo     Mon Mar 03 20:17:11 2008 +0000
+++ b/devel/ffcall/distinfo     Mon Mar 03 21:41:30 2008 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.7 2005/02/23 22:24:13 agc Exp $
+$NetBSD: distinfo,v 1.8 2008/03/03 21:41:30 tnn Exp $
 
 SHA1 (ffcall-1.10.tar.gz) = 6b4fdc7bd38b434bbf3d65508a3d117fc8b349f3
 RMD160 (ffcall-1.10.tar.gz) = 910af54fae0b992ceb5620f155e301827d2e03c5
@@ -8,3 +8,7 @@
 SHA1 (patch-ad) = 4cfba7c4ce9fb709d1e857433c5caad293ca9c29
 SHA1 (patch-ae) = 183b4e0dcd194a47fd94c19573ffd698bab14392
 SHA1 (patch-af) = cff72d52332759b42f09acded753b08043b8aefc
+SHA1 (patch-ag) = b21d51fc1d78d81a4f7a99183ca1033675ff04ac
+SHA1 (patch-ah) = 07781ee5caef0ca98e9f15c504fee0b43a111245
+SHA1 (patch-ai) = 03a5a572e94ddbcb78dd11201e0afd91998d1e3a
+SHA1 (patch-aj) = 8db7daeb150db176dfb2f59ad9b4854cb1f895fd
diff -r 688e8b573e99 -r 090e28d83e69 devel/ffcall/patches/patch-ag
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/ffcall/patches/patch-ag     Mon Mar 03 21:41:30 2008 +0000
@@ -0,0 +1,117 @@
+$NetBSD: patch-ag,v 1.1 2008/03/03 21:41:30 tnn Exp $
+
+--- avcall/avcall-sparc.c.orig 2004-01-26 15:58:38.000000000 +0100
++++ avcall/avcall-sparc.c
+@@ -2,7 +2,7 @@
+ #define _avcall_sparc_c
+ /**
+   Copyright 1993 Bill Triggs, <Bill.Triggs%inrialpes.fr@localhost>
+-  Copyright 1995-1999 Bruno Haible, <bruno%clisp.org@localhost>
++  Copyright 1995-1999, 2005 Bruno Haible, <bruno%clisp.org@localhost>
+ 
+   This is free software distributed under the GNU General Public
+   Licence described in the file COPYING. Contact the author if
+@@ -77,7 +77,7 @@ __builtin_avcall(av_alist* l)
+   int arglen = l->aptr - l->args;
+   __avword i;
+ 
+-  if ((l->rtype == __AVstruct) && !(l->flags & __AV_SUNCC_STRUCT_RETURN))
++  if (l->rtype == __AVstruct)
+     argframe[-1] = (__avword)l->raddr;        /* push struct return address */
+ 
+   {
+@@ -108,7 +108,7 @@ __builtin_avcall(av_alist* l)
+     }
+ 
+                                       /* call function with 1st 6 args */
+-  i = ({ __avword iret;       /* %o0 */
++  i = ({ register __avword iret __asm__("%o0");
+          iret = (*l->func)(l->args[0], l->args[1], l->args[2],
+                          l->args[3], l->args[4], l->args[5]);
+          asm ("nop"); /* struct returning functions skip this instruction */
+@@ -167,70 +167,36 @@ __builtin_avcall(av_alist* l)
+     RETURN(void*, i);
+   } else
+   if (l->rtype == __AVstruct) {
+-    /* This is a kludge for old Sun cc and is probably fragile. */
+-    if (l->flags & __AV_SUNCC_STRUCT_RETURN) {
+-      /* Sun cc struct return convention */
++    if (l->flags & __AV_PCC_STRUCT_RETURN) {
++      /* pcc struct return convention: need a  *(TYPE*)l->raddr = *(TYPE*)i;  */
+       if (l->rsize == sizeof(char)) {
+-        RETURN(char, ((char*)sp)[-1]);
++        RETURN(char, *(char*)i);
+       } else
+       if (l->rsize == sizeof(short)) {
+-        RETURN(short, ((short*)sp)[-1]);
++        RETURN(short, *(short*)i);
+       } else
+       if (l->rsize == sizeof(int)) {
+-        RETURN(int, ((int*)sp)[-1]);
++        RETURN(int, *(int*)i);
+       } else
+       if (l->rsize == sizeof(double)) {
+-        ((int*)l->raddr)[0] = ((int*)sp)[-2];
+-        ((int*)l->raddr)[1] = ((int*)sp)[-1];
+-      } else
+-      if (l->rsize % 4) {
+-        char* dstaddr = (char*)l->raddr;
+-        char* srcaddr = (char*)((long)sp - l->rsize);
+-        unsigned int count = l->rsize;
+-        if (count > 4)
+-          srcaddr = (char*)((long)srcaddr & -4);
+-        while (count > 0) {
+-          *dstaddr++ = *srcaddr++;
+-          count--;
+-        }
++        ((int*)l->raddr)[0] = ((int*)i)[0];
++        ((int*)l->raddr)[1] = ((int*)i)[1];
+       } else {
+-        __avword* dstaddr = (__avword*)l->raddr;
+-        __avword* srcaddr = (__avword*)((long)sp - l->rsize);
+-        while (srcaddr < sp)
+-          *dstaddr++ = *srcaddr++;
++        int n = (l->rsize + sizeof(__avword)-1)/sizeof(__avword);
++        while (--n >= 0)
++          ((__avword*)l->raddr)[n] = ((__avword*)i)[n];
+       }
+     } else {
+-      if (l->flags & __AV_PCC_STRUCT_RETURN) {
+-        /* pcc struct return convention: need a  *(TYPE*)l->raddr = *(TYPE*)i;  */
++      /* normal struct return convention */
++      if (l->flags & __AV_SMALL_STRUCT_RETURN) {
+         if (l->rsize == sizeof(char)) {
+-          RETURN(char, *(char*)i);
++          RETURN(char, i);
+         } else
+         if (l->rsize == sizeof(short)) {
+-          RETURN(short, *(short*)i);
++          RETURN(short, i);
+         } else
+         if (l->rsize == sizeof(int)) {
+-          RETURN(int, *(int*)i);
+-        } else
+-        if (l->rsize == sizeof(double)) {
+-          ((int*)l->raddr)[0] = ((int*)i)[0];
+-          ((int*)l->raddr)[1] = ((int*)i)[1];
+-        } else {
+-          int n = (l->rsize + sizeof(__avword)-1)/sizeof(__avword);
+-          while (--n >= 0)
+-            ((__avword*)l->raddr)[n] = ((__avword*)i)[n];
+-        }
+-      } else {
+-        /* normal struct return convention */
+-        if (l->flags & __AV_SMALL_STRUCT_RETURN) {
+-          if (l->rsize == sizeof(char)) {
+-            RETURN(char, i);
+-          } else
+-          if (l->rsize == sizeof(short)) {
+-            RETURN(short, i);
+-          } else
+-          if (l->rsize == sizeof(int)) {
+-            RETURN(int, i);
+-          }
++          RETURN(int, i);
+         }
+       }
+     }
diff -r 688e8b573e99 -r 090e28d83e69 devel/ffcall/patches/patch-ah
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/ffcall/patches/patch-ah     Mon Mar 03 21:41:30 2008 +0000
@@ -0,0 +1,254 @@
+$NetBSD: patch-ah,v 1.1 2008/03/03 21:41:30 tnn Exp $
+
+--- avcall/avcall-sparc.S.orig 1999-11-26 21:02:01.000000000 +0100
++++ avcall/avcall-sparc.S
+@@ -16,16 +16,11 @@ C(__builtin_avcall:)
+       cmp     %o7, 16
+       bne     L3
+       sra     %g3, 2, %l0
+-      ld      [%i0+4], %g3
+-      andcc   %g3, 8, %g0
+-      bne     L87
+-      cmp     %l0, 6
+       ld      [%i0+8], %g3
+       st      %g3, [%l2-4]
+ L3:
+       cmp     %l0, 6
+-L87:
+-      ble,a   L88
++      ble,a   L66
+       ld      [%i0+12], %g3
+       add     %l0, -6, %l0
+       add     %i0, 40, %l1
+@@ -37,9 +32,9 @@ L7:
+       bne     L7
+       add     %o7, 4, %o7
+       ld      [%i0+12], %g3
+-L88:
++L66:
+       cmp     %g3, 16
+-      bne,a   L89
++      bne,a   L67
+       ld      [%i0], %g3
+       ld      [%i0+4], %g3
+       andcc   %g3, 16, %g0
+@@ -75,7 +70,7 @@ L88:
+       ld      [%i0+60], %o5
+ L9:
+       ld      [%i0], %g3
+-L89:
++L67:
+       ld      [%i0+40], %o0
+       ld      [%i0+44], %o1
+       ld      [%i0+48], %o2
+@@ -83,31 +78,31 @@ L89:
+       ld      [%i0+56], %o4
+       call    %g3, 0
+       ld      [%i0+60], %o5
+-      mov     %o0, %l2
+       nop
+       ld      [%i0+12], %g3
+       cmp     %g3, 1
+       be      L11
++      mov     %o0, %l2
+       cmp     %g3, 0
+-      be      L84
++      be      L63
+       cmp     %g3, 2
+-      be      L85
++      be      L64
+       cmp     %g3, 3
+-      be      L85
++      be      L64
+       cmp     %g3, 4
+-      be      L85
++      be      L64
+       cmp     %g3, 5
+-      be      L86
++      be      L65
+       cmp     %g3, 6
+-      be      L86
++      be      L65
+       cmp     %g3, 7
+-      be      L84
++      be      L63
+       cmp     %g3, 8
+-      be      L84
++      be      L63
+       cmp     %g3, 9
+-      be      L84
++      be      L63
+       cmp     %g3, 10
+-      be,a    L90
++      be,a    L68
+       ld      [%i0+8], %g3
+       ld      [%i0+12], %o7
+       add     %o7, -11, %g3
+@@ -137,105 +132,38 @@ L34:
+       b       L11
+       std     %f0, [%g3]
+ L38:
+-      be      L84
++      be      L63
+       cmp     %o7, 16
+       bne     L11
+       nop
+       ld      [%i0+4], %g3
+-      andcc   %g3, 8, %g0
+-      be      L43
+       andcc   %g3, 1, %g0
++      be      L43
++      andcc   %g3, 2, %g0
+       ld      [%i0+16], %g3
+       cmp     %g3, 1
+       bne     L44
+       cmp     %g3, 2
+       ld      [%i0+8], %o7
+-      ldub    [%sp-1], %g3
++      ldub    [%l2], %g3
+       b       L11
+       stb     %g3, [%o7]
+ L44:
+       bne     L46
+       cmp     %g3, 4
+       ld      [%i0+8], %o7
+-      lduh    [%sp-2], %g3
++      lduh    [%l2], %g3
+       b       L11
+       sth     %g3, [%o7]
+ L46:
+       bne     L48
+       cmp     %g3, 8
+       ld      [%i0+8], %o7
+-      ld      [%sp-4], %g3
++      ld      [%l2], %g3
+       b       L11
+       st      %g3, [%o7]
+ L48:
+       bne     L50
+-      andcc   %g3, 3, %g0
+-      ld      [%sp-8], %g3
+-      ld      [%i0+8], %o7
+-      st      %g3, [%o7]
+-      ld      [%i0+8], %l0
+-      ld      [%sp-4], %g3
+-      b       L11
+-      st      %g3, [%l0+4]
+-L50:
+-      be      L52
+-      sub     %sp, %g3, %o7
+-      ld      [%i0+8], %i0
+-      cmp     %g3, 4
+-      bleu    L53
+-      mov     %g3, %l0
+-      and     %o7, -4, %o7
+-L53:



Home | Main Index | Thread Index | Old Index