aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc/misc.c
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2023-05-21 17:22:00 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2023-05-21 17:22:00 +0200
commit1e058d15e29adc482074d7225b4c1ed34e63568d (patch)
tree7167f01bdb3eb0542895ee14e389225dc0eca37b /libpsn00b/libc/misc.c
parent513a6e99dd1f9cf5531d55f544478bec72efb910 (diff)
downloadpsn00bsdk-1e058d15e29adc482074d7225b4c1ed34e63568d.tar.gz
More library cleanups and libc fixes
Diffstat (limited to 'libpsn00b/libc/misc.c')
-rw-r--r--libpsn00b/libc/misc.c53
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;
+}