aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-09-13 17:29:53 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-09-13 17:29:53 +0100
commit987c1f6080d05228ab81b27fad606af6c51537e4 (patch)
treea796d5fb55f830c8aba50cd1b033f9fc13b5db75
parentbdc9bc5f487857f69d84e334a1bbd491c9d9b527 (diff)
downloadxen-987c1f6080d05228ab81b27fad606af6c51537e4.tar.gz
xen-987c1f6080d05228ab81b27fad606af6c51537e4.tar.bz2
xen-987c1f6080d05228ab81b27fad606af6c51537e4.zip
xen: define raw version of set_xen_guest_handle
allows users to define more complex (e.g. type-safer) variations on set_xen_guest_handle if they wish. Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
-rw-r--r--xen/include/public/arch-ia64.h3
-rw-r--r--xen/include/public/arch-x86/xen-x86_32.h4
-rw-r--r--xen/include/public/arch-x86/xen.h3
3 files changed, 6 insertions, 4 deletions
diff --git a/xen/include/public/arch-ia64.h b/xen/include/public/arch-ia64.h
index 8333a78fdc..c9da5d4f82 100644
--- a/xen/include/public/arch-ia64.h
+++ b/xen/include/public/arch-ia64.h
@@ -49,10 +49,11 @@
#define XEN_GUEST_HANDLE(name) __guest_handle_ ## name
#define XEN_GUEST_HANDLE_64(name) XEN_GUEST_HANDLE(name)
#define uint64_aligned_t uint64_t
-#define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0)
+#define set_xen_guest_handle_raw(hnd, val) do { (hnd).p = val; } while (0)
#ifdef __XEN_TOOLS__
#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
#endif
+#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
#ifndef __ASSEMBLY__
typedef unsigned long xen_pfn_t;
diff --git a/xen/include/public/arch-x86/xen-x86_32.h b/xen/include/public/arch-x86/xen-x86_32.h
index 7cb6a0179f..82a7f5b776 100644
--- a/xen/include/public/arch-x86/xen-x86_32.h
+++ b/xen/include/public/arch-x86/xen-x86_32.h
@@ -108,8 +108,8 @@
__guest_handle_ ## name; \
typedef struct { union { type *p; uint64_aligned_t q; }; } \
__guest_handle_64_ ## name
-#undef set_xen_guest_handle
-#define set_xen_guest_handle(hnd, val) \
+#undef set_xen_guest_handle_raw
+#define set_xen_guest_handle_raw(hnd, val) \
do { if ( sizeof(hnd) == 8 ) *(uint64_t *)&(hnd) = 0; \
(hnd).p = val; \
} while ( 0 )
diff --git a/xen/include/public/arch-x86/xen.h b/xen/include/public/arch-x86/xen.h
index b08ac7a898..79ec633725 100644
--- a/xen/include/public/arch-x86/xen.h
+++ b/xen/include/public/arch-x86/xen.h
@@ -44,10 +44,11 @@
#define DEFINE_XEN_GUEST_HANDLE(name) __DEFINE_XEN_GUEST_HANDLE(name, name)
#define __XEN_GUEST_HANDLE(name) __guest_handle_ ## name
#define XEN_GUEST_HANDLE(name) __XEN_GUEST_HANDLE(name)
-#define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0)
+#define set_xen_guest_handle_raw(hnd, val) do { (hnd).p = val; } while (0)
#ifdef __XEN_TOOLS__
#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
#endif
+#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
#if defined(__i386__)
#include "xen-x86_32.h"