diff options
author | Matt Mackall <mpm@selenic.com> | 2006-01-08 04:05:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-08 23:14:11 -0500 |
commit | 64ca9004b819ab87648dbfc78f3ef49ee491343e (patch) | |
tree | 9b5daef5280800a0006343a17f63072658d91a1d /include | |
parent | 708e9a794cf8822b760edaccd9053edb07c34d19 (diff) |
[PATCH] Make vm86 support optional
This adds an option to remove vm86 support under CONFIG_EMBEDDED. Saves
about 5k.
This version eliminates most of the #ifdefs of the previous version and
instead uses function stubs in vm86.h. Also, release_vm86_irqs is moved
from asm-i386/irq.h to a more appropriate home in vm86.h so that the stubs
can live together.
$ size vmlinux-baseline vmlinux-novm86
text data bss dec hex filename
2920821 523232 190652 3634705 377611 vmlinux-baseline
2916268 523100 190492 3629860 376324 vmlinux-novm86
Signed-off-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-i386/irq.h | 2 | ||||
-rw-r--r-- | include/asm-i386/vm86.h | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/include/asm-i386/irq.h b/include/asm-i386/irq.h index 270f1986b19f..5169d7af456f 100644 --- a/include/asm-i386/irq.h +++ b/include/asm-i386/irq.h | |||
@@ -21,8 +21,6 @@ static __inline__ int irq_canonicalize(int irq) | |||
21 | return ((irq == 2) ? 9 : irq); | 21 | return ((irq == 2) ? 9 : irq); |
22 | } | 22 | } |
23 | 23 | ||
24 | extern void release_vm86_irqs(struct task_struct *); | ||
25 | |||
26 | #ifdef CONFIG_X86_LOCAL_APIC | 24 | #ifdef CONFIG_X86_LOCAL_APIC |
27 | # define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */ | 25 | # define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */ |
28 | #endif | 26 | #endif |
diff --git a/include/asm-i386/vm86.h b/include/asm-i386/vm86.h index 40ec82c6914d..952fd6957380 100644 --- a/include/asm-i386/vm86.h +++ b/include/asm-i386/vm86.h | |||
@@ -16,7 +16,11 @@ | |||
16 | #define IF_MASK 0x00000200 | 16 | #define IF_MASK 0x00000200 |
17 | #define IOPL_MASK 0x00003000 | 17 | #define IOPL_MASK 0x00003000 |
18 | #define NT_MASK 0x00004000 | 18 | #define NT_MASK 0x00004000 |
19 | #ifdef CONFIG_VM86 | ||
19 | #define VM_MASK 0x00020000 | 20 | #define VM_MASK 0x00020000 |
21 | #else | ||
22 | #define VM_MASK 0 /* ignored */ | ||
23 | #endif | ||
20 | #define AC_MASK 0x00040000 | 24 | #define AC_MASK 0x00040000 |
21 | #define VIF_MASK 0x00080000 /* virtual interrupt flag */ | 25 | #define VIF_MASK 0x00080000 /* virtual interrupt flag */ |
22 | #define VIP_MASK 0x00100000 /* virtual interrupt pending */ | 26 | #define VIP_MASK 0x00100000 /* virtual interrupt pending */ |
@@ -200,9 +204,25 @@ struct kernel_vm86_struct { | |||
200 | */ | 204 | */ |
201 | }; | 205 | }; |
202 | 206 | ||
207 | #ifdef CONFIG_VM86 | ||
208 | |||
203 | void handle_vm86_fault(struct kernel_vm86_regs *, long); | 209 | void handle_vm86_fault(struct kernel_vm86_regs *, long); |
204 | int handle_vm86_trap(struct kernel_vm86_regs *, long, int); | 210 | int handle_vm86_trap(struct kernel_vm86_regs *, long, int); |
205 | 211 | ||
212 | struct task_struct; | ||
213 | void release_vm86_irqs(struct task_struct *); | ||
214 | |||
215 | #else | ||
216 | |||
217 | #define handle_vm86_fault(a, b) | ||
218 | #define release_vm86_irqs(a) | ||
219 | |||
220 | static inline int handle_vm86_trap(struct kernel_vm86_regs *a, long b, int c) { | ||
221 | return 0; | ||
222 | } | ||
223 | |||
224 | #endif /* CONFIG_VM86 */ | ||
225 | |||
206 | #endif /* __KERNEL__ */ | 226 | #endif /* __KERNEL__ */ |
207 | 227 | ||
208 | #endif | 228 | #endif |