diff options
author | Jes Sorensen <jes@sgi.com> | 2007-10-21 21:03:31 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 01:49:52 -0400 |
commit | b410e7b1499c49513cab18275db8a8ab549d9e09 (patch) | |
tree | 8a71fa34660f5ccc9d71677137c5ae211a38bbf2 /include | |
parent | cc6d4fbcef328acdc9fa7023e69f39f753f72fe1 (diff) |
Make hypercalls arch-independent.
Clean up the hypercall code to make the code in hypercalls.c
architecture independent. First process the common hypercalls and
then call lguest_arch_do_hcall() if the call hasn't been handled.
Rename struct hcall_ring to hcall_args.
This patch requires the previous patch which reorganize the layout of
struct lguest_regs on i386 so they match the layout of struct
hcall_args.
Signed-off-by: Jes Sorensen <jes@sgi.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86/lguest_hcall.h | 8 | ||||
-rw-r--r-- | include/linux/lguest.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/include/asm-x86/lguest_hcall.h b/include/asm-x86/lguest_hcall.h index 7859cfe0ebb2..8f2a1edc4fe2 100644 --- a/include/asm-x86/lguest_hcall.h +++ b/include/asm-x86/lguest_hcall.h | |||
@@ -2,6 +2,8 @@ | |||
2 | #ifndef _X86_LGUEST_HCALL_H | 2 | #ifndef _X86_LGUEST_HCALL_H |
3 | #define _X86_LGUEST_HCALL_H | 3 | #define _X86_LGUEST_HCALL_H |
4 | 4 | ||
5 | #include <asm/hw_irq.h> | ||
6 | |||
5 | #define LHCALL_FLUSH_ASYNC 0 | 7 | #define LHCALL_FLUSH_ASYNC 0 |
6 | #define LHCALL_LGUEST_INIT 1 | 8 | #define LHCALL_LGUEST_INIT 1 |
7 | #define LHCALL_CRASH 2 | 9 | #define LHCALL_CRASH 2 |
@@ -59,9 +61,9 @@ void async_hcall(unsigned long call, | |||
59 | #define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32) | 61 | #define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32) |
60 | 62 | ||
61 | #define LHCALL_RING_SIZE 64 | 63 | #define LHCALL_RING_SIZE 64 |
62 | struct hcall_ring | 64 | struct hcall_args |
63 | { | 65 | { |
64 | u32 eax, edx, ebx, ecx; | 66 | /* These map directly onto eax, ebx, ecx, edx in struct lguest_regs */ |
67 | unsigned long arg0, arg2, arg3, arg1; | ||
65 | }; | 68 | }; |
66 | |||
67 | #endif /* _I386_LGUEST_HCALL_H */ | 69 | #endif /* _I386_LGUEST_HCALL_H */ |
diff --git a/include/linux/lguest.h b/include/linux/lguest.h index 8e959deed412..ea335c8f86c3 100644 --- a/include/linux/lguest.h +++ b/include/linux/lguest.h | |||
@@ -36,7 +36,7 @@ struct lguest_data | |||
36 | /* 0xFF == done (set by Host), 0 == pending (set by Guest). */ | 36 | /* 0xFF == done (set by Host), 0 == pending (set by Guest). */ |
37 | u8 hcall_status[LHCALL_RING_SIZE]; | 37 | u8 hcall_status[LHCALL_RING_SIZE]; |
38 | /* The actual registers for the hypercalls. */ | 38 | /* The actual registers for the hypercalls. */ |
39 | struct hcall_ring hcalls[LHCALL_RING_SIZE]; | 39 | struct hcall_args hcalls[LHCALL_RING_SIZE]; |
40 | 40 | ||
41 | /* Fields initialized by the Host at boot: */ | 41 | /* Fields initialized by the Host at boot: */ |
42 | /* Memory not to try to access */ | 42 | /* Memory not to try to access */ |