Commit 73332e5ccdc760c9f0861dd8528dd7702afce088
1 parent
1f673135
qemu fast fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@706 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
26 additions
and
28 deletions
vl.c
| @@ -52,6 +52,17 @@ | @@ -52,6 +52,17 @@ | ||
| 52 | #define memalign(align, size) malloc(size) | 52 | #define memalign(align, size) malloc(size) |
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | +#ifdef CONFIG_SDL | ||
| 56 | +/* SDL use the pthreads and they modify sigaction. We don't | ||
| 57 | + want that. */ | ||
| 58 | +#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) | ||
| 59 | +extern void __libc_sigaction(); | ||
| 60 | +#define sigaction(sig, act, oact) __libc_sigaction(sig, act, oact) | ||
| 61 | +#else | ||
| 62 | +extern void __sigaction(); | ||
| 63 | +#define sigaction(sig, act, oact) __sigaction(sig, act, oact) | ||
| 64 | +#endif | ||
| 65 | +#endif /* CONFIG_SDL */ | ||
| 55 | 66 | ||
| 56 | #include "disas.h" | 67 | #include "disas.h" |
| 57 | 68 | ||
| @@ -1544,7 +1555,7 @@ int main_loop(void) | @@ -1544,7 +1555,7 @@ int main_loop(void) | ||
| 1544 | } | 1555 | } |
| 1545 | ioh->max_size = max_size; | 1556 | ioh->max_size = max_size; |
| 1546 | } | 1557 | } |
| 1547 | - | 1558 | + |
| 1548 | ret = poll(ufds, pf - ufds, timeout); | 1559 | ret = poll(ufds, pf - ufds, timeout); |
| 1549 | if (ret > 0) { | 1560 | if (ret > 0) { |
| 1550 | /* XXX: better handling of removal */ | 1561 | /* XXX: better handling of removal */ |
| @@ -1669,18 +1680,6 @@ struct option long_options[] = { | @@ -1669,18 +1680,6 @@ struct option long_options[] = { | ||
| 1669 | { NULL, 0, NULL, 0 }, | 1680 | { NULL, 0, NULL, 0 }, |
| 1670 | }; | 1681 | }; |
| 1671 | 1682 | ||
| 1672 | -#ifdef CONFIG_SDL | ||
| 1673 | -/* SDL use the pthreads and they modify sigaction. We don't | ||
| 1674 | - want that. */ | ||
| 1675 | -#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) | ||
| 1676 | -extern void __libc_sigaction(); | ||
| 1677 | -#define sigaction(sig, act, oact) __libc_sigaction(sig, act, oact) | ||
| 1678 | -#else | ||
| 1679 | -extern void __sigaction(); | ||
| 1680 | -#define sigaction(sig, act, oact) __sigaction(sig, act, oact) | ||
| 1681 | -#endif | ||
| 1682 | -#endif /* CONFIG_SDL */ | ||
| 1683 | - | ||
| 1684 | #if defined (TARGET_I386) && defined(USE_CODE_COPY) | 1683 | #if defined (TARGET_I386) && defined(USE_CODE_COPY) |
| 1685 | 1684 | ||
| 1686 | /* this stack is only used during signal handling */ | 1685 | /* this stack is only used during signal handling */ |
| @@ -2045,8 +2044,6 @@ int main(int argc, char **argv) | @@ -2045,8 +2044,6 @@ int main(int argc, char **argv) | ||
| 2045 | } | 2044 | } |
| 2046 | } | 2045 | } |
| 2047 | 2046 | ||
| 2048 | - init_timers(); | ||
| 2049 | - | ||
| 2050 | /* init CPU state */ | 2047 | /* init CPU state */ |
| 2051 | env = cpu_init(); | 2048 | env = cpu_init(); |
| 2052 | global_env = env; | 2049 | global_env = env; |
| @@ -2070,25 +2067,13 @@ int main(int argc, char **argv) | @@ -2070,25 +2067,13 @@ int main(int argc, char **argv) | ||
| 2070 | #endif | 2067 | #endif |
| 2071 | } | 2068 | } |
| 2072 | 2069 | ||
| 2073 | -#if defined(TARGET_I386) | ||
| 2074 | - pc_init(ram_size, vga_ram_size, boot_device, | ||
| 2075 | - ds, fd_filename, snapshot, | ||
| 2076 | - kernel_filename, kernel_cmdline, initrd_filename); | ||
| 2077 | -#elif defined(TARGET_PPC) | ||
| 2078 | - ppc_init(); | ||
| 2079 | -#endif | ||
| 2080 | - | ||
| 2081 | - /* launched after the device init so that it can display or not a | ||
| 2082 | - banner */ | ||
| 2083 | - monitor_init(); | ||
| 2084 | - | ||
| 2085 | /* setup cpu signal handlers for MMU / self modifying code handling */ | 2070 | /* setup cpu signal handlers for MMU / self modifying code handling */ |
| 2086 | #if !defined(CONFIG_SOFTMMU) | 2071 | #if !defined(CONFIG_SOFTMMU) |
| 2087 | 2072 | ||
| 2088 | #if defined (TARGET_I386) && defined(USE_CODE_COPY) | 2073 | #if defined (TARGET_I386) && defined(USE_CODE_COPY) |
| 2089 | { | 2074 | { |
| 2090 | stack_t stk; | 2075 | stack_t stk; |
| 2091 | - signal_stack = malloc(SIGNAL_STACK_SIZE); | 2076 | + signal_stack = memalign(16, SIGNAL_STACK_SIZE); |
| 2092 | stk.ss_sp = signal_stack; | 2077 | stk.ss_sp = signal_stack; |
| 2093 | stk.ss_size = SIGNAL_STACK_SIZE; | 2078 | stk.ss_size = SIGNAL_STACK_SIZE; |
| 2094 | stk.ss_flags = 0; | 2079 | stk.ss_flags = 0; |
| @@ -2125,6 +2110,19 @@ int main(int argc, char **argv) | @@ -2125,6 +2110,19 @@ int main(int argc, char **argv) | ||
| 2125 | sigaction(SIGPIPE, &act, NULL); | 2110 | sigaction(SIGPIPE, &act, NULL); |
| 2126 | } | 2111 | } |
| 2127 | #endif | 2112 | #endif |
| 2113 | + init_timers(); | ||
| 2114 | + | ||
| 2115 | +#if defined(TARGET_I386) | ||
| 2116 | + pc_init(ram_size, vga_ram_size, boot_device, | ||
| 2117 | + ds, fd_filename, snapshot, | ||
| 2118 | + kernel_filename, kernel_cmdline, initrd_filename); | ||
| 2119 | +#elif defined(TARGET_PPC) | ||
| 2120 | + ppc_init(); | ||
| 2121 | +#endif | ||
| 2122 | + | ||
| 2123 | + /* launched after the device init so that it can display or not a | ||
| 2124 | + banner */ | ||
| 2125 | + monitor_init(); | ||
| 2128 | 2126 | ||
| 2129 | gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); | 2127 | gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); |
| 2130 | qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); | 2128 | qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); |