qemu fast fix

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@706 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2004-04-04 20:22:28 +00:00
parent 1f673135ac
commit 73332e5ccd

54
vl.c
View File

@ -52,6 +52,17 @@
#define memalign(align, size) malloc(size) #define memalign(align, size) malloc(size)
#endif #endif
#ifdef CONFIG_SDL
/* SDL use the pthreads and they modify sigaction. We don't
want that. */
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
extern void __libc_sigaction();
#define sigaction(sig, act, oact) __libc_sigaction(sig, act, oact)
#else
extern void __sigaction();
#define sigaction(sig, act, oact) __sigaction(sig, act, oact)
#endif
#endif /* CONFIG_SDL */
#include "disas.h" #include "disas.h"
@ -1544,7 +1555,7 @@ int main_loop(void)
} }
ioh->max_size = max_size; ioh->max_size = max_size;
} }
ret = poll(ufds, pf - ufds, timeout); ret = poll(ufds, pf - ufds, timeout);
if (ret > 0) { if (ret > 0) {
/* XXX: better handling of removal */ /* XXX: better handling of removal */
@ -1669,18 +1680,6 @@ struct option long_options[] = {
{ NULL, 0, NULL, 0 }, { NULL, 0, NULL, 0 },
}; };
#ifdef CONFIG_SDL
/* SDL use the pthreads and they modify sigaction. We don't
want that. */
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
extern void __libc_sigaction();
#define sigaction(sig, act, oact) __libc_sigaction(sig, act, oact)
#else
extern void __sigaction();
#define sigaction(sig, act, oact) __sigaction(sig, act, oact)
#endif
#endif /* CONFIG_SDL */
#if defined (TARGET_I386) && defined(USE_CODE_COPY) #if defined (TARGET_I386) && defined(USE_CODE_COPY)
/* this stack is only used during signal handling */ /* this stack is only used during signal handling */
@ -2045,8 +2044,6 @@ int main(int argc, char **argv)
} }
} }
init_timers();
/* init CPU state */ /* init CPU state */
env = cpu_init(); env = cpu_init();
global_env = env; global_env = env;
@ -2070,25 +2067,13 @@ int main(int argc, char **argv)
#endif #endif
} }
#if defined(TARGET_I386)
pc_init(ram_size, vga_ram_size, boot_device,
ds, fd_filename, snapshot,
kernel_filename, kernel_cmdline, initrd_filename);
#elif defined(TARGET_PPC)
ppc_init();
#endif
/* launched after the device init so that it can display or not a
banner */
monitor_init();
/* setup cpu signal handlers for MMU / self modifying code handling */ /* setup cpu signal handlers for MMU / self modifying code handling */
#if !defined(CONFIG_SOFTMMU) #if !defined(CONFIG_SOFTMMU)
#if defined (TARGET_I386) && defined(USE_CODE_COPY) #if defined (TARGET_I386) && defined(USE_CODE_COPY)
{ {
stack_t stk; stack_t stk;
signal_stack = malloc(SIGNAL_STACK_SIZE); signal_stack = memalign(16, SIGNAL_STACK_SIZE);
stk.ss_sp = signal_stack; stk.ss_sp = signal_stack;
stk.ss_size = SIGNAL_STACK_SIZE; stk.ss_size = SIGNAL_STACK_SIZE;
stk.ss_flags = 0; stk.ss_flags = 0;
@ -2125,6 +2110,19 @@ int main(int argc, char **argv)
sigaction(SIGPIPE, &act, NULL); sigaction(SIGPIPE, &act, NULL);
} }
#endif #endif
init_timers();
#if defined(TARGET_I386)
pc_init(ram_size, vga_ram_size, boot_device,
ds, fd_filename, snapshot,
kernel_filename, kernel_cmdline, initrd_filename);
#elif defined(TARGET_PPC)
ppc_init();
#endif
/* launched after the device init so that it can display or not a
banner */
monitor_init();
gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); gui_timer = qemu_new_timer(rt_clock, gui_update, NULL);
qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock));