diff options
-rw-r--r-- | meta/packages/qemu/files/arm_nptl.patch | 117 |
1 files changed, 65 insertions, 52 deletions
diff --git a/meta/packages/qemu/files/arm_nptl.patch b/meta/packages/qemu/files/arm_nptl.patch index f9b10aebc5..eba1afbc21 100644 --- a/meta/packages/qemu/files/arm_nptl.patch +++ b/meta/packages/qemu/files/arm_nptl.patch @@ -1,25 +1,38 @@ + configure | 29 +++++++ + exec-all.h | 158 ---------------------------------------- + linux-user/arm/syscall.h | 4 - + linux-user/main.c | 94 +++++++++++++++++++++--- + linux-user/qemu.h | 3 + linux-user/syscall.c | 90 ++++++++++++++++++++--- + qemu_spinlock.h | 182 +++++++++++++++++++++++++++++++++++++++++++++++ + target-arm/cpu.h | 19 ++++ + target-arm/exec.h | 2 + target-arm/op.c | 6 + + target-arm/translate.c | 10 ++ + 11 files changed, 415 insertions(+), 182 deletions(-) + Index: qemu/configure =================================================================== ---- qemu.orig/configure 2006-08-26 16:31:53.000000000 +0100 -+++ qemu/configure 2006-08-26 16:31:53.000000000 +0100 -@@ -97,6 +97,7 @@ +--- qemu.orig/configure 2006-11-23 10:48:22.000000000 +0000 ++++ qemu/configure 2006-11-23 10:48:25.000000000 +0000 +@@ -95,6 +95,7 @@ softmmu="yes" + user="no" build_docs="no" - build_acpi_tables="no" uname_release="" +nptl="yes" # OS specific targetos=`uname -s` -@@ -243,6 +244,8 @@ +@@ -237,6 +238,8 @@ for opt do ;; - --enable-iasl) build_acpi_tables="yes" + --enable-uname-release=*) uname_release="$optarg" ;; + --disable-nptl) nptl="no" + ;; esac done -@@ -441,6 +444,23 @@ +@@ -433,6 +436,23 @@ EOF fi fi @@ -43,7 +56,7 @@ Index: qemu/configure ########################################## # SDL probe -@@ -559,6 +579,7 @@ +@@ -551,6 +571,7 @@ else fi echo "FMOD support $fmod $fmod_support" echo "kqemu support $kqemu" @@ -51,7 +64,7 @@ Index: qemu/configure echo "Documentation $build_docs" [ ! -z "$uname_release" ] && \ echo "uname -r $uname_release" -@@ -880,6 +901,14 @@ +@@ -875,6 +896,14 @@ if test "$target_user_only" = "no"; then echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak fi fi @@ -68,9 +81,9 @@ Index: qemu/configure if test "$cocoa" = "yes" ; then Index: qemu/exec-all.h =================================================================== ---- qemu.orig/exec-all.h 2006-08-26 16:28:32.000000000 +0100 -+++ qemu/exec-all.h 2006-08-26 16:31:53.000000000 +0100 -@@ -347,163 +347,7 @@ +--- qemu.orig/exec-all.h 2006-11-23 10:38:32.000000000 +0000 ++++ qemu/exec-all.h 2006-11-23 10:48:25.000000000 +0000 +@@ -357,163 +357,7 @@ extern CPUWriteMemoryFunc *io_mem_write[ extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4]; extern void *io_mem_opaque[IO_MEM_NB_ENTRIES]; @@ -237,9 +250,9 @@ Index: qemu/exec-all.h Index: qemu/linux-user/arm/syscall.h =================================================================== ---- qemu.orig/linux-user/arm/syscall.h 2006-03-09 19:18:11.000000000 +0000 -+++ qemu/linux-user/arm/syscall.h 2006-08-26 16:31:53.000000000 +0100 -@@ -28,7 +28,9 @@ +--- qemu.orig/linux-user/arm/syscall.h 2005-04-27 21:11:21.000000000 +0100 ++++ qemu/linux-user/arm/syscall.h 2006-11-23 10:48:25.000000000 +0000 +@@ -28,7 +28,9 @@ struct target_pt_regs { #define ARM_SYSCALL_BASE 0x900000 #define ARM_THUMB_SYSCALL 0 @@ -252,9 +265,9 @@ Index: qemu/linux-user/arm/syscall.h #define ARM_NR_thumb_semihosting 0xAB Index: qemu/linux-user/main.c =================================================================== ---- qemu.orig/linux-user/main.c 2006-08-26 16:28:40.000000000 +0100 -+++ qemu/linux-user/main.c 2006-08-26 16:31:53.000000000 +0100 -@@ -309,6 +309,50 @@ +--- qemu.orig/linux-user/main.c 2006-11-23 10:38:34.000000000 +0000 ++++ qemu/linux-user/main.c 2006-11-23 10:48:25.000000000 +0000 +@@ -313,6 +313,50 @@ static void arm_cache_flush(target_ulong } } @@ -305,7 +318,7 @@ Index: qemu/linux-user/main.c void cpu_loop(CPUARMState *env) { int trapnr; -@@ -365,10 +409,8 @@ +@@ -369,10 +413,8 @@ void cpu_loop(CPUARMState *env) } } @@ -318,7 +331,7 @@ Index: qemu/linux-user/main.c env->regs[0] = do_arm_semihosting (env); } else if (n == 0 || n >= ARM_SYSCALL_BASE || (env->thumb && n == ARM_THUMB_SYSCALL)) { -@@ -379,14 +421,34 @@ +@@ -383,14 +425,34 @@ void cpu_loop(CPUARMState *env) n -= ARM_SYSCALL_BASE; env->eabi = 0; } @@ -361,7 +374,7 @@ Index: qemu/linux-user/main.c } else { goto error; } -@@ -425,6 +487,10 @@ +@@ -429,6 +491,10 @@ void cpu_loop(CPUARMState *env) } } break; @@ -372,7 +385,7 @@ Index: qemu/linux-user/main.c default: error: fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", -@@ -1639,6 +1705,10 @@ +@@ -1757,6 +1823,10 @@ int main(int argc, char **argv) ts->heap_base = info->brk; /* This will be filled in on the first SYS_HEAPINFO call. */ ts->heap_limit = 0; @@ -385,10 +398,10 @@ Index: qemu/linux-user/main.c { Index: qemu/linux-user/qemu.h =================================================================== ---- qemu.orig/linux-user/qemu.h 2006-08-26 16:28:40.000000000 +0100 -+++ qemu/linux-user/qemu.h 2006-08-26 16:33:50.000000000 +0100 -@@ -75,6 +75,9 @@ - uint32_t v86mask; +--- qemu.orig/linux-user/qemu.h 2006-11-23 10:38:34.000000000 +0000 ++++ qemu/linux-user/qemu.h 2006-11-23 10:48:25.000000000 +0000 +@@ -79,6 +79,9 @@ typedef struct TaskState { + int sim_syscalls; #endif int used; /* non zero if used */ +#ifdef USE_NPTL @@ -399,8 +412,8 @@ Index: qemu/linux-user/qemu.h } __attribute__((aligned(16))) TaskState; Index: qemu/linux-user/syscall.c =================================================================== ---- qemu.orig/linux-user/syscall.c 2006-08-26 16:28:40.000000000 +0100 -+++ qemu/linux-user/syscall.c 2006-08-26 16:31:53.000000000 +0100 +--- qemu.orig/linux-user/syscall.c 2006-11-23 10:38:34.000000000 +0000 ++++ qemu/linux-user/syscall.c 2006-11-23 10:53:48.000000000 +0000 @@ -66,9 +66,18 @@ #include <linux/kd.h> @@ -417,10 +430,10 @@ Index: qemu/linux-user/syscall.c +#define CLONE_NPTL_FLAGS2 0 +#endif + - #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) + #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \ + || defined(TARGET_M68K) /* 16 bit uid wrappers emulation */ - #define USE_UID16 -@@ -1602,20 +1611,38 @@ +@@ -1640,20 +1649,38 @@ int do_modify_ldt(CPUX86State *env, int thread/process */ #define NEW_STACK_SIZE 8192 @@ -460,7 +473,7 @@ Index: qemu/linux-user/syscall.c if (flags & CLONE_VM) { ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE); -@@ -1665,16 +1692,60 @@ +@@ -1709,16 +1736,60 @@ int do_fork(CPUState *env, unsigned int #error unsupported target CPU #endif new_env->opaque = ts; @@ -525,7 +538,7 @@ Index: qemu/linux-user/syscall.c } return ret; } -@@ -1918,7 +1989,7 @@ +@@ -1962,7 +2033,7 @@ long do_syscall(void *cpu_env, int num, ret = do_brk(arg1); break; case TARGET_NR_fork: @@ -534,7 +547,7 @@ Index: qemu/linux-user/syscall.c break; case TARGET_NR_waitpid: { -@@ -2989,7 +3060,8 @@ +@@ -3033,7 +3104,8 @@ long do_syscall(void *cpu_env, int num, ret = get_errno(fsync(arg1)); break; case TARGET_NR_clone: @@ -544,7 +557,7 @@ Index: qemu/linux-user/syscall.c break; #ifdef __NR_exit_group /* new thread calls */ -@@ -3339,7 +3411,8 @@ +@@ -3383,7 +3455,8 @@ long do_syscall(void *cpu_env, int num, #endif #ifdef TARGET_NR_vfork case TARGET_NR_vfork: @@ -554,15 +567,15 @@ Index: qemu/linux-user/syscall.c break; #endif #ifdef TARGET_NR_ugetrlimit -@@ -3838,4 +3911,3 @@ +@@ -3882,4 +3955,3 @@ long do_syscall(void *cpu_env, int num, #endif return ret; } - Index: qemu/target-arm/cpu.h =================================================================== ---- qemu.orig/target-arm/cpu.h 2006-03-09 19:18:27.000000000 +0000 -+++ qemu/target-arm/cpu.h 2006-08-26 16:31:53.000000000 +0100 +--- qemu.orig/target-arm/cpu.h 2006-11-23 10:38:37.000000000 +0000 ++++ qemu/target-arm/cpu.h 2006-11-23 10:48:25.000000000 +0000 @@ -35,6 +35,9 @@ #define EXCP_IRQ 5 #define EXCP_FIQ 6 @@ -573,7 +586,7 @@ Index: qemu/target-arm/cpu.h /* We currently assume float and double are IEEE single and double precision respectively. -@@ -85,6 +88,7 @@ +@@ -85,6 +88,7 @@ typedef struct CPUARMState { uint32_t c9_data; uint32_t c13_fcse; /* FCSE PID. */ uint32_t c13_context; /* Context ID. */ @@ -581,7 +594,7 @@ Index: qemu/target-arm/cpu.h } cp15; /* Internal CPU feature flags. */ -@@ -135,6 +139,15 @@ +@@ -135,6 +139,15 @@ struct siginfo; int cpu_arm_signal_handler(int host_signum, struct siginfo *info, void *puc); @@ -597,7 +610,7 @@ Index: qemu/target-arm/cpu.h #define CPSR_M (0x1f) #define CPSR_T (1 << 5) #define CPSR_F (1 << 6) -@@ -146,7 +159,11 @@ +@@ -146,7 +159,11 @@ int cpu_arm_signal_handler(int host_sign #define CPSR_J (1 << 24) #define CPSR_IT_0_1 (3 << 25) #define CPSR_Q (1 << 27) @@ -612,9 +625,9 @@ Index: qemu/target-arm/cpu.h /* Return the current CPSR value. */ Index: qemu/target-arm/exec.h =================================================================== ---- qemu.orig/target-arm/exec.h 2006-03-09 19:18:27.000000000 +0000 -+++ qemu/target-arm/exec.h 2006-08-26 16:31:53.000000000 +0100 -@@ -51,8 +51,6 @@ +--- qemu.orig/target-arm/exec.h 2005-11-26 10:38:39.000000000 +0000 ++++ qemu/target-arm/exec.h 2006-11-23 10:48:25.000000000 +0000 +@@ -51,8 +51,6 @@ int cpu_arm_handle_mmu_fault (CPUState * /* In op_helper.c */ @@ -625,9 +638,9 @@ Index: qemu/target-arm/exec.h Index: qemu/target-arm/op.c =================================================================== ---- qemu.orig/target-arm/op.c 2006-08-26 16:28:48.000000000 +0100 -+++ qemu/target-arm/op.c 2006-08-26 16:31:53.000000000 +0100 -@@ -891,6 +891,12 @@ +--- qemu.orig/target-arm/op.c 2006-08-26 18:37:27.000000000 +0100 ++++ qemu/target-arm/op.c 2006-11-23 10:48:25.000000000 +0000 +@@ -891,6 +891,12 @@ void OPPROTO op_bkpt(void) cpu_loop_exit(); } @@ -642,9 +655,9 @@ Index: qemu/target-arm/op.c "d" suffix. */ Index: qemu/target-arm/translate.c =================================================================== ---- qemu.orig/target-arm/translate.c 2006-08-26 16:28:48.000000000 +0100 -+++ qemu/target-arm/translate.c 2006-08-26 16:31:53.000000000 +0100 -@@ -2382,6 +2382,7 @@ +--- qemu.orig/target-arm/translate.c 2006-11-23 10:38:37.000000000 +0000 ++++ qemu/target-arm/translate.c 2006-11-23 10:48:25.000000000 +0000 +@@ -2382,6 +2382,7 @@ undef: s->is_jmp = DISAS_JUMP; } @@ -652,7 +665,7 @@ Index: qemu/target-arm/translate.c /* generate intermediate code in gen_opc_buf and gen_opparam_buf for basic block 'tb'. If search_pc is TRUE, also generate PC information for each intermediate instruction. */ -@@ -2416,6 +2417,15 @@ +@@ -2416,6 +2417,15 @@ static inline int gen_intermediate_code_ nb_gen_labels = 0; lj = -1; do { @@ -671,7 +684,7 @@ Index: qemu/target-arm/translate.c Index: qemu/qemu_spinlock.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ qemu/qemu_spinlock.h 2006-08-26 16:31:53.000000000 +0100 ++++ qemu/qemu_spinlock.h 2006-11-23 10:48:25.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * internal execution defines for qemu |