X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8357bda627bdf02c1b69eecf27993182239fb463..cd103ea1b3ff029cfc458b3913975b5600915341:/lunaix-os/kernel/proc0.c?ds=sidebyside diff --git a/lunaix-os/kernel/proc0.c b/lunaix-os/kernel/proc0.c index dac1b55..6e941b0 100644 --- a/lunaix-os/kernel/proc0.c +++ b/lunaix-os/kernel/proc0.c @@ -24,6 +24,8 @@ init_platform(); void lock_reserved_memory(); +// #define ENABLE_USER_MODE + /** * @brief LunaixOS的零号进程,该进程永远为可执行。 * @@ -36,6 +38,22 @@ void __proc0() { init_platform(); +#ifdef ENABLE_USER_MODE + asm volatile("movw %0, %%ax\n" + "movw %%ax, %%es\n" + "movw %%ax, %%ds\n" + "movw %%ax, %%fs\n" + "movw %%ax, %%gs\n" + "pushl %0\n" + "pushl %1\n" + "pushl %2\n" + "pushl %3\n" + "retf" ::"i"(UDATA_SEG), + "i"(USTACK_TOP & ~0xf), + "i"(UCODE_SEG), + "r"(&&usr)); +#endif +usr: if (!fork()) { asm("jmp _lxinit_main"); }