Add stddef.h and libc headers cleanup (#396)

* Move headers to include/libc

* stddef

* move math.h

* General cleanup

* move fabs, sqrtf and sqrt to math.h

* move alloca and assert

* whoops
This commit is contained in:
Anghelo Carvajal
2021-11-05 23:44:58 -03:00
committed by GitHub
parent 49f55ff005
commit e70a8fbb99
23 changed files with 72 additions and 51 deletions
+7
View File
@@ -0,0 +1,7 @@
#ifndef ALLOCA_H
#define ALLOCA_H
void* alloca(u32);
#define alloca __builtin_alloca
#endif
+4
View File
@@ -0,0 +1,4 @@
#ifndef ASSERT_H
#define ASSERT_H
#endif
+36
View File
@@ -0,0 +1,36 @@
#ifndef MATH_H
#define MATH_H
#include "PR/ultratypes.h"
#define M_PI 3.14159265358979323846f
#define M_SQRT2 1.41421356237309504880f
#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */
#define FLT_MAX 340282346638528859811704183484516925440.0f
#define SHT_MAX 32767.0f
#define SHT_MINV (1.0f / SHT_MAX)
#define DEGTORAD(x) ((x) * (M_PI / 180.0f))
typedef union {
f64 d;
struct {
u32 hi;
u32 lo;
} word;
} du;
typedef union {
u32 i;
f32 f;
} fu;
extern f32 __libm_qnan_f;
float fabsf(float f);
#pragma intrinsic(fabsf)
float sqrtf(float f);
#pragma intrinsic(sqrtf)
double sqrt(double d);
#pragma intrinsic(sqrt)
#endif
+46
View File
@@ -0,0 +1,46 @@
#ifndef STDARG_H
#define STDARG_H
#include "ultra64.h"
// When building with GCC, use the official vaarg macros to avoid warnings
// and possibly bad codegen.
#ifdef __GNUC__
#define va_list __builtin_va_list
#define va_start __builtin_va_start
#define va_arg __builtin_va_arg
#define va_end __builtin_va_end
#else
typedef char *va_list;
#define _FP 1
#define _INT 0
#define _STRUCT 2
#define _VA_FP_SAVE_AREA 0x10
#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
#define __va_stack_arg(list, mode) \
( \
((list) = (char *)_VA_ALIGN(list, __builtin_alignof(mode)) + \
_VA_ALIGN(sizeof(mode), 4)), \
(((char *)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
#define __va_double_arg(list, mode) \
( \
(((long)list & 0x1) /* 1 byte aligned? */ \
? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA)) \
: (((long)list & 0x2) /* 2 byte aligned? */ \
? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \
: __va_stack_arg(list, mode))))
#define va_arg(list, mode) ((mode *)(((__builtin_classof(mode) == _FP && \
__builtin_alignof(mode) == sizeof(double)) \
? __va_double_arg(list, mode) \
: __va_stack_arg(list, mode))))[-1]
#define va_end(__list)
#endif /* __GNUC__ */
#endif /* STDARG_H */
+14
View File
@@ -0,0 +1,14 @@
#ifndef STDBOOL
#define STDBOOL
#define __bool_true_false_are_defined 1
#ifndef __cplusplus
#define bool u32
#define false 0
#define true 1
#endif /* __cplusplus */
#endif /* STDBOOL */
+20
View File
@@ -0,0 +1,20 @@
#ifndef STDDEF_H
#define STDDEF_H
#include "PR/ultratypes.h"
typedef u32 size_t;
typedef s32 ptrdiff_t;
#ifndef NULL
#define NULL (void*)0
#endif
#ifdef __GNUC__
#define offsetof(structure, member) __builtin_offsetof (structure, member)
#else
#define offsetof(structure, member) ((size_t)&(((structure*)0)->member))
#endif
#endif /* STDDEF_H */
+29
View File
@@ -0,0 +1,29 @@
#ifndef STDINT_H
#define STDINT_H
#include "PR/ultratypes.h"
typedef s32 intptr_t;
typedef u32 uintptr_t;
#define INT8_MIN (-0x80)
#define INT16_MIN (-0x8000)
#define INT32_MIN (-0x80000000)
#define INT64_MIN (-0x8000000000000000)
#define INT8_MAX 0x7f
#define INT16_MAX 0x7fff
#define INT32_MAX 0x7fffffff
#define INT64_MAX 0x7fffffffffffffff
#define UINT8_MAX 0xff
#define UINT16_MAX 0xffff
#define UINT32_MAX 0xffffffff
#define UINT64_MAX 0xffffffffffffffff
#define INTPTR_MIN (-0x80000000)
#define INTPTR_MAX 0x7fffffff
#define UINTPTR_MAX 0xffffffff
#endif /* STDINT_H */
+25
View File
@@ -0,0 +1,25 @@
#ifndef STDLIB_H
#define STDLIB_H
#include "libc/stddef.h"
typedef struct {
/* 0x0 */ int quot;
/* 0x4 */ int rem;
} div_t;
typedef struct {
/* 0x0 */ long quot;
/* 0x4 */ long rem;
} ldiv_t;
typedef struct {
/* 0x0 */ long long quot;
/* 0x8 */ long long rem;
} lldiv_t;
typedef int ssize_t;
typedef long wchar_t;
#endif /* STDLIB_H */