From ed06c462331660a35bbd67c00b35129dfa874c47 Mon Sep 17 00:00:00 2001 From: Adrian-Ken Rueegsegger Date: Fri, 20 Feb 2015 16:15:32 +0100 Subject: [PATCH] hw_x86_64: Specify user argument to register mapping Implement user argument setter and getter support functions. The mapping of the state registers corresponds to the system call parameter passing convention. --- repos/base-hw/src/core/include/spec/x86/cpu.h | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/repos/base-hw/src/core/include/spec/x86/cpu.h b/repos/base-hw/src/core/include/spec/x86/cpu.h index 67c24458c..2ddf6609d 100644 --- a/repos/base-hw/src/core/include/spec/x86/cpu.h +++ b/repos/base-hw/src/core/include/spec/x86/cpu.h @@ -121,22 +121,22 @@ class Genode::Cpu /** * Support for kernel calls */ - void user_arg_0(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_1(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_2(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_3(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_4(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_5(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_6(Kernel::Call_arg const arg) { /* XXX */ } - void user_arg_7(Kernel::Call_arg const arg) { /* XXX */ } - Kernel::Call_arg user_arg_0() const { return 0UL; } - Kernel::Call_arg user_arg_1() const { return 0UL; } - Kernel::Call_arg user_arg_2() const { return 0UL; } - Kernel::Call_arg user_arg_3() const { return 0UL; } - Kernel::Call_arg user_arg_4() const { return 0UL; } - Kernel::Call_arg user_arg_5() const { return 0UL; } - Kernel::Call_arg user_arg_6() const { return 0UL; } - Kernel::Call_arg user_arg_7() const { return 0UL; } + void user_arg_0(Kernel::Call_arg const arg) { rdi = arg; } + void user_arg_1(Kernel::Call_arg const arg) { rsi = arg; } + void user_arg_2(Kernel::Call_arg const arg) { rdx = arg; } + void user_arg_3(Kernel::Call_arg const arg) { rcx = arg; } + void user_arg_4(Kernel::Call_arg const arg) { r8 = arg; } + void user_arg_5(Kernel::Call_arg const arg) { r9 = arg; } + void user_arg_6(Kernel::Call_arg const arg) { r10 = arg; } + void user_arg_7(Kernel::Call_arg const arg) { r11 = arg; } + Kernel::Call_arg user_arg_0() const { return rdi; } + Kernel::Call_arg user_arg_1() const { return rsi; } + Kernel::Call_arg user_arg_2() const { return rdx; } + Kernel::Call_arg user_arg_3() const { return rcx; } + Kernel::Call_arg user_arg_4() const { return r8; } + Kernel::Call_arg user_arg_5() const { return r9; } + Kernel::Call_arg user_arg_6() const { return r10; } + Kernel::Call_arg user_arg_7() const { return r11; } /** * Initialize thread context