This commit is contained in:
parent
9cce5131ca
commit
c8c1238726
@ -1,6 +1,6 @@
|
||||
--- linux-user/main.c
|
||||
+++ linux-user/main.c
|
||||
@@ -339,18 +339,54 @@
|
||||
@@ -377,19 +377,55 @@
|
||||
{
|
||||
TaskState *ts = env->opaque;
|
||||
uint32_t opcode;
|
||||
@ -8,7 +8,8 @@
|
||||
|
||||
/* we handle the FPU emulation here, as Linux */
|
||||
/* 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 ((rc=EmulateAll(opcode, &ts->fpa, env)) == 0) {
|
||||
|
@ -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
3
qemu-0.9.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a68d110ac86247b385b677d02fff2315ba42418469ead2d4f7e8bb48cfa928ba
|
||||
size 2370923
|
@ -19,7 +19,7 @@ Index: qemu.bkp/linux-user/syscall.c
|
||||
#include <linux/termios.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/utsname.h>
|
||||
@@ -2715,6 +2718,91 @@
|
||||
@@ -2715,6 +2718,92 @@
|
||||
unlock_user_struct(target_ts, target_addr, 1);
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ Index: qemu.bkp/linux-user/syscall.c
|
||||
+ break;
|
||||
+ default:
|
||||
+ gemu_log("qemu: Unsupported futex op %d\n", op);
|
||||
+ return -ENOSYS;
|
||||
+ return -TARGET_ENOSYS;
|
||||
+ }
|
||||
+ if (op == FUTEX_WAKE_OP) {
|
||||
+ /* Need to munge the secondary operation (val3) */
|
||||
@ -90,11 +90,12 @@ Index: qemu.bkp/linux-user/syscall.c
|
||||
+ int oparg = (val3 >> 12) & 0xfff;
|
||||
+ int cmparg = val3 & 0xfff;
|
||||
+ 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)
|
||||
+ 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);
|
||||
+ if(futex_cmp(oldval, cmp, cmparg)) {
|
||||
+ 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
|
||||
that actions, such as logging of syscall results, can be performed.
|
||||
All errnos that do_syscall() returns must be -TARGET_<errcode>. */
|
||||
@@ -5116,6 +5204,11 @@
|
||||
@@ -5116,6 +5205,11 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -2,11 +2,12 @@ Index: 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:
|
||||
{
|
||||
struct timeval tv;
|
||||
+ target_to_host_timeval(&tv, arg1);
|
||||
+ if(copy_from_user_timeval(&tv, arg1))
|
||||
+ goto efault;
|
||||
ret = get_errno(gettimeofday(&tv, NULL));
|
||||
if (!is_error(ret)) {
|
||||
host_to_target_timeval(arg1, &tv);
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: qemu/linux-user/mmap.c
|
||||
================================================================================
|
||||
--- qemu/linux-user/mmap.c
|
||||
+++ qemu/linux-user/mmap.c
|
||||
--- qemu-0.9.1/linux-user/mmap.c
|
||||
+++ qemu-0.9.1/linux-user/mmap.c
|
||||
@@ -27,6 +27,10 @@
|
||||
|
||||
#include "qemu.h"
|
||||
@ -22,25 +22,7 @@ Index: qemu/linux-user/mmap.c
|
||||
if (p == MAP_FAILED)
|
||||
return -1;
|
||||
prot1 = prot;
|
||||
@@ -251,7 +255,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 @@
|
||||
@@ -422,7 +426,7 @@
|
||||
unsigned long host_addr;
|
||||
|
||||
/* XXX: use 5 args syscall */
|
||||
|
@ -1,13 +1,13 @@
|
||||
Index: qemu-0.9.0/configure
|
||||
================================================================================
|
||||
--- qemu/configure
|
||||
+++ qemu/configure
|
||||
@@ -506,7 +506,7 @@
|
||||
--- qemu-0.9.1/configure
|
||||
+++ qemu-0.9.1/configure
|
||||
@@ -526,7 +526,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 z80-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"
|
||||
+ 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
|
||||
# the following are Linux specific
|
||||
if [ "$linux_user" = "yes" ] ; then
|
||||
|
@ -1,18 +1,7 @@
|
||||
Index: qemu.bkp/linux-user/main.c
|
||||
================================================================================
|
||||
--- qemu/linux-user/main.c
|
||||
+++ qemu/linux-user/main.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
|
||||
--- qemu-0.9.1/linux-user/syscall.c
|
||||
+++ qemu-0.9.1/linux-user/syscall.c
|
||||
@@ -159,6 +159,7 @@
|
||||
#define __NR_sys_tkill __NR_tkill
|
||||
#define __NR_sys_unlinkat __NR_unlinkat
|
||||
@ -31,88 +20,7 @@ Index: qemu.bkp/linux-user/main.c
|
||||
#ifdef __NR_exit_group
|
||||
_syscall1(int,exit_group,int,error_code)
|
||||
#endif
|
||||
@@ -2249,6 +2253,80 @@
|
||||
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 @@
|
||||
@@ -2705,15 +2783,20 @@
|
||||
|
||||
/* do_fork() Must return host values and target errnos (unlike most
|
||||
do_*() functions). */
|
||||
@ -134,7 +42,7 @@ Index: qemu.bkp/linux-user/main.c
|
||||
memset(ts, 0, sizeof(TaskState));
|
||||
new_stack = ts->stack;
|
||||
ts->used = 1;
|
||||
@@ -2285,6 +2368,27 @@
|
||||
@@ -2725,6 +2808,27 @@
|
||||
#if defined(TARGET_I386)
|
||||
if (!newsp)
|
||||
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_EAX] = 0;
|
||||
#elif defined(TARGET_ARM)
|
||||
@@ -2342,15 +2446,27 @@
|
||||
@@ -2782,15 +2886,27 @@
|
||||
#endif
|
||||
new_env->opaque = ts;
|
||||
#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.
|
||||
+ Currently this is only done in client memory */
|
||||
+ 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. */
|
||||
+ if(flags & CLONE_CHILD_SETTID) {
|
||||
+ 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 */
|
||||
+ tput32(child_tidptr, ret);
|
||||
+ put_user_u32(child_tidptr, ret);
|
||||
+ }
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -2623,7 +2739,7 @@
|
||||
@@ -3073,7 +3189,7 @@
|
||||
_mcleanup();
|
||||
#endif
|
||||
gdb_exit(cpu_env, arg1);
|
||||
@ -204,7 +112,7 @@ Index: qemu.bkp/linux-user/main.c
|
||||
_exit(arg1);
|
||||
ret = 0; /* avoid warning */
|
||||
break;
|
||||
@@ -2671,7 +2787,7 @@
|
||||
@@ -3115,7 +3231,7 @@
|
||||
ret = do_brk(arg1);
|
||||
break;
|
||||
case TARGET_NR_fork:
|
||||
@ -213,7 +121,7 @@ Index: qemu.bkp/linux-user/main.c
|
||||
break;
|
||||
#ifdef TARGET_NR_waitpid
|
||||
case TARGET_NR_waitpid:
|
||||
@@ -4020,7 +4136,7 @@
|
||||
@@ -4477,7 +4593,7 @@
|
||||
ret = get_errno(fsync(arg1));
|
||||
break;
|
||||
case TARGET_NR_clone:
|
||||
@ -222,7 +130,7 @@ Index: qemu.bkp/linux-user/main.c
|
||||
break;
|
||||
#ifdef __NR_exit_group
|
||||
/* new thread calls */
|
||||
@@ -4419,7 +4535,7 @@
|
||||
@@ -4897,7 +5013,7 @@
|
||||
#endif
|
||||
#ifdef TARGET_NR_vfork
|
||||
case TARGET_NR_vfork:
|
||||
@ -231,25 +139,3 @@ Index: qemu.bkp/linux-user/main.c
|
||||
break;
|
||||
#endif
|
||||
#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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- qemu/Makefile.target
|
||||
+++ qemu/Makefile.target
|
||||
@@ -396,6 +396,9 @@
|
||||
--- qemu-0.9.1/Makefile.target
|
||||
+++ qemu-0.9.1/Makefile.target
|
||||
@@ -390,6 +390,9 @@
|
||||
ifeq ($(findstring z80, $(TARGET_ARCH) $(ARCH)),z80)
|
||||
LIBOBJS+=z80-dis.o
|
||||
endif
|
||||
@ -10,9 +10,9 @@
|
||||
|
||||
ifdef CONFIG_GDBSTUB
|
||||
OBJS+=gdbstub.o
|
||||
--- qemu/dis-asm.h
|
||||
+++ qemu/dis-asm.h
|
||||
@@ -388,6 +388,7 @@
|
||||
--- qemu-0.9.1/dis-asm.h
|
||||
+++ qemu-0.9.1/dis-asm.h
|
||||
@@ -396,6 +396,7 @@
|
||||
extern int print_insn_s390 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*));
|
||||
@ -20,21 +20,8 @@
|
||||
|
||||
#if 0
|
||||
/* Fetch the disassembler for a given BFD, if that support is available. */
|
||||
--- qemu/dyngen.c
|
||||
+++ qemu/dyngen.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
|
||||
--- qemu-0.9.1/target-i386/translate.c
|
||||
+++ qemu-0.9.1/target-i386/translate.c
|
||||
@@ -1795,7 +1795,11 @@
|
||||
case CC_OP_SUBW:
|
||||
case CC_OP_SUBL:
|
||||
|
74
qemu-s390dis-license.patch
Normal file
74
qemu-s390dis-license.patch
Normal 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"
|
213
qemu-z80.diff
213
qemu-z80.diff
@ -1,6 +1,6 @@
|
||||
--- qemu/Makefile
|
||||
+++ qemu/Makefile
|
||||
@@ -73,7 +73,7 @@
|
||||
--- qemu-0.9.1/Makefile
|
||||
+++ qemu-0.9.1/Makefile
|
||||
@@ -179,7 +179,7 @@
|
||||
mkdir -p "$(DESTDIR)$(datadir)"
|
||||
for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
|
||||
video.x openbios-sparc32 pxe-ne2k_pci.bin \
|
||||
@ -9,9 +9,9 @@
|
||||
$(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \
|
||||
done
|
||||
ifndef CONFIG_WIN32
|
||||
--- qemu/Makefile.target
|
||||
+++ qemu/Makefile.target
|
||||
@@ -348,6 +348,13 @@
|
||||
--- qemu-0.9.1/Makefile.target
|
||||
+++ qemu-0.9.1/Makefile.target
|
||||
@@ -342,6 +342,13 @@
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
# NOTE: the disassembler code is only needed for debugging
|
||||
LIBOBJS+=disas.o
|
||||
ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
|
||||
@@ -383,6 +390,9 @@
|
||||
@@ -377,6 +384,9 @@
|
||||
ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
|
||||
LIBOBJS+=s390-dis.o
|
||||
endif
|
||||
@ -35,9 +35,9 @@
|
||||
|
||||
ifdef CONFIG_GDBSTUB
|
||||
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+= m68k-semi.o
|
||||
VL_OBJS+= m68k-semi.o dummy_m68k.o
|
||||
endif
|
||||
+ifeq ($(TARGET_BASE_ARCH), z80)
|
||||
+VL_OBJS+= zx_spectrum.o zx_ula.o dma.o $(AUDIODRV)
|
||||
@ -46,7 +46,7 @@
|
||||
ifdef CONFIG_GDBSTUB
|
||||
VL_OBJS+=gdbstub.o
|
||||
endif
|
||||
@@ -641,9 +655,15 @@
|
||||
@@ -608,9 +622,15 @@
|
||||
helper.o: helper.c
|
||||
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
|
||||
else
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
cpu-exec.o: cpu-exec.c
|
||||
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $<
|
||||
@@ -667,6 +687,9 @@
|
||||
@@ -634,6 +654,9 @@
|
||||
ifneq ($(PROGS),)
|
||||
$(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
|
||||
endif
|
||||
@ -72,8 +72,8 @@
|
||||
|
||||
ifneq ($(wildcard .depend),)
|
||||
include .depend
|
||||
--- qemu/configure
|
||||
+++ qemu/configure
|
||||
--- qemu-0.9.1/configure
|
||||
+++ qemu-0.9.1/configure
|
||||
@@ -89,6 +89,7 @@
|
||||
dsound="no"
|
||||
coreaudio="no"
|
||||
@ -82,7 +82,7 @@
|
||||
fmod="no"
|
||||
fmod_lib=""
|
||||
fmod_inc=""
|
||||
@@ -264,6 +265,8 @@
|
||||
@@ -270,6 +271,8 @@
|
||||
;;
|
||||
--disable-vnc-tls) vnc_tls="no"
|
||||
;;
|
||||
@ -91,7 +91,7 @@
|
||||
--enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
|
||||
;;
|
||||
--disable-slirp) slirp="no"
|
||||
@@ -387,6 +390,7 @@
|
||||
@@ -407,6 +410,7 @@
|
||||
echo " --enable-fmod enable FMOD audio driver"
|
||||
echo " --enable-dsound enable DirectSound audio driver"
|
||||
echo " --disable-vnc-tls disable TLS encryption for VNC server"
|
||||
@ -99,16 +99,7 @@
|
||||
echo " --enable-system enable all system emulation targets"
|
||||
echo " --disable-system disable all system emulation targets"
|
||||
echo " --enable-linux-user enable all linux usermode emulation targets"
|
||||
@@ -502,7 +506,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 @@
|
||||
@@ -739,6 +743,7 @@
|
||||
if test -n "$sparc_cpu"; then
|
||||
echo "Target Sparc Arch $sparc_cpu"
|
||||
fi
|
||||
@ -116,7 +107,7 @@
|
||||
echo "kqemu support $kqemu"
|
||||
echo "Documentation $build_docs"
|
||||
[ ! -z "$uname_release" ] && \
|
||||
@@ -896,6 +901,10 @@
|
||||
@@ -917,6 +922,10 @@
|
||||
echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
|
||||
echo "#define CONFIG_VNC_TLS 1" >> $config_h
|
||||
fi
|
||||
@ -127,7 +118,7 @@
|
||||
qemu_version=`head $source_path/VERSION`
|
||||
echo "VERSION=$qemu_version" >>$config_mak
|
||||
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
|
||||
@@ -1109,6 +1118,11 @@
|
||||
@@ -1146,6 +1155,11 @@
|
||||
echo "TARGET_ARCH=alpha" >> $config_mak
|
||||
echo "#define TARGET_ARCH \"alpha\"" >> $config_h
|
||||
echo "#define TARGET_ALPHA 1" >> $config_h
|
||||
@ -139,9 +130,9 @@
|
||||
else
|
||||
echo "Unsupported target CPU"
|
||||
exit 1
|
||||
--- qemu/cpu-exec.c
|
||||
+++ qemu/cpu-exec.c
|
||||
@@ -214,6 +214,10 @@
|
||||
--- qemu-0.9.1/cpu-exec.c
|
||||
+++ qemu-0.9.1/cpu-exec.c
|
||||
@@ -261,6 +261,10 @@
|
||||
flags = 0;
|
||||
cs_base = 0;
|
||||
pc = env->pc;
|
||||
@ -152,7 +143,7 @@
|
||||
#else
|
||||
#error unsupported CPU
|
||||
#endif
|
||||
@@ -290,6 +294,15 @@
|
||||
@@ -331,6 +335,15 @@
|
||||
#elif defined(TARGET_SH4)
|
||||
#elif defined(TARGET_CRIS)
|
||||
/* XXXXX */
|
||||
@ -168,9 +159,9 @@
|
||||
#else
|
||||
#error unsupported target CPU
|
||||
#endif
|
||||
@@ -541,6 +554,13 @@
|
||||
env->exception_index = env->pending_vector;
|
||||
@@ -573,6 +586,13 @@
|
||||
do_interrupt(1);
|
||||
BREAK_CHAIN;
|
||||
}
|
||||
+#elif defined(TARGET_Z80)
|
||||
+ if (interrupt_request & CPU_INTERRUPT_HARD) {
|
||||
@ -182,7 +173,7 @@
|
||||
#endif
|
||||
/* Don't use the cached interupt_request value,
|
||||
do_interrupt may have updated the EXITTB flag. */
|
||||
@@ -590,6 +610,8 @@
|
||||
@@ -618,6 +638,8 @@
|
||||
cpu_dump_state(env, logfile, fprintf, 0);
|
||||
#elif defined(TARGET_CRIS)
|
||||
cpu_dump_state(env, logfile, fprintf, 0);
|
||||
@ -191,7 +182,7 @@
|
||||
#else
|
||||
#error unsupported target CPU
|
||||
#endif
|
||||
@@ -785,6 +807,9 @@
|
||||
@@ -722,6 +744,9 @@
|
||||
#elif defined(TARGET_ALPHA)
|
||||
#elif defined(TARGET_CRIS)
|
||||
/* XXXXX */
|
||||
@ -201,9 +192,9 @@
|
||||
#else
|
||||
#error unsupported target CPU
|
||||
#endif
|
||||
--- qemu/dis-asm.h
|
||||
+++ qemu/dis-asm.h
|
||||
@@ -387,6 +387,7 @@
|
||||
--- qemu-0.9.1/dis-asm.h
|
||||
+++ qemu-0.9.1/dis-asm.h
|
||||
@@ -395,6 +395,7 @@
|
||||
extern int print_insn_alpha 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*));
|
||||
@ -211,8 +202,8 @@
|
||||
|
||||
#if 0
|
||||
/* Fetch the disassembler for a given BFD, if that support is available. */
|
||||
--- qemu/disas.c
|
||||
+++ qemu/disas.c
|
||||
--- qemu-0.9.1/disas.c
|
||||
+++ qemu-0.9.1/disas.c
|
||||
@@ -208,6 +208,8 @@
|
||||
#elif defined(TARGET_CRIS)
|
||||
disasm_info.mach = bfd_mach_cris_v32;
|
||||
@ -222,9 +213,9 @@
|
||||
#else
|
||||
fprintf(out, "0x" TARGET_FMT_lx
|
||||
": Asm output not supported on this arch\n", code);
|
||||
--- qemu/exec-all.h
|
||||
+++ qemu/exec-all.h
|
||||
@@ -82,7 +82,7 @@
|
||||
--- qemu-0.9.1/exec-all.h
|
||||
+++ qemu-0.9.1/exec-all.h
|
||||
@@ -52,7 +52,7 @@
|
||||
typedef void (GenOpFunc2)(long, long);
|
||||
typedef void (GenOpFunc3)(long, long, long);
|
||||
|
||||
@ -233,9 +224,9 @@
|
||||
|
||||
void optimize_flags_init(void);
|
||||
|
||||
--- qemu/exec.c
|
||||
+++ qemu/exec.c
|
||||
@@ -709,6 +709,9 @@
|
||||
--- qemu-0.9.1/exec.c
|
||||
+++ qemu-0.9.1/exec.c
|
||||
@@ -731,6 +731,9 @@
|
||||
current_flags |= (env->eflags & (IOPL_MASK | TF_MASK | VM_MASK));
|
||||
current_cs_base = (target_ulong)env->segs[R_CS].base;
|
||||
current_pc = current_cs_base + env->eip;
|
||||
@ -245,9 +236,9 @@
|
||||
#else
|
||||
#error unsupported CPU
|
||||
#endif
|
||||
--- qemu/gdbstub.c
|
||||
+++ qemu/gdbstub.c
|
||||
@@ -853,6 +853,34 @@
|
||||
--- qemu-0.9.1/gdbstub.c
|
||||
+++ qemu-0.9.1/gdbstub.c
|
||||
@@ -856,6 +856,34 @@
|
||||
for (i = 0; i < 16; i++) LOAD(env->regs[i]);
|
||||
LOAD (env->pc);
|
||||
}
|
||||
@ -282,9 +273,21 @@
|
||||
#else
|
||||
static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf)
|
||||
{
|
||||
--- qemu/hw/zx_spectrum.c
|
||||
+++ qemu/hw/zx_spectrum.c
|
||||
@@ -0,0 +1,303 @@
|
||||
--- qemu-0.9.1/hw/boards.h
|
||||
+++ qemu-0.9.1/hw/boards.h
|
||||
@@ -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
|
||||
+ *
|
||||
@ -309,7 +312,12 @@
|
||||
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
+ * 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
|
||||
+#include <libspectrum.h>
|
||||
+#endif
|
||||
@ -467,7 +475,7 @@
|
||||
+ CPUState *env;
|
||||
+
|
||||
+ /* init CPUs */
|
||||
+ env = cpu_init();
|
||||
+ env = cpu_init("z80");
|
||||
+ zx_env = env; // XXX
|
||||
+ register_savevm("cpu", 0, 4, cpu_save, cpu_load, env);
|
||||
+ qemu_register_reset(main_cpu_reset, env);
|
||||
@ -588,9 +596,9 @@
|
||||
+ "Z80 Machine",
|
||||
+ zx_spectrum_init,
|
||||
+};
|
||||
--- qemu/hw/zx_ula.c
|
||||
+++ qemu/hw/zx_ula.c
|
||||
@@ -0,0 +1,355 @@
|
||||
--- qemu-0.9.1/hw/zx_ula.c
|
||||
+++ qemu-0.9.1/hw/zx_ula.c
|
||||
@@ -0,0 +1,357 @@
|
||||
+/*
|
||||
+ * QEMU ZX Spectrum Video Emulation.
|
||||
+ *
|
||||
@ -616,7 +624,9 @@
|
||||
+ * THE SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
+#include "vl.h"
|
||||
+#include "hw.h"
|
||||
+#include "console.h"
|
||||
+#include "zx_ula.h"
|
||||
+
|
||||
+typedef struct {
|
||||
+ DisplayState *ds;
|
||||
@ -946,8 +956,15 @@
|
||||
+ /* ZX Spectrum ULA */
|
||||
+ register_ioport_write(0, 0x10000, 1, io_spectrum_write, s);
|
||||
+}
|
||||
--- qemu/target-z80/cpu.h
|
||||
+++ qemu/target-z80/cpu.h
|
||||
--- qemu-0.9.1/hw/zx_ula.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 @@
|
||||
+/*
|
||||
+ * Z80 virtual CPU header
|
||||
@ -1152,7 +1169,7 @@
|
||||
+ struct APICState *apic_state;
|
||||
+} CPUZ80State;
|
||||
+
|
||||
+CPUZ80State *cpu_z80_init(void);
|
||||
+CPUZ80State *cpu_z80_init(const char* cpu_model);
|
||||
+int cpu_z80_exec(CPUZ80State *s);
|
||||
+void cpu_z80_close(CPUZ80State *s);
|
||||
+int cpu_get_pic_interrupt(CPUZ80State *s);
|
||||
@ -1201,8 +1218,8 @@
|
||||
+#include "cpu-all.h"
|
||||
+
|
||||
+#endif /* CPU_Z80_H */
|
||||
--- qemu/target-z80/exec.h
|
||||
+++ qemu/target-z80/exec.h
|
||||
--- qemu-0.9.1/target-z80/exec.h
|
||||
+++ qemu-0.9.1/target-z80/exec.h
|
||||
@@ -0,0 +1,372 @@
|
||||
+/*
|
||||
+ * Z80 execution defines
|
||||
@ -1576,8 +1593,8 @@
|
||||
+ }
|
||||
+ return EXCP_HALTED;
|
||||
+}
|
||||
--- qemu/target-z80/helper.c
|
||||
+++ qemu/target-z80/helper.c
|
||||
--- qemu-0.9.1/target-z80/helper.c
|
||||
+++ qemu-0.9.1/target-z80/helper.c
|
||||
@@ -0,0 +1,281 @@
|
||||
+/*
|
||||
+ * Z80 helpers
|
||||
@ -1860,8 +1877,8 @@
|
||||
+ fl & 0x01 ? 'C' : '-',
|
||||
+ env->imode, env->iff1, env->iff2, env->regs[R_I], env->regs[R_R]);
|
||||
+}
|
||||
--- qemu/target-z80/helper2.c
|
||||
+++ qemu/target-z80/helper2.c
|
||||
--- qemu-0.9.1/target-z80/helper2.c
|
||||
+++ qemu-0.9.1/target-z80/helper2.c
|
||||
@@ -0,0 +1,170 @@
|
||||
+/*
|
||||
+ * Z80 helpers (without register variable usage)
|
||||
@ -1896,7 +1913,7 @@
|
||||
+
|
||||
+//#define DEBUG_MMU
|
||||
+
|
||||
+CPUZ80State *cpu_z80_init(void)
|
||||
+CPUZ80State *cpu_z80_init(const char* cpu_model)
|
||||
+{
|
||||
+ CPUZ80State *env;
|
||||
+ static int inited;
|
||||
@ -2033,8 +2050,8 @@
|
||||
+ paddr = (pte & TARGET_PAGE_MASK) + page_offset;
|
||||
+ return paddr;
|
||||
+}
|
||||
--- qemu/target-z80/op.c
|
||||
+++ qemu/target-z80/op.c
|
||||
--- qemu-0.9.1/target-z80/op.c
|
||||
+++ qemu-0.9.1/target-z80/op.c
|
||||
@@ -0,0 +1,1175 @@
|
||||
+/*
|
||||
+ * Z80 micro operations
|
||||
@ -3211,8 +3228,8 @@
|
||||
+{
|
||||
+ cpu_unlock();
|
||||
+}
|
||||
--- qemu/target-z80/opreg_template.h
|
||||
+++ qemu/target-z80/opreg_template.h
|
||||
--- qemu-0.9.1/target-z80/opreg_template.h
|
||||
+++ qemu-0.9.1/target-z80/opreg_template.h
|
||||
@@ -0,0 +1,74 @@
|
||||
+/*
|
||||
+ * Z80 micro operations (templates for various register related
|
||||
@ -3288,8 +3305,8 @@
|
||||
+{
|
||||
+ REG = (uint16_t)T1;
|
||||
+}
|
||||
--- qemu/target-z80/opreg_template2.h
|
||||
+++ qemu/target-z80/opreg_template2.h
|
||||
--- qemu-0.9.1/target-z80/opreg_template2.h
|
||||
+++ qemu-0.9.1/target-z80/opreg_template2.h
|
||||
@@ -0,0 +1,63 @@
|
||||
+/*
|
||||
+ * Z80 micro operations (templates for various register related
|
||||
@ -3354,8 +3371,8 @@
|
||||
+ REGHIGH = (uint16_t)(T1 >> 8);
|
||||
+ REGLOW = (uint16_t)T1;
|
||||
+}
|
||||
--- qemu/target-z80/ops_mem.h
|
||||
+++ qemu/target-z80/ops_mem.h
|
||||
--- qemu-0.9.1/target-z80/ops_mem.h
|
||||
+++ qemu-0.9.1/target-z80/ops_mem.h
|
||||
@@ -0,0 +1,59 @@
|
||||
+void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T0_A0)(void)
|
||||
+{
|
||||
@ -3416,8 +3433,8 @@
|
||||
+}
|
||||
+
|
||||
+#undef MEMSUFFIX
|
||||
--- qemu/target-z80/translate.c
|
||||
+++ qemu/target-z80/translate.c
|
||||
--- qemu-0.9.1/target-z80/translate.c
|
||||
+++ qemu-0.9.1/target-z80/translate.c
|
||||
@@ -0,0 +1,1600 @@
|
||||
+/*
|
||||
+ * Z80 translation
|
||||
@ -5019,9 +5036,9 @@
|
||||
+ return gen_intermediate_code_internal(env, tb, 1);
|
||||
+}
|
||||
+
|
||||
--- qemu/vl.c
|
||||
+++ qemu/vl.c
|
||||
@@ -6253,6 +6253,19 @@
|
||||
--- qemu-0.9.1/vl.c
|
||||
+++ qemu-0.9.1/vl.c
|
||||
@@ -6750,6 +6750,19 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5040,9 +5057,9 @@
|
||||
+
|
||||
#else
|
||||
|
||||
#warning No CPU save/restore functions
|
||||
@@ -7420,6 +7433,8 @@
|
||||
qemu_register_machine(&an5206_machine);
|
||||
//#warning No CPU save/restore functions
|
||||
@@ -7924,6 +7937,8 @@
|
||||
qemu_register_machine(&dummy_m68k_machine);
|
||||
#elif defined(TARGET_CRIS)
|
||||
qemu_register_machine(&bareetraxfs_machine);
|
||||
+#elif defined(TARGET_Z80)
|
||||
@ -5050,32 +5067,8 @@
|
||||
#else
|
||||
#error unsupported CPU
|
||||
#endif
|
||||
--- qemu/vl.h
|
||||
+++ qemu/vl.h
|
||||
@@ -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
|
||||
--- qemu-0.9.1/z80-dis.c
|
||||
+++ qemu-0.9.1/z80-dis.c
|
||||
@@ -0,0 +1,621 @@
|
||||
+/* Print Z80 and R800 instructions
|
||||
+ Copyright 2005 Free Software Foundation, Inc.
|
||||
|
22
qemu.changes
22
qemu.changes
@ -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
|
||||
|
||||
|
132
qemu.spec
132
qemu.spec
@ -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
|
||||
# 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
|
||||
Group: System/Emulators/PC
|
||||
Summary: Universal CPU emulator
|
||||
Version: 0.9.0.cvs
|
||||
Release: 57
|
||||
Version: 0.9.1
|
||||
Release: 1
|
||||
Source: %name-%version.tar.bz2
|
||||
#Patch400: qemu-0.7.0-gcc4-dot-syms.patch
|
||||
#Patch401: qemu-0.8.0-gcc4-hacks.patch
|
||||
@ -57,6 +57,7 @@ Patch70: qemu-m68k.diff
|
||||
Patch71: qemu-s390.patch
|
||||
Patch82: qemu-cvs-svm2.patch
|
||||
Patch83: qemu-cvs-ppcspe.patch
|
||||
Patch84: qemu-s390dis-license.patch
|
||||
Source200: kvm_bios.bin
|
||||
Source201: zx-rom.bin
|
||||
Source202: COPYING.zx-rom
|
||||
@ -118,7 +119,7 @@ Authors:
|
||||
Fabrice Bellard <fabrice.bellard@free.fr>
|
||||
|
||||
%prep
|
||||
%setup -n qemu -q -a601
|
||||
%setup -q -a601
|
||||
#%patch400 -p1
|
||||
#%patch401 -p1
|
||||
#%patch402 -p1
|
||||
@ -159,6 +160,7 @@ Authors:
|
||||
%patch68 -p1
|
||||
%endif
|
||||
%patch83
|
||||
%patch84
|
||||
%if 1
|
||||
cd gcc-3.3.5
|
||||
%patch600
|
||||
@ -266,7 +268,6 @@ make clean
|
||||
--static --disable-gcc-check \
|
||||
--extra-cflags="$QEMU_OPT_FLAGS"
|
||||
make %{?jobs:-j%{jobs}}
|
||||
mv ppc64abi32-linux-user/qemu-ppc64 ppc64abi32-linux-user/qemu-ppc64abi32
|
||||
make qemu-img
|
||||
|
||||
%install
|
||||
@ -312,9 +313,28 @@ rm -rf %{gcc33tmp}
|
||||
%endif
|
||||
|
||||
%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
|
||||
* Tue Nov 13 2007 - uli@suse.de
|
||||
* Tue Nov 13 2007 uli@suse.de
|
||||
- update -> current CVS:
|
||||
- Read-only support for Parallels disk images (Alex Beregszaszi)
|
||||
- CRIS emulation (Edgar E. Iglesias)
|
||||
@ -323,30 +343,30 @@ rm -rf %{gcc33tmp}
|
||||
- Strace for Linux userland emulation (Stuart Anderson, Thayne Harbaugh)
|
||||
- OMAP310 MPU emulation plus Palm T|E machine (Andrzej Zaborowski)
|
||||
- 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
|
||||
* Fri Sep 28 2007 - agraf@suse.de
|
||||
* Fri Sep 28 2007 agraf@suse.de
|
||||
- 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)
|
||||
- fix a misassumption in the s390 fix (uli)
|
||||
- allow more IDE power management (Ben Guthro)
|
||||
- log any I/O error and perform automatic read retry for CDrom (Ben Guthro)
|
||||
- fix Coherent guest support (Jan Jezabek)
|
||||
- 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)
|
||||
* 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
|
||||
* Thu Aug 09 2007 - olh@suse.de
|
||||
* Thu Aug 09 2007 olh@suse.de
|
||||
- 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
|
||||
* Mon Jul 30 2007 - uli@suse.de
|
||||
* Mon Jul 30 2007 uli@suse.de
|
||||
- fixed for S/390
|
||||
* Tue Jul 10 2007 - schwab@suse.de
|
||||
* Tue Jul 10 2007 schwab@suse.de
|
||||
- Add (incomplete) m68k emulation.
|
||||
* Mon Jul 09 2007 - agraf@suse.de
|
||||
* Mon Jul 09 2007 agraf@suse.de
|
||||
- included alsa support in qemu-user
|
||||
- update to current cvs
|
||||
- TFTP booting from host directory (Anthony Liguori, Erwan Velu)
|
||||
@ -362,14 +382,14 @@ rm -rf %{gcc33tmp}
|
||||
- MIPS64 support (Aurelien Jarno, Thiemo Seufer)
|
||||
- Preliminary Alpha guest support (J. Mayer)
|
||||
- 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
|
||||
* Wed Jun 20 2007 - uli@suse.de
|
||||
* Wed Jun 20 2007 uli@suse.de
|
||||
- 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)
|
||||
- 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
|
||||
- fixed FUTEX_WAKE_OP on machines where endianness differs
|
||||
- made mmap on x86_64 use the MAP_32BIT flag
|
||||
@ -377,7 +397,7 @@ rm -rf %{gcc33tmp}
|
||||
- removed an annoying debug message for forking
|
||||
- implemented sched_getaffinity syscall
|
||||
- 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)
|
||||
- direct jump support for x86-64 (Gwenole Beauchesne)
|
||||
- fix chaining of CPU instances (Gwenole Beauchesne)
|
||||
@ -386,7 +406,7 @@ rm -rf %{gcc33tmp}
|
||||
- KVM support
|
||||
- Z80/ZX Spectrum emulation (Stuart Brady)
|
||||
- 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
|
||||
with current libc versions (partly done by David Woodhouse,
|
||||
fixed by Alexander Graf)
|
||||
@ -395,11 +415,11 @@ rm -rf %{gcc33tmp}
|
||||
- disable AF_NETLINK in qemu-user (endianness problems)
|
||||
- applied fast path mangling patch from Kirill A. Shutemov
|
||||
- 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
|
||||
* Thu Mar 29 2007 - ro@suse.de
|
||||
* Thu Mar 29 2007 ro@suse.de
|
||||
- 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)
|
||||
- update -> 0.9.0
|
||||
- Support for relative paths in backing files for disk images
|
||||
@ -417,18 +437,18 @@ rm -rf %{gcc33tmp}
|
||||
- Mouse relative offset VNC extension (Anthony Liguori)
|
||||
- PXE boot support (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
|
||||
(bug #241950)
|
||||
* Fri Feb 02 2007 - ro@suse.de
|
||||
* Fri Feb 02 2007 ro@suse.de
|
||||
- remove -fstack-protector from CFLAGS
|
||||
* Fri Oct 27 2006 - schwab@suse.de
|
||||
* Fri Oct 27 2006 schwab@suse.de
|
||||
- Fix char signedness.
|
||||
* Mon Sep 11 2006 - uli@suse.de
|
||||
* Mon Sep 11 2006 uli@suse.de
|
||||
- re-added ARM FPE patch
|
||||
- fixed SPARC on PPC
|
||||
- install missing openbios-sparc32
|
||||
* Sat Sep 09 2006 - dmueller@suse.de
|
||||
* Sat Sep 09 2006 dmueller@suse.de
|
||||
- update to 0.8.2:
|
||||
- ACPI support
|
||||
- PC VGA BIOS fixes
|
||||
@ -443,39 +463,39 @@ rm -rf %{gcc33tmp}
|
||||
- Workaround for win32 SMP hosts
|
||||
- Support for AMD Flash memories (Jocelyn Mayer)
|
||||
- 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
|
||||
* Mon May 29 2006 - uli@suse.de
|
||||
* Mon May 29 2006 uli@suse.de
|
||||
- fixed to build with new kernel headers
|
||||
* Wed Mar 08 2006 - uli@suse.de
|
||||
* Wed Mar 08 2006 uli@suse.de
|
||||
- split giant patch
|
||||
- added NWFPE glue code fix
|
||||
* Tue Mar 07 2006 - schwab@suse.de
|
||||
* Tue Mar 07 2006 schwab@suse.de
|
||||
- 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.
|
||||
* Wed Jan 25 2006 - mls@suse.de
|
||||
* Wed Jan 25 2006 mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Tue Dec 20 2005 - uli@suse.de
|
||||
* Tue Dec 20 2005 uli@suse.de
|
||||
- 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,
|
||||
NX, VLAN, serial, parallel, ES1370, ALSA backend)
|
||||
- build i386 and AMD64 emus with kqemu support if possible
|
||||
- install missing PPC video driver, SPARC boot ROM
|
||||
- install missing keymaps
|
||||
* Mon Nov 07 2005 - uli@suse.de
|
||||
* Mon Nov 07 2005 uli@suse.de
|
||||
- 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
|
||||
* Mon Aug 15 2005 - schwab@suse.de
|
||||
* Mon Aug 15 2005 schwab@suse.de
|
||||
- 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.
|
||||
* Mon Aug 01 2005 - uli@suse.de
|
||||
* Mon Aug 01 2005 uli@suse.de
|
||||
- update -> 0.7.1
|
||||
- enabled x86_64-system
|
||||
* Mon Jul 11 2005 - uli@suse.de
|
||||
* Mon Jul 11 2005 uli@suse.de
|
||||
- update -> CVS (MIPS emulation)
|
||||
- build with throwaway GCC3 (still no GCC4-compatible QEMU in
|
||||
sight)
|
||||
@ -486,36 +506,36 @@ rm -rf %{gcc33tmp}
|
||||
- disabled qemu-fast (broken and deprecated)
|
||||
- disabled i386-user on x86_64 (useless)
|
||||
- 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
|
||||
* Thu Jan 27 2005 - uli@suse.de
|
||||
* Thu Jan 27 2005 uli@suse.de
|
||||
- baselibs-x86 link is unnecessary on x86/AMD64
|
||||
- two ARM emulation fixes (RRX operand fix by Paul Brook, shifter
|
||||
carry fix by me)
|
||||
- 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
|
||||
- build softmmu binaries on s390 (still doesn't work though)
|
||||
- pack /emul/ia32-linux directory and symlink from /usr/share/qemu
|
||||
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
|
||||
(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
|
||||
hardware (IDE, PCI, network, VGA, APM, PowerMac), minor fixes,
|
||||
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)
|
||||
- make uname() return target machine name (fixes config.guess,
|
||||
rpm etc.)
|
||||
- fake sigaltstack() (fixes m4)
|
||||
- enabled x86-64
|
||||
* Wed May 05 2004 - uli@suse.de
|
||||
* Wed May 05 2004 uli@suse.de
|
||||
- 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)
|
||||
* Wed Apr 28 2004 - uli@suse.de
|
||||
* Wed Apr 28 2004 uli@suse.de
|
||||
- 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
|
||||
|
Loading…
Reference in New Issue
Block a user