From eae4df8320b65d20e498e94dabd131498d3b9ea2 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 29 Sep 2003 18:50:02 +0000 Subject: [PATCH] Fixed the usage of CHECK_USER_ADDRESS(). R5 has the inverse memory layout, so we need to adjust the KERNEL_BASE macro when compiling for it. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4853 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/util/syscall_args.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/headers/private/kernel/util/syscall_args.h b/headers/private/kernel/util/syscall_args.h index f988b8b172..aae8001f7d 100644 --- a/headers/private/kernel/util/syscall_args.h +++ b/headers/private/kernel/util/syscall_args.h @@ -5,13 +5,19 @@ #include +// Hack to be able to use the CHECK_USER_ADDRESS macro when compiling for R5. +#ifdef R5_MEMORY_LAYOUT +# undef KERNEL_BASE +# define KERNEL_BASE 0x0 +#endif + // copy_ref_var_from_user template inline status_t copy_ref_var_from_user(T *user, T &kernel) { - if (CHECK_USER_ADDRESS(user)) + if (!CHECK_USER_ADDRESS(user)) return B_BAD_ADDRESS; return user_memcpy(&kernel, user, sizeof(T)); } @@ -22,7 +28,7 @@ inline status_t copy_ref_var_to_user(T &kernel, T *user) { - if (CHECK_USER_ADDRESS(user)) + if (!CHECK_USER_ADDRESS(user)) return B_BAD_ADDRESS; return user_memcpy(user, &kernel, sizeof(T)); }