feat: main function

This commit is contained in:
Katharina 2026-07-04 18:33:06 +02:00
parent beb7fb38ae
commit ba608513e6
10 changed files with 151 additions and 57 deletions

View file

@ -56,3 +56,22 @@ struct [[gnu::packed]] tss_t {
static_assert(sizeof(tss_t) == 104);
void reloadSegments(Gdt::selector_t code_selector, Gdt::selector_t data_selector);
[[noreturn]] inline void longjump(
uint64_t code, uint64_t stack, Gdt::selector_t code_selector, Gdt::selector_t stack_selector, uint64_t arg
) {
uint64_t code_sel = code_selector;
uint16_t stack_sel = stack_selector;
asm volatile(
"mov %[stack_sel], %%ss\n"
"mov %[stack], %%rsp\n"
"pushq %[code_sel]\n"
"pushq %[code]\n"
"mov %[arg], %%rdi\n"
"lretq\n"
:
: [stack_sel] "r"(stack_sel), [stack] "r"(stack), [code_sel] "r"(code_sel), [code] "r"(code), [arg] "r"(arg)
: "memory", "rdi"
);
__builtin_unreachable();
}