diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-05-21 17:22:00 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-05-21 17:22:00 +0200 |
| commit | 1e058d15e29adc482074d7225b4c1ed34e63568d (patch) | |
| tree | 7167f01bdb3eb0542895ee14e389225dc0eca37b /libpsn00b/libc/misc.c | |
| parent | 513a6e99dd1f9cf5531d55f544478bec72efb910 (diff) | |
| download | psn00bsdk-1e058d15e29adc482074d7225b4c1ed34e63568d.tar.gz | |
More library cleanups and libc fixes
Diffstat (limited to 'libpsn00b/libc/misc.c')
| -rw-r--r-- | libpsn00b/libc/misc.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libpsn00b/libc/misc.c b/libpsn00b/libc/misc.c new file mode 100644 index 0000000..d1fd9d3 --- /dev/null +++ b/libpsn00b/libc/misc.c @@ -0,0 +1,53 @@ +/* + * PSn00bSDK standard library (misc. functions) + * (C) 2022-2023 spicyjpeg - MPL licensed + */ + +#undef SDK_LIBRARY_NAME + +#include <assert.h> +#include <stdlib.h> + +/* Abort functions */ + +void _assert_abort(const char *file, int line, const char *expr) { + _sdk_log("%s:%d: assert(%s)\n", file, line, expr); + + for (;;) + __asm__ volatile(""); +} + +void abort(void) { + _sdk_log("abort()\n"); + + for (;;) + __asm__ volatile(""); +} + +void __cxa_pure_virtual(void) { + _sdk_log("__cxa_pure_virtual()\n"); + + for (;;) + __asm__ volatile(""); +} + +/* abs() */ + +int abs(int value) { + return (value < 0) ? (-value) : value; +} + +/* Pseudorandom number generator */ + +static int _random_seed = 0; + +int rand(void) { + _random_seed *= 0x41c64e6d; + _random_seed += 12345; + + return (_random_seed >> 16) & RAND_MAX; +} + +void srand(int seed) { + _random_seed = seed; +} |
