FUCK2
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
#include <utsm/dkm.h>
|
||||
#include <utsm/log.h>
|
||||
#include <utsm/types.h>
|
||||
#include <utsm/pe.h>
|
||||
#include <utsm/linux_compat.h>
|
||||
#include "../arch/x86_64/limine.h"
|
||||
|
||||
#define DSK_PATH "/system/deshab64/deshab.elf"
|
||||
@@ -319,6 +321,18 @@ static void dsk_fill_boot_context(dsk_boot_context *ctx) {
|
||||
ctx->boot_modules_response = (u64)g_module_request.response;
|
||||
ctx->dkm_kernel_api = (u64)dkm_get_kernel_api();
|
||||
|
||||
/* PE 兼容层服务(PE32+ 原生 + PE32 解释器) */
|
||||
const pe_service *pe = pe_get_service();
|
||||
if (pe && pe->magic == PE_SERVICE_MAGIC) {
|
||||
ctx->reserved[4] = (u64)pe;
|
||||
}
|
||||
|
||||
/* Linux 兼容层服务(依赖双内核 park-and-resume + IPC) */
|
||||
const linux_compat_service *lxc = linux_compat_get_service();
|
||||
if (lxc && lxc->magic == LINUX_COMPAT_MAGIC) {
|
||||
ctx->reserved[5] = (u64)lxc;
|
||||
}
|
||||
|
||||
u64 rsp;
|
||||
__asm__ volatile ("movq %%rsp, %0" : "=r"(rsp));
|
||||
ctx->kernel_stack_top = rsp;
|
||||
|
||||
Binary file not shown.
@@ -8,6 +8,7 @@
|
||||
#include <utsm/block.h>
|
||||
#include <utsm/net.h>
|
||||
#include <utsm/ipc_shm.h>
|
||||
#include <utsm/linux_compat.h>
|
||||
|
||||
void arch_halt_forever(void);
|
||||
|
||||
@@ -71,7 +72,10 @@ void kernel_main(void) {
|
||||
|
||||
int lin_st = linux_launch();
|
||||
if (lin_st == 0) {
|
||||
log_info("[UTSM] Linux guest terminated");
|
||||
log_info("[UTSM] Linux guest parked (daemon ready)");
|
||||
/* Phase 3.2: 初始化 Linux 兼容层服务
|
||||
* (需在 linux_launch 成功 + guest park 后调用) */
|
||||
linux_compat_init();
|
||||
} else {
|
||||
log_error("[UTSM] Linux launch failed");
|
||||
log_hex64("[UTSM] Linux st=", (u64)(i64)lin_st);
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user