head 1.2; access; symbols pkgsrc-2017Q2:1.1.0.80 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.78 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.76 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.74 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.72 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.70 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.68 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.66 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.64 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.62 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.60 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.58 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.56 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.54 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.52 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.50 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.48 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.46 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.44 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.42 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.40 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.38 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.36 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.34 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.32 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.30 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.28 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.26 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.24 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.22 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.20 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.18 pkgsrc-2009Q3-base:1.1 pkgsrc-2009Q2:1.1.0.16 pkgsrc-2009Q2-base:1.1 pkgsrc-2009Q1:1.1.0.14 pkgsrc-2009Q1-base:1.1 pkgsrc-2008Q4:1.1.0.12 pkgsrc-2008Q4-base:1.1 pkgsrc-2008Q3:1.1.0.10 pkgsrc-2008Q3-base:1.1 cube-native-xorg:1.1.0.8 cube-native-xorg-base:1.1 pkgsrc-2008Q2:1.1.0.6 pkgsrc-2008Q2-base:1.1 cwrapper:1.1.0.4 pkgsrc-2008Q1:1.1.0.2 pkgsrc-2008Q1-base:1.1; locks; strict; comment @# @; 1.2 date 2017.09.10.20.04.32; author wiz; state dead; branches; next 1.1; commitid PpK5mSH6CgARKG6A; 1.1 date 2008.03.03.21.41.30; author tnn; state Exp; branches; next ; desc @@ 1.2 log @Remove ffcall, replaced by libffcall. @ text @$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, - Copyright 1995-1999 Bruno Haible, + Copyright 1995-1999, 2005 Bruno Haible, 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); } } } @ 1.1 log @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 @ text @d1 1 a1 1 $NetBSD$ @