Files
mango/arch/x86_64/asm-offset.c
Max Wash 6019c9307d kernel: separate headers into kernel and user headers
all kernel headers have been moved from include/mango to include/kernel
and include definitions that are only relevant to kernel-space.

any definitions that are relevant to both kernel- and user-space
(i.e. type definitions, syscall IDs) have been moved to
include/mango within libmango.
2026-02-19 18:54:48 +00:00

28 lines
613 B
C

#include <kernel/sched.h>
#include <kernel/compiler.h>
//size_t THREAD_sp = offsetof(struct thread, tr_sp);
/* Use %a0 instead of %0 to prevent gcc from emitting a $ before the symbol value
in the generated assembly.
emitting
.set TASK_sp, $56
instead of
.set TASK_sp, 56
causes garbage symbols to be generated.
*/
#define DEFINE(sym, val) \
asm volatile("\n.global " #sym "\n.type " #sym ", @object" "\n.set " #sym ", %a0" : : "i" (val))
#define OFFSET(sym, str, mem) \
DEFINE(sym, offsetof(str, mem))
static void __used common(void)
{
OFFSET(THREAD_sp, struct thread, tr_sp);
}