From fe6299097f41a31dbb7ca7fe65fc7fa5cff65f89 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 4 Mar 2021 10:06:39 +0100 Subject: [PATCH] User code cannot trigger syscall! --- kaleid/kernel/sh/testcmds.c | 8 +++----- kaleid/user/test/test.asm | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/kaleid/kernel/sh/testcmds.c b/kaleid/kernel/sh/testcmds.c index ce01214..2b52f3b 100644 --- a/kaleid/kernel/sh/testcmds.c +++ b/kaleid/kernel/sh/testcmds.c @@ -366,12 +366,10 @@ error_t CmdRing3Test(int argc, char **argv, char *cmdline) } KernLog("Entrypoint : %p, stack address : %p\n", entryPoint, stackAddr+size); + + extern void UserTest(); - uchar *code = (uchar*)entryPoint; - - *code = 0x90; // nop - *(code+1) = 0xEB; // jmp - *(code+2) = 0xFD; // short 0x0 + memmove(entryPoint, UserTest, KPAGESIZE); KeJumpToUserspace(0, entryPoint, stackAddr+size); diff --git a/kaleid/user/test/test.asm b/kaleid/user/test/test.asm index 808d813..1e0d591 100644 --- a/kaleid/user/test/test.asm +++ b/kaleid/user/test/test.asm @@ -29,7 +29,7 @@ global EndOfUser UserTest: mov rdi, 13 - int 0x80 + ;int 0x80 .clone: nop