Magellan Linux

Annotation of /trunk/kernel26-xen/patches-2.6.25-r1/1016-2.6.25-xen-x86_64-Add-64-bit-version-of-privcmd_hypercall.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 606 - (hide annotations) (download)
Thu May 22 23:13:13 2008 UTC (16 years ago) by niro
File size: 1781 byte(s)
-ver bump to 2.6.25-magellan-r1:
- linux-2.6.25.4
- fbcondecor-0.9.4
- squashfs-3.3
- unionfs-2.3.3
- tuxonice-3.0-rc7
- linux-phc-0.3.0
- acpi-dstd-0.9a
- reiser4
- xen-3.2.0
. ipw3945-1.2.2

1 niro 606 From 3ba4fd12c6ff5269a2e727c5f84aa7a18b8fa4a3 Mon Sep 17 00:00:00 2001
2     From: Mark McLoughlin <markmc@redhat.com>
3     Date: Thu, 6 Mar 2008 11:10:59 +0000
4     Subject: [PATCH] xen x86_64: Add 64 bit version of privcmd_hypercall()
5    
6     Signed-off-by: Mark McLoughlin <markmc@redhat.com>
7     ---
8     include/asm-x86/xen/hypercall.h | 28 ++++++++++++++++++++++++++++
9     1 files changed, 28 insertions(+), 0 deletions(-)
10    
11     diff --git a/include/asm-x86/xen/hypercall.h b/include/asm-x86/xen/hypercall.h
12     index cd554ca..b0c518c 100644
13     --- a/include/asm-x86/xen/hypercall.h
14     +++ b/include/asm-x86/xen/hypercall.h
15     @@ -412,6 +412,7 @@ MULTI_stack_switch(struct multicall_entry *mcl,
16    
17     #include <xen/sys/privcmd.h>
18    
19     +#ifdef CONFIG_X86_32
20     static inline int privcmd_hypercall(privcmd_hypercall_t *hypercall)
21     {
22     int ret;
23     @@ -437,5 +438,32 @@ static inline int privcmd_hypercall(privcmd_hypercall_t *hypercall)
24    
25     return ret;
26     }
27     +#else /* CONFIG_X86_32 */
28     +static inline int privcmd_hypercall(privcmd_hypercall_t *hypercall)
29     +{
30     + int ret;
31     + long ign1, ign2, ign3;
32     +
33     + if (hypercall->op >= (PAGE_SIZE >> 5))
34     + return -EINVAL;
35     +
36     + __asm__ __volatile__ (
37     + "movq %8,%%r10; movq %9,%%r8;"
38     + "shll $5,%%eax ;"
39     + "addq $hypercall_page,%%rax ;"
40     + "call *%%rax"
41     + : "=a" (ret), "=D" (ign1),
42     + "=S" (ign2), "=d" (ign3)
43     + : "0" ((unsigned int)hypercall->op),
44     + "1" (hypercall->arg[0]),
45     + "2" (hypercall->arg[1]),
46     + "3" (hypercall->arg[2]),
47     + "g" (hypercall->arg[3]),
48     + "g" (hypercall->arg[4])
49     + : "r8", "r10", "memory" );
50     +
51     + return ret;
52     +}
53     +#endif /* CONFIG_X86_32 */
54    
55     #endif /* __HYPERCALL_H__ */
56     --
57     1.5.4.1
58