From 0dfe50f09319d962ab4f3ce7cd4bc9bfbbface9d Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 26 Jul 2008 01:17:03 +0000 Subject: [PATCH] make ncitool generate at least valid 64 bit assembly svn path=/branches/ros-amd64-bringup/; revision=34802 --- reactos/tools/nci/ncitool.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/reactos/tools/nci/ncitool.c b/reactos/tools/nci/ncitool.c index a79201949f0..543b4c732b7 100644 --- a/reactos/tools/nci/ncitool.c +++ b/reactos/tools/nci/ncitool.c @@ -53,6 +53,11 @@ " call *(%%ecx)\n" \ " ret $0x%x\n\n" +#define UserModeStub_amd64 " movq $0x%x, %%rax\n" \ + " movq $KUSER_SHARED_SYSCALL, %%rcx\n" \ + " call *(%%rcx)\n" \ + " ret $0x%x\n\n" + #define UserModeStub_ppc " stwu 1,-16(1)\n" \ " mflr 0\n\t" \ " stw 0,0(1)\n" \ @@ -94,6 +99,13 @@ " call _KiSystemService\n" \ " ret $0x%x\n\n" +#define KernelModeStub_amd64 " movq $0x%x, %%rax\n" \ + " leaq 4(%%rsp), %%rdx\n" \ + " pushfq\n" \ + " pushq $KGDT_R0_CODE\n" \ + " call _KiSystemService\n" \ + " ret $0x%x\n\n" + /* For now, use the usermode stub. We'll optimize later */ #define KernelModeStub_ppc UserModeStub_ppc @@ -130,7 +142,7 @@ struct ncitool_data_t { struct ncitool_data_t ncitool_data[] = { { "i386", 4, KernelModeStub_x86, UserModeStub_x86, ".global _%s@%d\n", "_%s@%d:\n" }, - { "amd64", 4, KernelModeStub_x86, UserModeStub_x86, + { "amd64", 4, KernelModeStub_amd64, UserModeStub_amd64, ".global _%s@%d\n", "_%s@%d:\n" }, { "powerpc", 4, KernelModeStub_ppc, UserModeStub_ppc, "\t.globl %s\n", "%s:\n" },