user: implement mlibc as the libc, finally.

It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
kaguya
2026-05-02 03:31:49 -04:00
parent 2fa39ad85a
commit 9a9b91c940
2387 changed files with 152741 additions and 315 deletions
@@ -0,0 +1,13 @@
#ifndef MLIBC_ARCH_DEFS_HPP
#define MLIBC_ARCH_DEFS_HPP
#include <stddef.h>
namespace mlibc {
// not strictly true, can be 4 or 8k on 68040/68060, and many more on others
inline constexpr size_t page_size = 0x1000;
} // namespace mlibc
#endif // MLIBC_ARCH_DEFS_HPP
@@ -0,0 +1,24 @@
#pragma once
#include <stdint.h>
#include <mlibc/internal-sysdeps.hpp>
#include <mlibc/tcb.hpp>
#include <bits/ensure.h>
namespace mlibc {
extern "C" void *__m68k_read_tp();
inline Tcb *get_current_tcb() {
// On m68k, the end of the TCB is 0x7000 below the thread pointer.
void *ptr = __m68k_read_tp();
return reinterpret_cast<Tcb *>((uintptr_t)ptr - 0x7000 - sizeof(Tcb));
}
inline uintptr_t get_sp() {
uintptr_t sp;
asm volatile ("move.l %%sp, %0" : "=r"(sp));
return sp;
}
} // namespace mlibc