Make further progress on non-x86 support

This commit is contained in:
Justine Tunney 2023-05-08 21:38:30 -07:00
parent aef9a69a60
commit 036b9a0002
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
155 changed files with 2307 additions and 653 deletions

View file

@ -13,6 +13,10 @@
#define FE_DOWNWARD 0x0400
#define FE_UPWARD 0x0800
#define FE_TOWARDZERO 0x0c00
#define FE_DFL_ENV ((const fenv_t *)-1)
typedef void *fenv_t;
typedef uint16_t fexcept_t;
#elif defined(__aarch64__)
#define FE_INVALID 1
#define FE_DIVBYZERO 2
@ -24,7 +28,36 @@
#define FE_DOWNWARD 0x800000
#define FE_UPWARD 0x400000
#define FE_TOWARDZERO 0xc00000
#endif
#define FE_DFL_ENV ((const fenv_t *)-1)
typedef void *fenv_t;
typedef uint32_t fexcept_t;
#elif defined(__powerpc64__)
#define FE_TONEAREST 0
#define FE_TOWARDZERO 1
#define FE_UPWARD 2
#define FE_DOWNWARD 3
#define FE_INEXACT 0x02000000
#define FE_DIVBYZERO 0x04000000
#define FE_UNDERFLOW 0x08000000
#define FE_OVERFLOW 0x10000000
#define FE_INVALID 0x20000000
#define FE_ALL_EXCEPT 0x3e000000
#define FE_INVALID_SNAN 0x01000000
#define FE_INVALID_ISI 0x00800000
#define FE_INVALID_IDI 0x00400000
#define FE_INVALID_ZDZ 0x00200000
#define FE_INVALID_IMZ 0x00100000
#define FE_INVALID_COMPARE 0x00080000
#define FE_INVALID_SOFTWARE 0x00000400
#define FE_INVALID_SQRT 0x00000200
#define FE_INVALID_INTEGER_CONVERSION 0x00000100
#define FE_ALL_INVALID 0x01f80700
#define FE_DFL_ENV ((const fenv_t *)-1)
typedef unsigned fexcept_t;
typedef double fenv_t;
#endif /* __x86_64__ */
#ifdef __FLT_EVAL_METHOD__
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
@ -36,10 +69,6 @@
COSMOPOLITAN_C_START_
#define FLT_ROUNDS (__flt_rounds())
#define FE_DFL_ENV ((const fenv_t *)-1)
typedef void *fenv_t;
typedef uint16_t fexcept_t;
int feclearexcept(int);
int fegetenv(fenv_t *);

View file

@ -10,6 +10,12 @@ COSMOPOLITAN_C_START_
typedef long jmp_buf[8];
#elif defined(__aarch64__)
typedef long jmp_buf[22];
#elif defined(__powerpc64__)
typedef unsigned __int128 jmp_buf[32];
#elif defined(__s390x__)
typedef unsigned long jmp_buf[18];
#elif defined(__riscv)
typedef unsigned long jmp_buf[26];
#endif
typedef long sigjmp_buf[12];