1
2#if __riscv_xlen == 32
3#define _Addr int
4#define _Int64 long long
5#else
6#define _Addr long
7#define _Int64 long
8#endif
9#define _Reg long
10
11TYPEDEF __builtin_va_list va_list;
12TYPEDEF __builtin_va_list __isoc_va_list;
13
14#ifndef __cplusplus
15TYPEDEF int wchar_t;
16#endif
17
18TYPEDEF float float_t;
19TYPEDEF double double_t;
20
21TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
22
23#if __riscv_xlen == 32
24TYPEDEF long long time_t;
25TYPEDEF long long suseconds_t;
26#else
27TYPEDEF long time_t;
28TYPEDEF long suseconds_t;
29#endif
30
31// TODO Someone should verify that these types are defined properly
32TYPEDEF struct { union { int __i[14]; volatile int __vi[14]; unsigned long __s[7]; } __u; } pthread_attr_t;
33TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } pthread_mutex_t;
34TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } mtx_t;
35TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } pthread_cond_t;
36TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } cnd_t;
37TYPEDEF struct { union { int __i[14]; volatile int __vi[14]; void *__p[7]; } __u; } pthread_rwlock_t;
38TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; void *__p[4]; } __u; } pthread_barrier_t;
39