4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-15 11:00:04 +08:00
Jeff Johnston 0d844014bf 2002-04-19 Jeff Johnston <jjohnstn@redhat.com>
*  configure.host: Add support for powerpc-eabialtivec*.
        *  libc/include/malloc.h: Add include of <machine/malloc.h>.
        *  libc/include/stdlib.h: Add include of <machine/stdlib.h>.
        *  libc/include/machine/malloc.h: New file.
        *  libc/include/machine/stdlib.h: Ditto.
        *  libc/include/machine/setjmp.h: Add support for powerpc altivec.
        *  libc/machine/powerpc/Makefile.am: Add conditional objects and
        sources based on configuration.
        *  libc/machine/powerpc/Makefile.in: Regenerated.
        *  libc/machine/powerpc/configure: Ditto.
        *  libc/machine/powerpc/configure.in: Add check for
        powerpc-eabialtivec* in which case add in additional source files.
        *  libc/machine/powerpc/setjmp.S: Add altivec support.
        *  libc/machine/powerpc/vec_calloc.c: New file.
        *  libc/machine/powerpc/vec_free.c: Ditto.
        *  libc/machine/powerpc/vec_malloc.c: Ditto.
        *  libc/machine/powerpc/vec_mallocr.c: Ditto.
        *  libc/machine/powerpc/vec_realloc.c: Ditto.
        *  libc/machine/powerpc/machine/malloc.h: Ditto.
        *  libc/machine/powerpc/machine/stdlib.h: Ditto.
        *  libc/machine/powerpc/vfprintf.c: New file that is vfprintf.c
        with added altivec format specifiers.
        *  libc/machine/powerpc/vfscanf.c: New file that is vfscanf.c with
        added altivec format specifiers.
2002-04-19 19:16:22 +00:00

198 lines
3.4 KiB
C

#if defined(__arm__) || defined(__thumb__)
/*
* All callee preserved registers:
* v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
*/
#define _JBLEN 23
#endif
#ifdef __sparc__
/*
* onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
* All else recovered by under/over(flow) handling.
*/
#define _JBLEN 13
#endif
/* necv70 was 9 as well. */
#ifdef __mc68000__
/*
* onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
* fp2-fp7 for 68881.
* All else recovered by under/over(flow) handling.
*/
#define _JBLEN 34
#endif
#if defined(__Z8001__) || defined(__Z8002__)
/* 16 regs + pc */
#define _JBLEN 20
#endif
#ifdef _AM29K
/*
* onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
* All else recovered by under/over(flow) handling.
*/
#define _JBLEN 9
#endif
#if defined(__CYGWIN__) && !defined (_JBLEN)
#define _JBLEN (13 * 4)
#elif defined (__i386__)
#ifdef __unix__
# define _JBLEN 36
#else
#include "setjmp-dj.h"
#endif
#endif
#ifdef __i960__
#define _JBLEN 35
#endif
#ifdef __M32R__
/* Only 8 words are currently needed. 10 gives us some slop if we need
to expand. */
#define _JBLEN 10
#endif
#ifdef __mips__
#ifdef __mips64
#define _JBLEN 23
#define _JBTYPE long long
#else
#define _JBLEN 11
#endif
#endif
#ifdef __m88000__
#define _JBLEN 21
#endif
#ifdef __H8300__
#define _JBLEN 5
typedef int jmp_buf[_JBLEN];
#endif
#ifdef __H8300H__
/* same as H8/300 but registers are twice as big */
#define _JBLEN 5
#define _JBTYPE long
#endif
#ifdef __H8300S__
/* same as H8/300 but registers are twice as big */
#define _JBLEN 5
#define _JBTYPE long
#endif
#ifdef __H8500__
#define _JBLEN 4
#endif
#ifdef __sh__
#if __SH5__
#define _JBLEN 50
#define _JBTYPE long long
#else
#define _JBLEN 20
#endif /* __SH5__ */
#endif
#ifdef __v800
#define _JBLEN 28
#endif
#ifdef __PPC__
#ifdef __ALTIVEC__
#define _JBLEN 64
#else
#define _JBLEN 32
#endif
#define _JBTYPE double
#endif
#ifdef __hppa__
/* %r30, %r2-%r18, %r27, pad, %fr12-%fr15.
Note space exists for the FP registers, but they are not
saved. */
#define _JBLEN 28
#endif
#if defined(__mn10300__) || defined(__mn10200__)
/* A guess */
#define _JBLEN 10
#endif
#ifdef __v850
/* I think our setjmp is saving 15 regs at the moment. Gives us one word
slop if we need to expand. */
#define _JBLEN 16
#endif
#ifdef __TIC80__
#define _JBLEN 13
#endif
#ifdef __D10V__
#define _JBLEN 8
#endif
#ifdef __D30V__
#define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2)
#define _JBTYPE double
#endif
#ifdef __fr30__
#define _JBLEN 10
#endif
#ifdef __mcore__
#define _JBLEN 16
#endif
#ifdef __MMIX__
/* Using a layout compatible with GCC's built-in. */
#define _JBLEN 5
#define _JBTYPE unsigned long
#endif
#ifdef __xstormy16__
/* 4 GPRs plus SP plus PC. */
#define _JBLEN 8
#endif
#ifdef _JBLEN
#ifdef _JBTYPE
typedef _JBTYPE jmp_buf[_JBLEN];
#else
typedef int jmp_buf[_JBLEN];
#endif
#if defined(__CYGWIN__) || defined(__rtems__)
#include <signal.h>
/* POSIX sigsetjmp/siglongjmp macros */
typedef int sigjmp_buf[_JBLEN+2];
#define _SAVEMASK _JBLEN
#define _SIGMASK (_JBLEN+1)
#ifdef __CYGWIN__
# define _CYGWIN_WORKING_SIGSETJMP
#endif
#define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
setjmp (env))
#define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
longjmp (env, val))
#endif /* __CYGWIN__ or __rtems__ */
#endif