SHA256
1
0
forked from pool/qemu
OBS User unknown 2008-01-17 23:38:52 +00:00 committed by Git OBS Bridge
parent 9cce5131ca
commit c8c1238726
13 changed files with 318 additions and 351 deletions

View File

@ -1,6 +1,6 @@
--- linux-user/main.c --- linux-user/main.c
+++ linux-user/main.c +++ linux-user/main.c
@@ -339,18 +339,54 @@ @@ -377,19 +377,55 @@
{ {
TaskState *ts = env->opaque; TaskState *ts = env->opaque;
uint32_t opcode; uint32_t opcode;
@ -8,7 +8,8 @@
/* we handle the FPU emulation here, as Linux */ /* we handle the FPU emulation here, as Linux */
/* we get the opcode */ /* we get the opcode */
opcode = tget32(env->regs[15]); /* FIXME - what to do if get_user() fails? */
get_user_u32(opcode, env->regs[15]);
- if (EmulateAll(opcode, &ts->fpa, env) == 0) { - if (EmulateAll(opcode, &ts->fpa, env) == 0) {
+ if ((rc=EmulateAll(opcode, &ts->fpa, env)) == 0) { + if ((rc=EmulateAll(opcode, &ts->fpa, env)) == 0) {

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8892fead8e0caa1af63419e3376a784e56040e15d82e967e139f54c13ae22b49
size 2330234

3
qemu-0.9.1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a68d110ac86247b385b677d02fff2315ba42418469ead2d4f7e8bb48cfa928ba
size 2370923

View File

@ -19,7 +19,7 @@ Index: qemu.bkp/linux-user/syscall.c
#include <linux/termios.h> #include <linux/termios.h>
#include <linux/unistd.h> #include <linux/unistd.h>
#include <linux/utsname.h> #include <linux/utsname.h>
@@ -2715,6 +2718,91 @@ @@ -2715,6 +2718,92 @@
unlock_user_struct(target_ts, target_addr, 1); unlock_user_struct(target_ts, target_addr, 1);
} }
@ -79,7 +79,7 @@ Index: qemu.bkp/linux-user/syscall.c
+ break; + break;
+ default: + default:
+ gemu_log("qemu: Unsupported futex op %d\n", op); + gemu_log("qemu: Unsupported futex op %d\n", op);
+ return -ENOSYS; + return -TARGET_ENOSYS;
+ } + }
+ if (op == FUTEX_WAKE_OP) { + if (op == FUTEX_WAKE_OP) {
+ /* Need to munge the secondary operation (val3) */ + /* Need to munge the secondary operation (val3) */
@ -90,11 +90,12 @@ Index: qemu.bkp/linux-user/syscall.c
+ int oparg = (val3 >> 12) & 0xfff; + int oparg = (val3 >> 12) & 0xfff;
+ int cmparg = val3 & 0xfff; + int cmparg = val3 & 0xfff;
+ int shift = val3 & (FUTEX_OP_OPARG_SHIFT << 28); + int shift = val3 & (FUTEX_OP_OPARG_SHIFT << 28);
+ int oldval = tget32(uaddr2); + int oldval; if(get_user_u32(oldval, uaddr2))
+ return -TARGET_EFAULT;
+ if (shift) + if (shift)
+ oparg = 1 << oparg; + oparg = 1 << oparg;
+ +
+ tput32(uaddr2,futex_op(oldval, op2, oparg)); + put_user_u32(uaddr2,futex_op(oldval, op2, oparg));
+ retval = syscall(__NR_futex, g2h(uaddr), FUTEX_WAKE, val, 0, 0, 0); + retval = syscall(__NR_futex, g2h(uaddr), FUTEX_WAKE, val, 0, 0, 0);
+ if(futex_cmp(oldval, cmp, cmparg)) { + if(futex_cmp(oldval, cmp, cmparg)) {
+ retval = syscall(__NR_futex, g2h(uaddr2), FUTEX_WAKE, val2, 0, 0, 0); + retval = syscall(__NR_futex, g2h(uaddr2), FUTEX_WAKE, val2, 0, 0, 0);
@ -111,7 +112,7 @@ Index: qemu.bkp/linux-user/syscall.c
/* do_syscall() should always have a single exit point at the end so /* do_syscall() should always have a single exit point at the end so
that actions, such as logging of syscall results, can be performed. that actions, such as logging of syscall results, can be performed.
All errnos that do_syscall() returns must be -TARGET_<errcode>. */ All errnos that do_syscall() returns must be -TARGET_<errcode>. */
@@ -5116,6 +5204,11 @@ @@ -5116,6 +5205,11 @@
} }
#endif #endif

View File

@ -2,11 +2,12 @@ Index: qemu/linux-user/syscall.c
================================================================================ ================================================================================
--- qemu/linux-user/syscall.c --- qemu/linux-user/syscall.c
+++ qemu/linux-user/syscall.c +++ qemu/linux-user/syscall.c
@@ -3895,6 +3895,7 @@ @@ -3895,6 +3895,8 @@
case TARGET_NR_gettimeofday: case TARGET_NR_gettimeofday:
{ {
struct timeval tv; struct timeval tv;
+ target_to_host_timeval(&tv, arg1); + if(copy_from_user_timeval(&tv, arg1))
+ goto efault;
ret = get_errno(gettimeofday(&tv, NULL)); ret = get_errno(gettimeofday(&tv, NULL));
if (!is_error(ret)) { if (!is_error(ret)) {
host_to_target_timeval(arg1, &tv); host_to_target_timeval(arg1, &tv);

View File

@ -1,7 +1,7 @@
Index: qemu/linux-user/mmap.c Index: qemu/linux-user/mmap.c
================================================================================ ================================================================================
--- qemu/linux-user/mmap.c --- qemu-0.9.1/linux-user/mmap.c
+++ qemu/linux-user/mmap.c +++ qemu-0.9.1/linux-user/mmap.c
@@ -27,6 +27,10 @@ @@ -27,6 +27,10 @@
#include "qemu.h" #include "qemu.h"
@ -22,25 +22,7 @@ Index: qemu/linux-user/mmap.c
if (p == MAP_FAILED) if (p == MAP_FAILED)
return -1; return -1;
prot1 = prot; prot1 = prot;
@@ -251,7 +255,7 @@ @@ -422,7 +426,7 @@
host_len = HOST_PAGE_ALIGN(host_len + qemu_host_page_size
- qemu_real_host_page_size);
p = mmap(real_start ? g2h(real_start) : NULL,
- host_len, prot, flags, fd, host_offset);
+ host_len, prot, flags | MAP_32BIT, fd, host_offset);
if (p == MAP_FAILED)
return -1;
@@ -277,7 +281,7 @@
} else {
/* if not fixed, no need to do anything */
void *p = mmap(real_start ? g2h(real_start) : NULL,
- host_len, prot, flags, fd, host_offset);
+ host_len, prot, flags | MAP_32BIT, fd, host_offset);
if (p == MAP_FAILED)
return -1;
/* update start so that it points to the file position at 'offset' */
@@ -434,7 +438,7 @@
unsigned long host_addr; unsigned long host_addr;
/* XXX: use 5 args syscall */ /* XXX: use 5 args syscall */

View File

@ -1,13 +1,13 @@
Index: qemu-0.9.0/configure Index: qemu-0.9.0/configure
================================================================================ ================================================================================
--- qemu/configure --- qemu-0.9.1/configure
+++ qemu/configure +++ qemu-0.9.1/configure
@@ -506,7 +506,7 @@ @@ -526,7 +526,7 @@
if test -z "$target_list" ; then if test -z "$target_list" ; then
# these targets are portable # these targets are portable
if [ "$softmmu" = "yes" ] ; then if [ "$softmmu" = "yes" ] ; then
- target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu cris-softmmu z80-softmmu" - target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu sh4eb-softmmu cris-softmmu"
+ target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu cris-softmmu z80-softmmu" + target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu sh4eb-softmmu cris-softmmu z80-softmmu"
fi fi
# the following are Linux specific # the following are Linux specific
if [ "$linux_user" = "yes" ] ; then if [ "$linux_user" = "yes" ] ; then

View File

@ -1,18 +1,7 @@
Index: qemu.bkp/linux-user/main.c Index: qemu.bkp/linux-user/main.c
================================================================================ ================================================================================
--- qemu/linux-user/main.c --- qemu-0.9.1/linux-user/syscall.c
+++ qemu/linux-user/main.c +++ qemu-0.9.1/linux-user/syscall.c
@@ -156,7 +156,7 @@
p[1] = tswapl(e2);
}
-uint64_t gdt_table[6];
+uint64_t gdt_table[9];
uint64_t idt_table[256];
/* only dpl matters as we do only user space emulation */
--- qemu/linux-user/syscall.c
+++ qemu/linux-user/syscall.c
@@ -159,6 +159,7 @@ @@ -159,6 +159,7 @@
#define __NR_sys_tkill __NR_tkill #define __NR_sys_tkill __NR_tkill
#define __NR_sys_unlinkat __NR_unlinkat #define __NR_sys_unlinkat __NR_unlinkat
@ -31,88 +20,7 @@ Index: qemu.bkp/linux-user/main.c
#ifdef __NR_exit_group #ifdef __NR_exit_group
_syscall1(int,exit_group,int,error_code) _syscall1(int,exit_group,int,error_code)
#endif #endif
@@ -2249,6 +2253,80 @@ @@ -2705,15 +2783,20 @@
return ret;
}
+int do_set_thread_area(CPUX86State *env, abi_ulong ptr)
+{
+ uint64_t *gdt_table = g2h(env->gdt.base);
+ struct target_modify_ldt_ldt_s ldt_info;
+ struct target_modify_ldt_ldt_s *target_ldt_info;
+ int seg_32bit, contents, read_exec_only, limit_in_pages;
+ int seg_not_present, useable;
+ uint32_t *lp, entry_1, entry_2;
+ int i;
+
+ lock_user_struct(VERIFY_WRITE, target_ldt_info, ptr, 1);
+ ldt_info.entry_number = tswap32(target_ldt_info->entry_number);
+ ldt_info.base_addr = tswapl(target_ldt_info->base_addr);
+ ldt_info.limit = tswap32(target_ldt_info->limit);
+ ldt_info.flags = tswap32(target_ldt_info->flags);
+ if (ldt_info.entry_number == -1) {
+ for (i=6; i<8; i++)
+ if (gdt_table[i] == 0) {
+ ldt_info.entry_number = i;
+ target_ldt_info->entry_number = tswap32(i);
+ break;
+ }
+ }
+ unlock_user_struct(target_ldt_info, ptr, 0);
+
+ if (ldt_info.entry_number < 6 || ldt_info.entry_number > 8)
+ return -EINVAL;
+ seg_32bit = ldt_info.flags & 1;
+ contents = (ldt_info.flags >> 1) & 3;
+ read_exec_only = (ldt_info.flags >> 3) & 1;
+ limit_in_pages = (ldt_info.flags >> 4) & 1;
+ seg_not_present = (ldt_info.flags >> 5) & 1;
+ useable = (ldt_info.flags >> 6) & 1;
+
+ if (contents == 3) {
+ if (seg_not_present == 0)
+ return -EINVAL;
+ }
+
+ /* NOTE: same code as Linux kernel */
+ /* Allow LDTs to be cleared by the user. */
+ if (ldt_info.base_addr == 0 && ldt_info.limit == 0) {
+ if ((contents == 0 &&
+ read_exec_only == 1 &&
+ seg_32bit == 0 &&
+ limit_in_pages == 0 &&
+ seg_not_present == 1 &&
+ useable == 0 )) {
+ entry_1 = 0;
+ entry_2 = 0;
+ goto install;
+ }
+ }
+
+ entry_1 = ((ldt_info.base_addr & 0x0000ffff) << 16) |
+ (ldt_info.limit & 0x0ffff);
+ entry_2 = (ldt_info.base_addr & 0xff000000) |
+ ((ldt_info.base_addr & 0x00ff0000) >> 16) |
+ (ldt_info.limit & 0xf0000) |
+ ((read_exec_only ^ 1) << 9) |
+ (contents << 10) |
+ ((seg_not_present ^ 1) << 15) |
+ (seg_32bit << 22) |
+ (limit_in_pages << 23) |
+ (useable << 20) |
+ 0x7000;
+
+ /* Install the new entry ... */
+install:
+ lp = (uint32_t *)(gdt_table + ldt_info.entry_number);
+ lp[0] = tswap32(entry_1);
+ lp[1] = tswap32(entry_2);
+ return 0;
+}
#endif /* defined(TARGET_I386) */
/* this stack is the equivalent of the kernel stack associated with a
@@ -2265,15 +2343,20 @@
/* do_fork() Must return host values and target errnos (unlike most /* do_fork() Must return host values and target errnos (unlike most
do_*() functions). */ do_*() functions). */
@ -134,7 +42,7 @@ Index: qemu.bkp/linux-user/main.c
memset(ts, 0, sizeof(TaskState)); memset(ts, 0, sizeof(TaskState));
new_stack = ts->stack; new_stack = ts->stack;
ts->used = 1; ts->used = 1;
@@ -2285,6 +2368,27 @@ @@ -2725,6 +2808,27 @@
#if defined(TARGET_I386) #if defined(TARGET_I386)
if (!newsp) if (!newsp)
newsp = env->regs[R_ESP]; newsp = env->regs[R_ESP];
@ -162,7 +70,7 @@ Index: qemu.bkp/linux-user/main.c
new_env->regs[R_ESP] = newsp; new_env->regs[R_ESP] = newsp;
new_env->regs[R_EAX] = 0; new_env->regs[R_EAX] = 0;
#elif defined(TARGET_ARM) #elif defined(TARGET_ARM)
@@ -2342,15 +2446,27 @@ @@ -2782,15 +2886,27 @@
#endif #endif
new_env->opaque = ts; new_env->opaque = ts;
#ifdef __ia64__ #ifdef __ia64__
@ -182,20 +90,20 @@ Index: qemu.bkp/linux-user/main.c
+ /* Store child thread ID at location parent_tidptr in parent and child memory. + /* Store child thread ID at location parent_tidptr in parent and child memory.
+ Currently this is only done in client memory */ + Currently this is only done in client memory */
+ if(flags & CLONE_PARENT_SETTID) { + if(flags & CLONE_PARENT_SETTID) {
+ tput32(parent_tidptr, parent_tid); + put_user_u32(parent_tidptr, parent_tid);
+ } + }
+ +
+ /* Store child thread ID at location child_tidptr in child memory. */ + /* Store child thread ID at location child_tidptr in child memory. */
+ if(flags & CLONE_CHILD_SETTID) { + if(flags & CLONE_CHILD_SETTID) {
+ if(ret==0) { /* only in client memory for fork() */ + if(ret==0) { /* only in client memory for fork() */
+ tput32(child_tidptr, gettid()); + put_user_u32(child_tidptr, gettid());
+ } else if(flags & CLONE_VM) { /* real threads need it too */ + } else if(flags & CLONE_VM) { /* real threads need it too */
+ tput32(child_tidptr, ret); + put_user_u32(child_tidptr, ret);
+ } + }
} }
return ret; return ret;
} }
@@ -2623,7 +2739,7 @@ @@ -3073,7 +3189,7 @@
_mcleanup(); _mcleanup();
#endif #endif
gdb_exit(cpu_env, arg1); gdb_exit(cpu_env, arg1);
@ -204,7 +112,7 @@ Index: qemu.bkp/linux-user/main.c
_exit(arg1); _exit(arg1);
ret = 0; /* avoid warning */ ret = 0; /* avoid warning */
break; break;
@@ -2671,7 +2787,7 @@ @@ -3115,7 +3231,7 @@
ret = do_brk(arg1); ret = do_brk(arg1);
break; break;
case TARGET_NR_fork: case TARGET_NR_fork:
@ -213,7 +121,7 @@ Index: qemu.bkp/linux-user/main.c
break; break;
#ifdef TARGET_NR_waitpid #ifdef TARGET_NR_waitpid
case TARGET_NR_waitpid: case TARGET_NR_waitpid:
@@ -4020,7 +4136,7 @@ @@ -4477,7 +4593,7 @@
ret = get_errno(fsync(arg1)); ret = get_errno(fsync(arg1));
break; break;
case TARGET_NR_clone: case TARGET_NR_clone:
@ -222,7 +130,7 @@ Index: qemu.bkp/linux-user/main.c
break; break;
#ifdef __NR_exit_group #ifdef __NR_exit_group
/* new thread calls */ /* new thread calls */
@@ -4419,7 +4535,7 @@ @@ -4897,7 +5013,7 @@
#endif #endif
#ifdef TARGET_NR_vfork #ifdef TARGET_NR_vfork
case TARGET_NR_vfork: case TARGET_NR_vfork:
@ -231,25 +139,3 @@ Index: qemu.bkp/linux-user/main.c
break; break;
#endif #endif
#ifdef TARGET_NR_ugetrlimit #ifdef TARGET_NR_ugetrlimit
@@ -4957,13 +5073,17 @@
#ifdef TARGET_NR_set_thread_area
case TARGET_NR_set_thread_area:
#ifdef TARGET_MIPS
- ((CPUMIPSState *) cpu_env)->tls_value = arg1;
- ret = 0;
- break;
+ ((CPUMIPSState *) cpu_env)->tls_value = arg1;
+ ret = 0;
+#else
+#ifdef TARGET_I386
+ ret = get_errno(do_set_thread_area(cpu_env, arg1));
#else
- goto unimplemented_nowarn;
+ goto unimplemented_nowarn;
#endif
#endif
+ break;
+#endif
#ifdef TARGET_NR_get_thread_area
case TARGET_NR_get_thread_area:
goto unimplemented_nowarn;

View File

@ -1,6 +1,6 @@
--- qemu/Makefile.target --- qemu-0.9.1/Makefile.target
+++ qemu/Makefile.target +++ qemu-0.9.1/Makefile.target
@@ -396,6 +396,9 @@ @@ -390,6 +390,9 @@
ifeq ($(findstring z80, $(TARGET_ARCH) $(ARCH)),z80) ifeq ($(findstring z80, $(TARGET_ARCH) $(ARCH)),z80)
LIBOBJS+=z80-dis.o LIBOBJS+=z80-dis.o
endif endif
@ -10,9 +10,9 @@
ifdef CONFIG_GDBSTUB ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o OBJS+=gdbstub.o
--- qemu/dis-asm.h --- qemu-0.9.1/dis-asm.h
+++ qemu/dis-asm.h +++ qemu-0.9.1/dis-asm.h
@@ -388,6 +388,7 @@ @@ -396,6 +396,7 @@
extern int print_insn_s390 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_s390 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_crisv32 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_crisv32 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_z80 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_z80 PARAMS ((bfd_vma, disassemble_info*));
@ -20,21 +20,8 @@
#if 0 #if 0
/* Fetch the disassembler for a given BFD, if that support is available. */ /* Fetch the disassembler for a given BFD, if that support is available. */
--- qemu/dyngen.c --- qemu-0.9.1/target-i386/translate.c
+++ qemu/dyngen.c +++ qemu-0.9.1/target-i386/translate.c
@@ -1495,8 +1495,8 @@
p = (void *)(p_end - 2);
if (p == p_start)
error("empty code for %s", name);
- if (get16((uint16_t *)p) != 0x07fe && get16((uint16_t *)p) != 0x07f4)
- error("br %%r14 expected at the end of %s", name);
+ if ((get16((uint16_t *)p) & 0xfff0) != 0x07f0)
+ error("br %%rX expected at the end of %s", name);
copy_size = p - p_start;
}
#elif defined(HOST_ALPHA)
--- qemu/target-i386/translate.c
+++ qemu/target-i386/translate.c
@@ -1795,7 +1795,11 @@ @@ -1795,7 +1795,11 @@
case CC_OP_SUBW: case CC_OP_SUBW:
case CC_OP_SUBL: case CC_OP_SUBL:

View File

@ -0,0 +1,74 @@
--- ./s390-dis.c 2007-08-01 15:11:55.000000000 +0200
+++ ./s390-dis.c 2005-08-22 21:27:46.000000000 +0200
@@ -1,23 +1,23 @@
/* s390-dis.c -- Disassemble S390 instructions
- Copyright 2000, 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU opcodes library.
+ This file is part of GDB, GAS and the GNU binutils.
- This library is free software; you can redistribute it and/or modify
+ This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- It is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this file; see the file COPYING. If not, write to the
- Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
#include <stdio.h>
#include "ansidecl.h"
@@ -399,23 +399,23 @@
/* s390-opc.c -- S390 opcode list
- Copyright 2000, 2001, 2003, 2007 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU opcodes library.
+ This file is part of GDB, GAS, and the GNU binutils.
- This library is free software; you can redistribute it and/or modify
+ This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
- It is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this file; see the file COPYING. If not, write to the
- Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
#include <stdio.h>
#include "ansidecl.h"

View File

@ -1,6 +1,6 @@
--- qemu/Makefile --- qemu-0.9.1/Makefile
+++ qemu/Makefile +++ qemu-0.9.1/Makefile
@@ -73,7 +73,7 @@ @@ -179,7 +179,7 @@
mkdir -p "$(DESTDIR)$(datadir)" mkdir -p "$(DESTDIR)$(datadir)"
for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \ for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
video.x openbios-sparc32 pxe-ne2k_pci.bin \ video.x openbios-sparc32 pxe-ne2k_pci.bin \
@ -9,9 +9,9 @@
$(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \ $(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
done done
ifndef CONFIG_WIN32 ifndef CONFIG_WIN32
--- qemu/Makefile.target --- qemu-0.9.1/Makefile.target
+++ qemu/Makefile.target +++ qemu-0.9.1/Makefile.target
@@ -348,6 +348,13 @@ @@ -342,6 +342,13 @@
endif endif
endif endif
@ -25,7 +25,7 @@
# NOTE: the disassembler code is only needed for debugging # NOTE: the disassembler code is only needed for debugging
LIBOBJS+=disas.o LIBOBJS+=disas.o
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386) ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
@@ -383,6 +390,9 @@ @@ -377,6 +384,9 @@
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390) ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
LIBOBJS+=s390-dis.o LIBOBJS+=s390-dis.o
endif endif
@ -35,9 +35,9 @@
ifdef CONFIG_GDBSTUB ifdef CONFIG_GDBSTUB
OBJS+=gdbstub.o OBJS+=gdbstub.o
@@ -531,6 +541,10 @@ @@ -512,6 +522,10 @@
VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
VL_OBJS+= m68k-semi.o VL_OBJS+= m68k-semi.o dummy_m68k.o
endif endif
+ifeq ($(TARGET_BASE_ARCH), z80) +ifeq ($(TARGET_BASE_ARCH), z80)
+VL_OBJS+= zx_spectrum.o zx_ula.o dma.o $(AUDIODRV) +VL_OBJS+= zx_spectrum.o zx_ula.o dma.o $(AUDIODRV)
@ -46,7 +46,7 @@
ifdef CONFIG_GDBSTUB ifdef CONFIG_GDBSTUB
VL_OBJS+=gdbstub.o VL_OBJS+=gdbstub.o
endif endif
@@ -641,9 +655,15 @@ @@ -608,9 +622,15 @@
helper.o: helper.c helper.o: helper.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
else else
@ -62,7 +62,7 @@
cpu-exec.o: cpu-exec.c cpu-exec.o: cpu-exec.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< $(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
@@ -667,6 +687,9 @@ @@ -634,6 +654,9 @@
ifneq ($(PROGS),) ifneq ($(PROGS),)
$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)" $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
endif endif
@ -72,8 +72,8 @@
ifneq ($(wildcard .depend),) ifneq ($(wildcard .depend),)
include .depend include .depend
--- qemu/configure --- qemu-0.9.1/configure
+++ qemu/configure +++ qemu-0.9.1/configure
@@ -89,6 +89,7 @@ @@ -89,6 +89,7 @@
dsound="no" dsound="no"
coreaudio="no" coreaudio="no"
@ -82,7 +82,7 @@
fmod="no" fmod="no"
fmod_lib="" fmod_lib=""
fmod_inc="" fmod_inc=""
@@ -264,6 +265,8 @@ @@ -270,6 +271,8 @@
;; ;;
--disable-vnc-tls) vnc_tls="no" --disable-vnc-tls) vnc_tls="no"
;; ;;
@ -91,7 +91,7 @@
--enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no" --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
;; ;;
--disable-slirp) slirp="no" --disable-slirp) slirp="no"
@@ -387,6 +390,7 @@ @@ -407,6 +410,7 @@
echo " --enable-fmod enable FMOD audio driver" echo " --enable-fmod enable FMOD audio driver"
echo " --enable-dsound enable DirectSound audio driver" echo " --enable-dsound enable DirectSound audio driver"
echo " --disable-vnc-tls disable TLS encryption for VNC server" echo " --disable-vnc-tls disable TLS encryption for VNC server"
@ -99,16 +99,7 @@
echo " --enable-system enable all system emulation targets" echo " --enable-system enable all system emulation targets"
echo " --disable-system disable all system emulation targets" echo " --disable-system disable all system emulation targets"
echo " --enable-linux-user enable all linux usermode emulation targets" echo " --enable-linux-user enable all linux usermode emulation targets"
@@ -502,7 +506,7 @@ @@ -739,6 +743,7 @@
if test -z "$target_list" ; then
# these targets are portable
if [ "$softmmu" = "yes" ] ; then
- target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu cris-softmmu"
+ target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu cris-softmmu z80-softmmu"
fi
# the following are Linux specific
if [ "$linux_user" = "yes" ] ; then
@@ -718,6 +722,7 @@
if test -n "$sparc_cpu"; then if test -n "$sparc_cpu"; then
echo "Target Sparc Arch $sparc_cpu" echo "Target Sparc Arch $sparc_cpu"
fi fi
@ -116,7 +107,7 @@
echo "kqemu support $kqemu" echo "kqemu support $kqemu"
echo "Documentation $build_docs" echo "Documentation $build_docs"
[ ! -z "$uname_release" ] && \ [ ! -z "$uname_release" ] && \
@@ -896,6 +901,10 @@ @@ -917,6 +922,10 @@
echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
echo "#define CONFIG_VNC_TLS 1" >> $config_h echo "#define CONFIG_VNC_TLS 1" >> $config_h
fi fi
@ -127,7 +118,7 @@
qemu_version=`head $source_path/VERSION` qemu_version=`head $source_path/VERSION`
echo "VERSION=$qemu_version" >>$config_mak echo "VERSION=$qemu_version" >>$config_mak
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
@@ -1109,6 +1118,11 @@ @@ -1146,6 +1155,11 @@
echo "TARGET_ARCH=alpha" >> $config_mak echo "TARGET_ARCH=alpha" >> $config_mak
echo "#define TARGET_ARCH \"alpha\"" >> $config_h echo "#define TARGET_ARCH \"alpha\"" >> $config_h
echo "#define TARGET_ALPHA 1" >> $config_h echo "#define TARGET_ALPHA 1" >> $config_h
@ -139,9 +130,9 @@
else else
echo "Unsupported target CPU" echo "Unsupported target CPU"
exit 1 exit 1
--- qemu/cpu-exec.c --- qemu-0.9.1/cpu-exec.c
+++ qemu/cpu-exec.c +++ qemu-0.9.1/cpu-exec.c
@@ -214,6 +214,10 @@ @@ -261,6 +261,10 @@
flags = 0; flags = 0;
cs_base = 0; cs_base = 0;
pc = env->pc; pc = env->pc;
@ -152,7 +143,7 @@
#else #else
#error unsupported CPU #error unsupported CPU
#endif #endif
@@ -290,6 +294,15 @@ @@ -331,6 +335,15 @@
#elif defined(TARGET_SH4) #elif defined(TARGET_SH4)
#elif defined(TARGET_CRIS) #elif defined(TARGET_CRIS)
/* XXXXX */ /* XXXXX */
@ -168,9 +159,9 @@
#else #else
#error unsupported target CPU #error unsupported target CPU
#endif #endif
@@ -541,6 +554,13 @@ @@ -573,6 +586,13 @@
env->exception_index = env->pending_vector;
do_interrupt(1); do_interrupt(1);
BREAK_CHAIN;
} }
+#elif defined(TARGET_Z80) +#elif defined(TARGET_Z80)
+ if (interrupt_request & CPU_INTERRUPT_HARD) { + if (interrupt_request & CPU_INTERRUPT_HARD) {
@ -182,7 +173,7 @@
#endif #endif
/* Don't use the cached interupt_request value, /* Don't use the cached interupt_request value,
do_interrupt may have updated the EXITTB flag. */ do_interrupt may have updated the EXITTB flag. */
@@ -590,6 +610,8 @@ @@ -618,6 +638,8 @@
cpu_dump_state(env, logfile, fprintf, 0); cpu_dump_state(env, logfile, fprintf, 0);
#elif defined(TARGET_CRIS) #elif defined(TARGET_CRIS)
cpu_dump_state(env, logfile, fprintf, 0); cpu_dump_state(env, logfile, fprintf, 0);
@ -191,7 +182,7 @@
#else #else
#error unsupported target CPU #error unsupported target CPU
#endif #endif
@@ -785,6 +807,9 @@ @@ -722,6 +744,9 @@
#elif defined(TARGET_ALPHA) #elif defined(TARGET_ALPHA)
#elif defined(TARGET_CRIS) #elif defined(TARGET_CRIS)
/* XXXXX */ /* XXXXX */
@ -201,9 +192,9 @@
#else #else
#error unsupported target CPU #error unsupported target CPU
#endif #endif
--- qemu/dis-asm.h --- qemu-0.9.1/dis-asm.h
+++ qemu/dis-asm.h +++ qemu-0.9.1/dis-asm.h
@@ -387,6 +387,7 @@ @@ -395,6 +395,7 @@
extern int print_insn_alpha PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_alpha PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_s390 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_s390 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_crisv32 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_crisv32 PARAMS ((bfd_vma, disassemble_info*));
@ -211,8 +202,8 @@
#if 0 #if 0
/* Fetch the disassembler for a given BFD, if that support is available. */ /* Fetch the disassembler for a given BFD, if that support is available. */
--- qemu/disas.c --- qemu-0.9.1/disas.c
+++ qemu/disas.c +++ qemu-0.9.1/disas.c
@@ -208,6 +208,8 @@ @@ -208,6 +208,8 @@
#elif defined(TARGET_CRIS) #elif defined(TARGET_CRIS)
disasm_info.mach = bfd_mach_cris_v32; disasm_info.mach = bfd_mach_cris_v32;
@ -222,9 +213,9 @@
#else #else
fprintf(out, "0x" TARGET_FMT_lx fprintf(out, "0x" TARGET_FMT_lx
": Asm output not supported on this arch\n", code); ": Asm output not supported on this arch\n", code);
--- qemu/exec-all.h --- qemu-0.9.1/exec-all.h
+++ qemu/exec-all.h +++ qemu-0.9.1/exec-all.h
@@ -82,7 +82,7 @@ @@ -52,7 +52,7 @@
typedef void (GenOpFunc2)(long, long); typedef void (GenOpFunc2)(long, long);
typedef void (GenOpFunc3)(long, long, long); typedef void (GenOpFunc3)(long, long, long);
@ -233,9 +224,9 @@
void optimize_flags_init(void); void optimize_flags_init(void);
--- qemu/exec.c --- qemu-0.9.1/exec.c
+++ qemu/exec.c +++ qemu-0.9.1/exec.c
@@ -709,6 +709,9 @@ @@ -731,6 +731,9 @@
current_flags |= (env->eflags & (IOPL_MASK | TF_MASK | VM_MASK)); current_flags |= (env->eflags & (IOPL_MASK | TF_MASK | VM_MASK));
current_cs_base = (target_ulong)env->segs[R_CS].base; current_cs_base = (target_ulong)env->segs[R_CS].base;
current_pc = current_cs_base + env->eip; current_pc = current_cs_base + env->eip;
@ -245,9 +236,9 @@
#else #else
#error unsupported CPU #error unsupported CPU
#endif #endif
--- qemu/gdbstub.c --- qemu-0.9.1/gdbstub.c
+++ qemu/gdbstub.c +++ qemu-0.9.1/gdbstub.c
@@ -853,6 +853,34 @@ @@ -856,6 +856,34 @@
for (i = 0; i < 16; i++) LOAD(env->regs[i]); for (i = 0; i < 16; i++) LOAD(env->regs[i]);
LOAD (env->pc); LOAD (env->pc);
} }
@ -282,9 +273,21 @@
#else #else
static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf) static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf)
{ {
--- qemu/hw/zx_spectrum.c --- qemu-0.9.1/hw/boards.h
+++ qemu/hw/zx_spectrum.c +++ qemu-0.9.1/hw/boards.h
@@ -0,0 +1,303 @@ @@ -26,6 +26,9 @@
extern QEMUMachine pc_machine;
extern QEMUMachine isapc_machine;
+/* z80.c */
+extern QEMUMachine z80pc_machine;
+
/* ppc.c */
extern QEMUMachine prep_machine;
extern QEMUMachine core99_machine;
--- qemu-0.9.1/hw/zx_spectrum.c
+++ qemu-0.9.1/hw/zx_spectrum.c
@@ -0,0 +1,308 @@
+/* +/*
+ * QEMU ZX Spectrum Emulator + * QEMU ZX Spectrum Emulator
+ * + *
@ -309,7 +312,12 @@
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE. + * THE SOFTWARE.
+ */ + */
+#include "vl.h" +#include "hw.h"
+#include "console.h"
+#include "sysemu.h"
+#include "qemu-timer.h"
+#include "zx_ula.h"
+#include "boards.h"
+#ifdef CONFIG_LIBSPECTRUM +#ifdef CONFIG_LIBSPECTRUM
+#include <libspectrum.h> +#include <libspectrum.h>
+#endif +#endif
@ -467,7 +475,7 @@
+ CPUState *env; + CPUState *env;
+ +
+ /* init CPUs */ + /* init CPUs */
+ env = cpu_init(); + env = cpu_init("z80");
+ zx_env = env; // XXX + zx_env = env; // XXX
+ register_savevm("cpu", 0, 4, cpu_save, cpu_load, env); + register_savevm("cpu", 0, 4, cpu_save, cpu_load, env);
+ qemu_register_reset(main_cpu_reset, env); + qemu_register_reset(main_cpu_reset, env);
@ -588,9 +596,9 @@
+ "Z80 Machine", + "Z80 Machine",
+ zx_spectrum_init, + zx_spectrum_init,
+}; +};
--- qemu/hw/zx_ula.c --- qemu-0.9.1/hw/zx_ula.c
+++ qemu/hw/zx_ula.c +++ qemu-0.9.1/hw/zx_ula.c
@@ -0,0 +1,355 @@ @@ -0,0 +1,357 @@
+/* +/*
+ * QEMU ZX Spectrum Video Emulation. + * QEMU ZX Spectrum Video Emulation.
+ * + *
@ -616,7 +624,9 @@
+ * THE SOFTWARE. + * THE SOFTWARE.
+ */ + */
+ +
+#include "vl.h" +#include "hw.h"
+#include "console.h"
+#include "zx_ula.h"
+ +
+typedef struct { +typedef struct {
+ DisplayState *ds; + DisplayState *ds;
@ -946,8 +956,15 @@
+ /* ZX Spectrum ULA */ + /* ZX Spectrum ULA */
+ register_ioport_write(0, 0x10000, 1, io_spectrum_write, s); + register_ioport_write(0, 0x10000, 1, io_spectrum_write, s);
+} +}
--- qemu/target-z80/cpu.h --- qemu-0.9.1/hw/zx_ula.h
+++ qemu/target-z80/cpu.h +++ qemu-0.9.1/hw/zx_ula.h
@@ -0,0 +1,4 @@
+/* zx_ula.c */
+void zx_ula_init(DisplayState *ds, uint8_t *zx_screen_base,
+ unsigned long zx_ram_offset);
+void zx_set_flash_dirty(void);
--- qemu-0.9.1/target-z80/cpu.h
+++ qemu-0.9.1/target-z80/cpu.h
@@ -0,0 +1,252 @@ @@ -0,0 +1,252 @@
+/* +/*
+ * Z80 virtual CPU header + * Z80 virtual CPU header
@ -1152,7 +1169,7 @@
+ struct APICState *apic_state; + struct APICState *apic_state;
+} CPUZ80State; +} CPUZ80State;
+ +
+CPUZ80State *cpu_z80_init(void); +CPUZ80State *cpu_z80_init(const char* cpu_model);
+int cpu_z80_exec(CPUZ80State *s); +int cpu_z80_exec(CPUZ80State *s);
+void cpu_z80_close(CPUZ80State *s); +void cpu_z80_close(CPUZ80State *s);
+int cpu_get_pic_interrupt(CPUZ80State *s); +int cpu_get_pic_interrupt(CPUZ80State *s);
@ -1201,8 +1218,8 @@
+#include "cpu-all.h" +#include "cpu-all.h"
+ +
+#endif /* CPU_Z80_H */ +#endif /* CPU_Z80_H */
--- qemu/target-z80/exec.h --- qemu-0.9.1/target-z80/exec.h
+++ qemu/target-z80/exec.h +++ qemu-0.9.1/target-z80/exec.h
@@ -0,0 +1,372 @@ @@ -0,0 +1,372 @@
+/* +/*
+ * Z80 execution defines + * Z80 execution defines
@ -1576,8 +1593,8 @@
+ } + }
+ return EXCP_HALTED; + return EXCP_HALTED;
+} +}
--- qemu/target-z80/helper.c --- qemu-0.9.1/target-z80/helper.c
+++ qemu/target-z80/helper.c +++ qemu-0.9.1/target-z80/helper.c
@@ -0,0 +1,281 @@ @@ -0,0 +1,281 @@
+/* +/*
+ * Z80 helpers + * Z80 helpers
@ -1860,8 +1877,8 @@
+ fl & 0x01 ? 'C' : '-', + fl & 0x01 ? 'C' : '-',
+ env->imode, env->iff1, env->iff2, env->regs[R_I], env->regs[R_R]); + env->imode, env->iff1, env->iff2, env->regs[R_I], env->regs[R_R]);
+} +}
--- qemu/target-z80/helper2.c --- qemu-0.9.1/target-z80/helper2.c
+++ qemu/target-z80/helper2.c +++ qemu-0.9.1/target-z80/helper2.c
@@ -0,0 +1,170 @@ @@ -0,0 +1,170 @@
+/* +/*
+ * Z80 helpers (without register variable usage) + * Z80 helpers (without register variable usage)
@ -1896,7 +1913,7 @@
+ +
+//#define DEBUG_MMU +//#define DEBUG_MMU
+ +
+CPUZ80State *cpu_z80_init(void) +CPUZ80State *cpu_z80_init(const char* cpu_model)
+{ +{
+ CPUZ80State *env; + CPUZ80State *env;
+ static int inited; + static int inited;
@ -2033,8 +2050,8 @@
+ paddr = (pte & TARGET_PAGE_MASK) + page_offset; + paddr = (pte & TARGET_PAGE_MASK) + page_offset;
+ return paddr; + return paddr;
+} +}
--- qemu/target-z80/op.c --- qemu-0.9.1/target-z80/op.c
+++ qemu/target-z80/op.c +++ qemu-0.9.1/target-z80/op.c
@@ -0,0 +1,1175 @@ @@ -0,0 +1,1175 @@
+/* +/*
+ * Z80 micro operations + * Z80 micro operations
@ -3211,8 +3228,8 @@
+{ +{
+ cpu_unlock(); + cpu_unlock();
+} +}
--- qemu/target-z80/opreg_template.h --- qemu-0.9.1/target-z80/opreg_template.h
+++ qemu/target-z80/opreg_template.h +++ qemu-0.9.1/target-z80/opreg_template.h
@@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
+/* +/*
+ * Z80 micro operations (templates for various register related + * Z80 micro operations (templates for various register related
@ -3288,8 +3305,8 @@
+{ +{
+ REG = (uint16_t)T1; + REG = (uint16_t)T1;
+} +}
--- qemu/target-z80/opreg_template2.h --- qemu-0.9.1/target-z80/opreg_template2.h
+++ qemu/target-z80/opreg_template2.h +++ qemu-0.9.1/target-z80/opreg_template2.h
@@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
+/* +/*
+ * Z80 micro operations (templates for various register related + * Z80 micro operations (templates for various register related
@ -3354,8 +3371,8 @@
+ REGHIGH = (uint16_t)(T1 >> 8); + REGHIGH = (uint16_t)(T1 >> 8);
+ REGLOW = (uint16_t)T1; + REGLOW = (uint16_t)T1;
+} +}
--- qemu/target-z80/ops_mem.h --- qemu-0.9.1/target-z80/ops_mem.h
+++ qemu/target-z80/ops_mem.h +++ qemu-0.9.1/target-z80/ops_mem.h
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
+void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T0_A0)(void) +void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T0_A0)(void)
+{ +{
@ -3416,8 +3433,8 @@
+} +}
+ +
+#undef MEMSUFFIX +#undef MEMSUFFIX
--- qemu/target-z80/translate.c --- qemu-0.9.1/target-z80/translate.c
+++ qemu/target-z80/translate.c +++ qemu-0.9.1/target-z80/translate.c
@@ -0,0 +1,1600 @@ @@ -0,0 +1,1600 @@
+/* +/*
+ * Z80 translation + * Z80 translation
@ -5019,9 +5036,9 @@
+ return gen_intermediate_code_internal(env, tb, 1); + return gen_intermediate_code_internal(env, tb, 1);
+} +}
+ +
--- qemu/vl.c --- qemu-0.9.1/vl.c
+++ qemu/vl.c +++ qemu-0.9.1/vl.c
@@ -6253,6 +6253,19 @@ @@ -6750,6 +6750,19 @@
return 0; return 0;
} }
@ -5040,9 +5057,9 @@
+ +
#else #else
#warning No CPU save/restore functions //#warning No CPU save/restore functions
@@ -7420,6 +7433,8 @@ @@ -7924,6 +7937,8 @@
qemu_register_machine(&an5206_machine); qemu_register_machine(&dummy_m68k_machine);
#elif defined(TARGET_CRIS) #elif defined(TARGET_CRIS)
qemu_register_machine(&bareetraxfs_machine); qemu_register_machine(&bareetraxfs_machine);
+#elif defined(TARGET_Z80) +#elif defined(TARGET_Z80)
@ -5050,32 +5067,8 @@
#else #else
#error unsupported CPU #error unsupported CPU
#endif #endif
--- qemu/vl.h --- qemu-0.9.1/z80-dis.c
+++ qemu/vl.h +++ qemu-0.9.1/z80-dis.c
@@ -967,6 +967,11 @@
void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base,
unsigned long vga_ram_offset, int vga_ram_size);
+/* zx_ula.c */
+void zx_ula_init(DisplayState *ds, uint8_t *zx_screen_base,
+ unsigned long zx_ram_offset);
+void zx_set_flash_dirty(void);
+
/* sdl.c */
void sdl_display_init(DisplayState *ds, int full_screen, int no_frame);
@@ -1175,6 +1180,9 @@
extern QEMUMachine isapc_machine;
extern int fd_bootchk;
+/* z80.c??? */
+extern QEMUMachine z80pc_machine;
+
void ioport_set_a20(int enable);
int ioport_get_a20(void);
--- qemu/z80-dis.c
+++ qemu/z80-dis.c
@@ -0,0 +1,621 @@ @@ -0,0 +1,621 @@
+/* Print Z80 and R800 instructions +/* Print Z80 and R800 instructions
+ Copyright 2005 Free Software Foundation, Inc. + Copyright 2005 Free Software Foundation, Inc.

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Thu Jan 17 15:19:54 CET 2008 - uli@suse.de
- update -> 0.9.1
- TFTP booting from host directory (Anthony Liguori, Erwan Velu)
- Tap device emulation for Solaris (Sittichai Palanisong)
- Monitor multiplexing to several I/O channels (Jason Wessel)
- ds1225y nvram support (Herve Poussineau)
- CPU model selection support (J. Mayer, Paul Brook, Herve Poussineau)
- Several Sparc fixes (Aurelien Jarno, Blue Swirl, Robert Reif)
- MIPS 64-bit FPU support (Thiemo Seufer)
- Xscale PDA emulation (Andrzej Zaborowski)
- ColdFire system emulation (Paul Brook)
- Improved SH4 support (Magnus Damm)
- MIPS64 support (Aurelien Jarno, Thiemo Seufer)
- Preliminary Alpha guest support (J. Mayer)
- Gumstix boards: connex and verdex emulation (Thorsten Zitterell)
- Intel mainstone II board emulation (Armin Kuster)
- VMware SVGA II graphics card support (Andrzej Zaborowski)
- revert s390-dis.c to last GPLv2 version
- reenabled qemu-system-ppcemb
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Dec 10 14:29:42 CET 2007 - uli@suse.de Mon Dec 10 14:29:42 CET 2007 - uli@suse.de

132
qemu.spec
View File

@ -1,7 +1,7 @@
# #
# spec file for package qemu (Version 0.9.0.cvs) # spec file for package qemu (Version 0.9.1)
# #
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine # This file and all modifications and additions to the pristine
# package are under the same license as the package itself. # package are under the same license as the package itself.
# #
@ -16,8 +16,8 @@ Url: http://fabrice.bellard.free.fr/qemu/
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
Group: System/Emulators/PC Group: System/Emulators/PC
Summary: Universal CPU emulator Summary: Universal CPU emulator
Version: 0.9.0.cvs Version: 0.9.1
Release: 57 Release: 1
Source: %name-%version.tar.bz2 Source: %name-%version.tar.bz2
#Patch400: qemu-0.7.0-gcc4-dot-syms.patch #Patch400: qemu-0.7.0-gcc4-dot-syms.patch
#Patch401: qemu-0.8.0-gcc4-hacks.patch #Patch401: qemu-0.8.0-gcc4-hacks.patch
@ -57,6 +57,7 @@ Patch70: qemu-m68k.diff
Patch71: qemu-s390.patch Patch71: qemu-s390.patch
Patch82: qemu-cvs-svm2.patch Patch82: qemu-cvs-svm2.patch
Patch83: qemu-cvs-ppcspe.patch Patch83: qemu-cvs-ppcspe.patch
Patch84: qemu-s390dis-license.patch
Source200: kvm_bios.bin Source200: kvm_bios.bin
Source201: zx-rom.bin Source201: zx-rom.bin
Source202: COPYING.zx-rom Source202: COPYING.zx-rom
@ -118,7 +119,7 @@ Authors:
Fabrice Bellard <fabrice.bellard@free.fr> Fabrice Bellard <fabrice.bellard@free.fr>
%prep %prep
%setup -n qemu -q -a601 %setup -q -a601
#%patch400 -p1 #%patch400 -p1
#%patch401 -p1 #%patch401 -p1
#%patch402 -p1 #%patch402 -p1
@ -159,6 +160,7 @@ Authors:
%patch68 -p1 %patch68 -p1
%endif %endif
%patch83 %patch83
%patch84
%if 1 %if 1
cd gcc-3.3.5 cd gcc-3.3.5
%patch600 %patch600
@ -266,7 +268,6 @@ make clean
--static --disable-gcc-check \ --static --disable-gcc-check \
--extra-cflags="$QEMU_OPT_FLAGS" --extra-cflags="$QEMU_OPT_FLAGS"
make %{?jobs:-j%{jobs}} make %{?jobs:-j%{jobs}}
mv ppc64abi32-linux-user/qemu-ppc64 ppc64abi32-linux-user/qemu-ppc64abi32
make qemu-img make qemu-img
%install %install
@ -312,9 +313,28 @@ rm -rf %{gcc33tmp}
%endif %endif
%changelog %changelog
* Mon Dec 10 2007 - uli@suse.de * Thu Jan 17 2008 uli@suse.de
- update -> 0.9.1
- TFTP booting from host directory (Anthony Liguori, Erwan Velu)
- Tap device emulation for Solaris (Sittichai Palanisong)
- Monitor multiplexing to several I/O channels (Jason Wessel)
- ds1225y nvram support (Herve Poussineau)
- CPU model selection support (J. Mayer, Paul Brook, Herve Poussineau)
- Several Sparc fixes (Aurelien Jarno, Blue Swirl, Robert Reif)
- MIPS 64-bit FPU support (Thiemo Seufer)
- Xscale PDA emulation (Andrzej Zaborowski)
- ColdFire system emulation (Paul Brook)
- Improved SH4 support (Magnus Damm)
- MIPS64 support (Aurelien Jarno, Thiemo Seufer)
- Preliminary Alpha guest support (J. Mayer)
- Gumstix boards: connex and verdex emulation (Thorsten Zitterell)
- Intel mainstone II board emulation (Armin Kuster)
- VMware SVGA II graphics card support (Andrzej Zaborowski)
- revert s390-dis.c to last GPLv2 version
- reenabled qemu-system-ppcemb
* Mon Dec 10 2007 uli@suse.de
- fixed open() usage with O_CREAT - fixed open() usage with O_CREAT
* Tue Nov 13 2007 - uli@suse.de * Tue Nov 13 2007 uli@suse.de
- update -> current CVS: - update -> current CVS:
- Read-only support for Parallels disk images (Alex Beregszaszi) - Read-only support for Parallels disk images (Alex Beregszaszi)
- CRIS emulation (Edgar E. Iglesias) - CRIS emulation (Edgar E. Iglesias)
@ -323,30 +343,30 @@ rm -rf %{gcc33tmp}
- Strace for Linux userland emulation (Stuart Anderson, Thayne Harbaugh) - Strace for Linux userland emulation (Stuart Anderson, Thayne Harbaugh)
- OMAP310 MPU emulation plus Palm T|E machine (Andrzej Zaborowski) - OMAP310 MPU emulation plus Palm T|E machine (Andrzej Zaborowski)
- ARM v6, v7, NEON SIMD and SMP emulation (Paul Brook/CodeSourcery) - ARM v6, v7, NEON SIMD and SMP emulation (Paul Brook/CodeSourcery)
* Fri Oct 12 2007 - ro@suse.de * Fri Oct 12 2007 ro@suse.de
- hack to fix build: undef DEBUG_BLOCK for now - hack to fix build: undef DEBUG_BLOCK for now
* Fri Sep 28 2007 - agraf@suse.de * Fri Sep 28 2007 agraf@suse.de
- fix SVM support (Alexander Graf) - fix SVM support (Alexander Graf)
* Thu Sep 13 2007 - agraf@suse.de * Thu Sep 13 2007 agraf@suse.de
- add SVM emulation support (Alexander Graf) - add SVM emulation support (Alexander Graf)
- fix a misassumption in the s390 fix (uli) - fix a misassumption in the s390 fix (uli)
- allow more IDE power management (Ben Guthro) - allow more IDE power management (Ben Guthro)
- log any I/O error and perform automatic read retry for CDrom (Ben Guthro) - log any I/O error and perform automatic read retry for CDrom (Ben Guthro)
- fix Coherent guest support (Jan Jezabek) - fix Coherent guest support (Jan Jezabek)
- fix several Darwin guest issues (Filip Navara) - fix several Darwin guest issues (Filip Navara)
* Mon Aug 20 2007 - agraf@suse.de * Mon Aug 20 2007 agraf@suse.de
- fix ATAPI bug when using libata (Brandon Philips) (#291775) - fix ATAPI bug when using libata (Brandon Philips) (#291775)
* Sat Aug 11 2007 - olh@suse.de * Sat Aug 11 2007 olh@suse.de
- disable only SNDRV_SB_CSP_IOCTL_LOAD_CODE for _IOC_SIZEBITS < 14 - disable only SNDRV_SB_CSP_IOCTL_LOAD_CODE for _IOC_SIZEBITS < 14
* Thu Aug 09 2007 - olh@suse.de * Thu Aug 09 2007 olh@suse.de
- disable some alsa SB ioctl declarations - disable some alsa SB ioctl declarations
* Mon Aug 06 2007 - olh@suse.de * Mon Aug 06 2007 olh@suse.de
- remove inclusion of linux/compiler.h - remove inclusion of linux/compiler.h
* Mon Jul 30 2007 - uli@suse.de * Mon Jul 30 2007 uli@suse.de
- fixed for S/390 - fixed for S/390
* Tue Jul 10 2007 - schwab@suse.de * Tue Jul 10 2007 schwab@suse.de
- Add (incomplete) m68k emulation. - Add (incomplete) m68k emulation.
* Mon Jul 09 2007 - agraf@suse.de * Mon Jul 09 2007 agraf@suse.de
- included alsa support in qemu-user - included alsa support in qemu-user
- update to current cvs - update to current cvs
- TFTP booting from host directory (Anthony Liguori, Erwan Velu) - TFTP booting from host directory (Anthony Liguori, Erwan Velu)
@ -362,14 +382,14 @@ rm -rf %{gcc33tmp}
- MIPS64 support (Aurelien Jarno, Thiemo Seufer) - MIPS64 support (Aurelien Jarno, Thiemo Seufer)
- Preliminary Alpha guest support (J. Mayer) - Preliminary Alpha guest support (J. Mayer)
- IPC fixes - IPC fixes
* Wed Jun 20 2007 - agraf@suse.de * Wed Jun 20 2007 agraf@suse.de
- applied proper fix for x86_64 and the MAP_32BIT flag - applied proper fix for x86_64 and the MAP_32BIT flag
* Wed Jun 20 2007 - uli@suse.de * Wed Jun 20 2007 uli@suse.de
- added secfixes (bug #252519) - added secfixes (bug #252519)
* Thu Jun 14 2007 - agraf@suse.de * Thu Jun 14 2007 agraf@suse.de
- made wine work (set FS register to 0 on init) - made wine work (set FS register to 0 on init)
- suppressed robust_list warnings - suppressed robust_list warnings
* Wed Jun 13 2007 - agraf@suse.de * Wed Jun 13 2007 agraf@suse.de
- made flash player 9 work on ppc - made flash player 9 work on ppc
- fixed FUTEX_WAKE_OP on machines where endianness differs - fixed FUTEX_WAKE_OP on machines where endianness differs
- made mmap on x86_64 use the MAP_32BIT flag - made mmap on x86_64 use the MAP_32BIT flag
@ -377,7 +397,7 @@ rm -rf %{gcc33tmp}
- removed an annoying debug message for forking - removed an annoying debug message for forking
- implemented sched_getaffinity syscall - implemented sched_getaffinity syscall
- fixed configure call so it takes gcc3 again - fixed configure call so it takes gcc3 again
* Wed Jun 13 2007 - uli@suse.de * Wed Jun 13 2007 uli@suse.de
- support "vga=" parameter (Pascal Terjan) - support "vga=" parameter (Pascal Terjan)
- direct jump support for x86-64 (Gwenole Beauchesne) - direct jump support for x86-64 (Gwenole Beauchesne)
- fix chaining of CPU instances (Gwenole Beauchesne) - fix chaining of CPU instances (Gwenole Beauchesne)
@ -386,7 +406,7 @@ rm -rf %{gcc33tmp}
- KVM support - KVM support
- Z80/ZX Spectrum emulation (Stuart Brady) - Z80/ZX Spectrum emulation (Stuart Brady)
- GCC4 support postponed (breaks x86-64 on i386) - GCC4 support postponed (breaks x86-64 on i386)
* Mon Jun 11 2007 - agraf@suse.de * Mon Jun 11 2007 agraf@suse.de
- implemented TLS support on i386 so qemu-user can be used to run - implemented TLS support on i386 so qemu-user can be used to run
with current libc versions (partly done by David Woodhouse, with current libc versions (partly done by David Woodhouse,
fixed by Alexander Graf) fixed by Alexander Graf)
@ -395,11 +415,11 @@ rm -rf %{gcc33tmp}
- disable AF_NETLINK in qemu-user (endianness problems) - disable AF_NETLINK in qemu-user (endianness problems)
- applied fast path mangling patch from Kirill A. Shutemov - applied fast path mangling patch from Kirill A. Shutemov
- applied strace patch for debugging (by Stuart R. Anderson) - applied strace patch for debugging (by Stuart R. Anderson)
* Wed Apr 04 2007 - agraf@suse.de * Wed Apr 04 2007 agraf@suse.de
- fixed initrd loading on x86 - fixed initrd loading on x86
* Thu Mar 29 2007 - ro@suse.de * Thu Mar 29 2007 ro@suse.de
- added bison to BuildRequires - added bison to BuildRequires
* Tue Feb 20 2007 - uli@suse.de * Tue Feb 20 2007 uli@suse.de
- added better fix by Robert Schiele (bug #241950) - added better fix by Robert Schiele (bug #241950)
- update -> 0.9.0 - update -> 0.9.0
- Support for relative paths in backing files for disk images - Support for relative paths in backing files for disk images
@ -417,18 +437,18 @@ rm -rf %{gcc33tmp}
- Mouse relative offset VNC extension (Anthony Liguori) - Mouse relative offset VNC extension (Anthony Liguori)
- PXE boot support (Anthony Liguori) - PXE boot support (Anthony Liguori)
- '-daemonize' option (Anthony Liguori) - '-daemonize' option (Anthony Liguori)
* Tue Feb 06 2007 - uli@suse.de * Tue Feb 06 2007 uli@suse.de
- added fix by Robert Schiele to work without usbdevfs - added fix by Robert Schiele to work without usbdevfs
(bug #241950) (bug #241950)
* Fri Feb 02 2007 - ro@suse.de * Fri Feb 02 2007 ro@suse.de
- remove -fstack-protector from CFLAGS - remove -fstack-protector from CFLAGS
* Fri Oct 27 2006 - schwab@suse.de * Fri Oct 27 2006 schwab@suse.de
- Fix char signedness. - Fix char signedness.
* Mon Sep 11 2006 - uli@suse.de * Mon Sep 11 2006 uli@suse.de
- re-added ARM FPE patch - re-added ARM FPE patch
- fixed SPARC on PPC - fixed SPARC on PPC
- install missing openbios-sparc32 - install missing openbios-sparc32
* Sat Sep 09 2006 - dmueller@suse.de * Sat Sep 09 2006 dmueller@suse.de
- update to 0.8.2: - update to 0.8.2:
- ACPI support - ACPI support
- PC VGA BIOS fixes - PC VGA BIOS fixes
@ -443,39 +463,39 @@ rm -rf %{gcc33tmp}
- Workaround for win32 SMP hosts - Workaround for win32 SMP hosts
- Support for AMD Flash memories (Jocelyn Mayer) - Support for AMD Flash memories (Jocelyn Mayer)
- Audio capture to WAV files support (malc) - Audio capture to WAV files support (malc)
* Tue May 30 2006 - uli@suse.de * Tue May 30 2006 uli@suse.de
- fixed to build on PPC with new glibc - fixed to build on PPC with new glibc
* Mon May 29 2006 - uli@suse.de * Mon May 29 2006 uli@suse.de
- fixed to build with new kernel headers - fixed to build with new kernel headers
* Wed Mar 08 2006 - uli@suse.de * Wed Mar 08 2006 uli@suse.de
- split giant patch - split giant patch
- added NWFPE glue code fix - added NWFPE glue code fix
* Tue Mar 07 2006 - schwab@suse.de * Tue Mar 07 2006 schwab@suse.de
- More fixes for ia64 port. - More fixes for ia64 port.
* Mon Mar 06 2006 - schwab@suse.de * Mon Mar 06 2006 schwab@suse.de
- Remove obsolete hunk from ia64 patch. - Remove obsolete hunk from ia64 patch.
* Wed Jan 25 2006 - mls@suse.de * Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires - converted neededforbuild to BuildRequires
* Tue Dec 20 2005 - uli@suse.de * Tue Dec 20 2005 uli@suse.de
- update -> 0.8.0 - update -> 0.8.0
* Thu Dec 08 2005 - uli@suse.de * Thu Dec 08 2005 uli@suse.de
- update to current CVS (MIPS userspace, ARM system, SMP, USB, - update to current CVS (MIPS userspace, ARM system, SMP, USB,
NX, VLAN, serial, parallel, ES1370, ALSA backend) NX, VLAN, serial, parallel, ES1370, ALSA backend)
- build i386 and AMD64 emus with kqemu support if possible - build i386 and AMD64 emus with kqemu support if possible
- install missing PPC video driver, SPARC boot ROM - install missing PPC video driver, SPARC boot ROM
- install missing keymaps - install missing keymaps
* Mon Nov 07 2005 - uli@suse.de * Mon Nov 07 2005 uli@suse.de
- updated linker scripts for new binutils release - updated linker scripts for new binutils release
* Sat Sep 17 2005 - dmueller@suse.de * Sat Sep 17 2005 dmueller@suse.de
- update to 0.7.2 - update to 0.7.2
* Mon Aug 15 2005 - schwab@suse.de * Mon Aug 15 2005 schwab@suse.de
- Don't package /emul/ia32-linux on ia64. - Don't package /emul/ia32-linux on ia64.
* Mon Aug 15 2005 - schwab@suse.de * Mon Aug 15 2005 schwab@suse.de
- Fix compilation on ia64. - Fix compilation on ia64.
* Mon Aug 01 2005 - uli@suse.de * Mon Aug 01 2005 uli@suse.de
- update -> 0.7.1 - update -> 0.7.1
- enabled x86_64-system - enabled x86_64-system
* Mon Jul 11 2005 - uli@suse.de * Mon Jul 11 2005 uli@suse.de
- update -> CVS (MIPS emulation) - update -> CVS (MIPS emulation)
- build with throwaway GCC3 (still no GCC4-compatible QEMU in - build with throwaway GCC3 (still no GCC4-compatible QEMU in
sight) sight)
@ -486,36 +506,36 @@ rm -rf %{gcc33tmp}
- disabled qemu-fast (broken and deprecated) - disabled qemu-fast (broken and deprecated)
- disabled i386-user on x86_64 (useless) - disabled i386-user on x86_64 (useless)
- build with %%jobs - build with %%jobs
* Wed Jun 01 2005 - ro@suse.de * Wed Jun 01 2005 ro@suse.de
- update to 0.7.0, still no success with gcc-4 - update to 0.7.0, still no success with gcc-4
* Thu Jan 27 2005 - uli@suse.de * Thu Jan 27 2005 uli@suse.de
- baselibs-x86 link is unnecessary on x86/AMD64 - baselibs-x86 link is unnecessary on x86/AMD64
- two ARM emulation fixes (RRX operand fix by Paul Brook, shifter - two ARM emulation fixes (RRX operand fix by Paul Brook, shifter
carry fix by me) carry fix by me)
- SDL 1.2.8 can be linked statically -> enabled qemu-fast - SDL 1.2.8 can be linked statically -> enabled qemu-fast
* Mon Nov 29 2004 - uli@suse.de * Mon Nov 29 2004 uli@suse.de
- update -> 0.6.1 - update -> 0.6.1
- build softmmu binaries on s390 (still doesn't work though) - build softmmu binaries on s390 (still doesn't work though)
- pack /emul/ia32-linux directory and symlink from /usr/share/qemu - pack /emul/ia32-linux directory and symlink from /usr/share/qemu
so it's possible to use the IA64 baselibs-x86 packages so it's possible to use the IA64 baselibs-x86 packages
* Wed Sep 15 2004 - uli@suse.de * Wed Sep 15 2004 uli@suse.de
- removed unnecessary dependency on private glibc symbol - removed unnecessary dependency on private glibc symbol
(bug #44864) (bug #44864)
* Fri Aug 06 2004 - uli@suse.de * Fri Aug 06 2004 uli@suse.de
- update -> 0.6.0 (fixes for several OSs, improvements in emulated - update -> 0.6.0 (fixes for several OSs, improvements in emulated
hardware (IDE, PCI, network, VGA, APM, PowerMac), minor fixes, hardware (IDE, PCI, network, VGA, APM, PowerMac), minor fixes,
tool for conversion of VMware images) tool for conversion of VMware images)
* Tue May 11 2004 - uli@suse.de * Tue May 11 2004 uli@suse.de
- update -> 0.5.5 (contains ARM, utime() fixes and several others) - update -> 0.5.5 (contains ARM, utime() fixes and several others)
- make uname() return target machine name (fixes config.guess, - make uname() return target machine name (fixes config.guess,
rpm etc.) rpm etc.)
- fake sigaltstack() (fixes m4) - fake sigaltstack() (fixes m4)
- enabled x86-64 - enabled x86-64
* Wed May 05 2004 - uli@suse.de * Wed May 05 2004 uli@suse.de
- fixed ARM emulation bug - fixed ARM emulation bug
* Wed Apr 28 2004 - uli@suse.de * Wed Apr 28 2004 uli@suse.de
- build with -fno-unit-at-a-time (fixes PPC system emulator) - build with -fno-unit-at-a-time (fixes PPC system emulator)
* Wed Apr 28 2004 - uli@suse.de * Wed Apr 28 2004 uli@suse.de
- update -> 0.5.4 (runs Linux/PPC, several fixes) - update -> 0.5.4 (runs Linux/PPC, several fixes)
* Mon Apr 19 2004 - uli@suse.de * Mon Apr 19 2004 uli@suse.de
- initial package - initial package