From: Matt Mackall <mpm@selenic.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>, linux-tiny@selenic.com
Subject: [PATCH] Make vm86 support optional
Date: Wed, 28 Dec 2005 14:27:35 -0600 [thread overview]
Message-ID: <20051228202735.GU3356@waste.org> (raw)
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>
Index: 2.6.15-misc/arch/i386/kernel/Makefile
===================================================================
--- 2.6.15-misc.orig/arch/i386/kernel/Makefile 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/arch/i386/kernel/Makefile 2005-12-28 02:02:02.000000000 -0600
@@ -4,7 +4,7 @@
extra-y := head.o init_task.o vmlinux.lds
-obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o \
+obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \
pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \
quirks.o i8237.o
@@ -36,6 +36,7 @@ obj-$(CONFIG_ACPI_SRAT) += srat.o
obj-$(CONFIG_HPET_TIMER) += time_hpet.o
obj-$(CONFIG_EFI) += efi.o efi_stub.o
obj-$(CONFIG_DOUBLEFAULT) += doublefault.o
+obj-$(CONFIG_VM86) += vm86.o
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
EXTRA_AFLAGS := -traditional
Index: 2.6.15-misc/init/Kconfig
===================================================================
--- 2.6.15-misc.orig/init/Kconfig 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/init/Kconfig 2005-12-28 02:02:02.000000000 -0600
@@ -342,6 +342,16 @@ config UID16
help
This enables the legacy 16-bit UID syscall wrappers.
+config VM86
+ depends X86
+ default y
+ bool "Enable VM86 support" if EMBEDDED
+ help
+ This option is required by programs like DOSEMU to run 16-bit legacy
+ code on X86 processors. It also may be needed by software like
+ XFree86 to initialize some video cards via BIOS. Disabling this
+ option saves about 6k.
+
config CC_OPTIMIZE_FOR_SIZE
bool "Optimize for size"
default y if ARM || H8300
Index: 2.6.15-misc/kernel/sys_ni.c
===================================================================
--- 2.6.15-misc.orig/kernel/sys_ni.c 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/kernel/sys_ni.c 2005-12-28 02:02:02.000000000 -0600
@@ -102,6 +102,8 @@ cond_syscall(sys_setresgid16);
cond_syscall(sys_setresuid16);
cond_syscall(sys_setreuid16);
cond_syscall(sys_setuid16);
+cond_syscall(sys_vm86old);
+cond_syscall(sys_vm86);
/* arch-specific weak syscall entries */
cond_syscall(sys_pciconfig_read);
Index: 2.6.15-misc/arch/i386/kernel/process.c
===================================================================
--- 2.6.15-misc.orig/arch/i386/kernel/process.c 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/arch/i386/kernel/process.c 2005-12-28 02:02:02.000000000 -0600
@@ -48,6 +48,7 @@
#include <asm/processor.h>
#include <asm/i387.h>
#include <asm/desc.h>
+#include <asm/vm86.h>
#ifdef CONFIG_MATH_EMULATION
#include <asm/math_emu.h>
#endif
Index: 2.6.15-misc/include/asm-i386/irq.h
===================================================================
--- 2.6.15-misc.orig/include/asm-i386/irq.h 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/include/asm-i386/irq.h 2005-12-28 02:02:02.000000000 -0600
@@ -21,8 +21,6 @@ static __inline__ int irq_canonicalize(i
return ((irq == 2) ? 9 : irq);
}
-extern void release_vm86_irqs(struct task_struct *);
-
#ifdef CONFIG_X86_LOCAL_APIC
# define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
#endif
Index: 2.6.15-misc/include/asm-i386/vm86.h
===================================================================
--- 2.6.15-misc.orig/include/asm-i386/vm86.h 2005-12-28 02:01:39.000000000 -0600
+++ 2.6.15-misc/include/asm-i386/vm86.h 2005-12-28 02:36:48.000000000 -0600
@@ -16,7 +16,11 @@
#define IF_MASK 0x00000200
#define IOPL_MASK 0x00003000
#define NT_MASK 0x00004000
+#ifdef CONFIG_VM86
#define VM_MASK 0x00020000
+#else
+#define VM_MASK 0 /* ignored */
+#endif
#define AC_MASK 0x00040000
#define VIF_MASK 0x00080000 /* virtual interrupt flag */
#define VIP_MASK 0x00100000 /* virtual interrupt pending */
@@ -200,9 +204,25 @@ struct kernel_vm86_struct {
*/
};
+#ifdef CONFIG_VM86
+
void handle_vm86_fault(struct kernel_vm86_regs *, long);
int handle_vm86_trap(struct kernel_vm86_regs *, long, int);
+struct task_struct;
+void release_vm86_irqs(struct task_struct *);
+
+#else
+
+#define handle_vm86_fault(a, b)
+#define release_vm86_irqs(a)
+
+static inline int handle_vm86_trap(struct kernel_vm86_regs *a, long b, int c) {
+ return 0;
+}
+
+#endif /* CONFIG_VM86 */
+
#endif /* __KERNEL__ */
#endif
Index: 2.6.15-misc/arch/i386/kernel/entry.S
===================================================================
--- 2.6.15-misc.orig/arch/i386/kernel/entry.S 2005-12-28 01:48:00.000000000 -0600
+++ 2.6.15-misc/arch/i386/kernel/entry.S 2005-12-28 12:23:44.000000000 -0600
@@ -341,6 +341,7 @@ work_notifysig: # deal with pending s
ALIGN
work_notifysig_v86:
+#ifdef CONFIG_VM86
pushl %ecx # save ti_flags for do_notify_resume
call save_v86_state # %eax contains pt_regs pointer
popl %ecx
@@ -348,6 +349,7 @@ work_notifysig_v86:
xorl %edx, %edx
call do_notify_resume
jmp resume_userspace
+#endif
# perform syscall exit tracing
ALIGN
--
Mathematics is the supreme nostalgia of our time.
next reply other threads:[~2005-12-28 20:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-28 20:27 Matt Mackall [this message]
2005-12-28 20:35 ` [PATCH] Make vm86 support optional Roland Dreier
2005-12-29 4:39 ` Adrian Bunk
2005-12-29 18:47 ` Matt Mackall
2005-12-29 19:06 ` Adrian Bunk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051228202735.GU3356@waste.org \
--to=mpm@selenic.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tiny@selenic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.