diff options
Diffstat (limited to 'include/asm-x86/xen/interface.h')
| -rw-r--r-- | include/asm-x86/xen/interface.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/asm-x86/xen/interface.h b/include/asm-x86/xen/interface.h index 165c3968e138..6227000a1e84 100644 --- a/include/asm-x86/xen/interface.h +++ b/include/asm-x86/xen/interface.h | |||
| @@ -22,6 +22,30 @@ | |||
| 22 | #define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name) | 22 | #define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name) |
| 23 | #define GUEST_HANDLE(name) __guest_handle_ ## name | 23 | #define GUEST_HANDLE(name) __guest_handle_ ## name |
| 24 | 24 | ||
| 25 | #ifdef __XEN__ | ||
| 26 | #if defined(__i386__) | ||
| 27 | #define set_xen_guest_handle(hnd, val) \ | ||
| 28 | do { \ | ||
| 29 | if (sizeof(hnd) == 8) \ | ||
| 30 | *(uint64_t *)&(hnd) = 0; \ | ||
| 31 | (hnd).p = val; \ | ||
| 32 | } while (0) | ||
| 33 | #elif defined(__x86_64__) | ||
| 34 | #define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0) | ||
| 35 | #endif | ||
| 36 | #else | ||
| 37 | #if defined(__i386__) | ||
| 38 | #define set_xen_guest_handle(hnd, val) \ | ||
| 39 | do { \ | ||
| 40 | if (sizeof(hnd) == 8) \ | ||
| 41 | *(uint64_t *)&(hnd) = 0; \ | ||
| 42 | (hnd) = val; \ | ||
| 43 | } while (0) | ||
| 44 | #elif defined(__x86_64__) | ||
| 45 | #define set_xen_guest_handle(hnd, val) do { (hnd) = val; } while (0) | ||
| 46 | #endif | ||
| 47 | #endif | ||
| 48 | |||
| 25 | #ifndef __ASSEMBLY__ | 49 | #ifndef __ASSEMBLY__ |
| 26 | /* Guest handles for primitive C types. */ | 50 | /* Guest handles for primitive C types. */ |
| 27 | __DEFINE_GUEST_HANDLE(uchar, unsigned char); | 51 | __DEFINE_GUEST_HANDLE(uchar, unsigned char); |
| @@ -171,6 +195,10 @@ struct arch_vcpu_info { | |||
| 171 | unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */ | 195 | unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */ |
| 172 | }; | 196 | }; |
| 173 | 197 | ||
| 198 | struct xen_callback { | ||
| 199 | unsigned long cs; | ||
| 200 | unsigned long eip; | ||
| 201 | }; | ||
| 174 | #endif /* !__ASSEMBLY__ */ | 202 | #endif /* !__ASSEMBLY__ */ |
| 175 | 203 | ||
| 176 | /* | 204 | /* |
