Author: gb
Date: Sat Feb 3 12:04:33 2007
New Revision: 116064
Added:
packages/cooker/virtualbox/current/SOURCES/vbox-1.3.3-64bit-fixes.patch
Modified:
packages/cooker/virtualbox/current/SPECS/virtualbox.spec
Log:
- various 64-bit fixes
Added: packages/cooker/virtualbox/current/SOURCES/vbox-1.3.3-64bit-fixes.patch
==============================================================================
--- (empty file)
+++ packages/cooker/virtualbox/current/SOURCES/vbox-1.3.3-64bit-fixes.patch
Sat Feb 3 12:04:33 2007
@@ -0,0 +1,321 @@
+2007-02-03 Gwenole Beauchesne <[EMAIL PROTECTED]>
+
+ * Various 64-bit fixes.
+
+--- vbox-1.3.3/include/iprt/asm.h.64bit-fixes 2007-02-02 15:17:17.000000000
+0100
++++ vbox-1.3.3/include/iprt/asm.h 2007-02-03 10:53:35.000000000 +0100
+@@ -521,6 +521,19 @@ DECLASM(void) ASMCpuId(uint32_t uOperato
+ DECLINLINE(void) ASMCpuId(uint32_t uOperator, void *pvEAX, void *pvEBX, void
*pvECX, void *pvEDX)
+ {
+ # if RT_INLINE_ASM_GNU_STYLE
++# ifdef __AMD64__
++ uint32_t uEAX;
++ uint32_t uEBX;
++ uint32_t uECX;
++ uint32_t uEDX;
++ __asm__ ("cpuid"
++ : "=a" (uEAX), "=b" (uEBX), "=c" (uECX), "=d" (uEDX)
++ : "0" (uOperator));
++ *(uint32_t *)pvEAX = uEAX;
++ *(uint32_t *)pvEBX = uEBX;
++ *(uint32_t *)pvECX = uECX;
++ *(uint32_t *)pvEDX = uEDX;
++# else
+ __asm__ ("xchgl %%ebx, %1\n\t"
+ "cpuid\n\t"
+ "xchgl %%ebx, %1\n\t"
+@@ -529,6 +542,7 @@ DECLINLINE(void) ASMCpuId(uint32_t uOper
+ "=c" (*(uint32_t *)pvECX),
+ "=d" (*(uint32_t *)pvEDX)
+ : "0" (uOperator));
++# endif
+
+ # elif RT_INLINE_ASM_USES_INTRIN
+ int aInfo[4];
+--- vbox-1.3.3/src/recompiler/new/cpu-exec.c.64bit-fixes 2007-01-23
10:30:18.000000000 +0100
++++ vbox-1.3.3/src/recompiler/new/cpu-exec.c 2007-02-03 11:57:57.000000000
+0100
+@@ -228,32 +228,8 @@ static inline TranslationBlock *tb_find_
+
+ int cpu_exec(CPUState *env1)
+ {
+- int saved_T0, saved_T1, saved_T2;
+- CPUState *saved_env;
+-#ifdef reg_EAX
+- int saved_EAX;
+-#endif
+-#ifdef reg_ECX
+- int saved_ECX;
+-#endif
+-#ifdef reg_EDX
+- int saved_EDX;
+-#endif
+-#ifdef reg_EBX
+- int saved_EBX;
+-#endif
+-#ifdef reg_ESP
+- int saved_ESP;
+-#endif
+-#ifdef reg_EBP
+- int saved_EBP;
+-#endif
+-#ifdef reg_ESI
+- int saved_ESI;
+-#endif
+-#ifdef reg_EDI
+- int saved_EDI;
+-#endif
++#define DO_HOST_REGS_DECLARE
++#include "hostregs_helper.h"
+ #if defined(__sparc__) && !defined(HOST_SOLARIS)
+ int saved_i7, tmp_T0;
+ #endif
+@@ -317,44 +293,15 @@ int cpu_exec(CPUState *env1)
+ cpu_single_env = env1;
+
+ /* first we save global registers */
+- saved_env = env;
++#define DO_HOST_REGS_SAVE
++#include "hostregs_helper.h"
+ env = env1;
+- saved_T0 = T0;
+- saved_T1 = T1;
+-#if defined(reg_T2)
+- saved_T2 = T2;
+-#endif
+ #if defined(__sparc__) && !defined(HOST_SOLARIS)
+ /* we also save i7 because longjmp may not restore it */
+ asm volatile ("mov %%i7, %0" : "=r" (saved_i7));
+ #endif
+
+ #if defined(TARGET_I386)
+-#ifdef reg_EAX
+- saved_EAX = EAX;
+-#endif
+-#ifdef reg_ECX
+- saved_ECX = ECX;
+-#endif
+-#ifdef reg_EDX
+- saved_EDX = EDX;
+-#endif
+-#ifdef reg_EBX
+- saved_EBX = EBX;
+-#endif
+-#ifdef reg_ESP
+- saved_ESP = ESP;
+-#endif
+-#ifdef reg_EBP
+- saved_EBP = EBP;
+-#endif
+-#ifdef reg_ESI
+- saved_ESI = ESI;
+-#endif
+-#ifdef reg_EDI
+- saved_EDI = EDI;
+-#endif
+-
+ env_to_regs();
+ /* put eflags in CPU temporary format */
+ CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
+@@ -627,39 +574,13 @@ int cpu_exec(CPUState *env1)
+ #if defined(TARGET_I386)
+ /* restore flags in standard format */
+ env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF &
DF_MASK);
+-
+- /* restore global registers */
+-#ifdef reg_EAX
+- EAX = saved_EAX;
+-#endif
+-#ifdef reg_ECX
+- ECX = saved_ECX;
+-#endif
+-#ifdef reg_EDX
+- EDX = saved_EDX;
+-#endif
+-#ifdef reg_EBX
+- EBX = saved_EBX;
+-#endif
+-#ifdef reg_ESP
+- ESP = saved_ESP;
+-#endif
+-#ifdef reg_EBP
+- EBP = saved_EBP;
+-#endif
+-#ifdef reg_ESI
+- ESI = saved_ESI;
+-#endif
+-#ifdef reg_EDI
+- EDI = saved_EDI;
+-#endif
+ #else
+ #error unsupported target CPU
+ #endif
+- T0 = saved_T0;
+- T1 = saved_T1;
+- T2 = saved_T2;
+- env = saved_env;
++
++ /* restore global registers */
++#define DO_HOST_REGS_RESTORE
++#include "hostregs_helper.h"
+ return ret;
+ }
+
+--- vbox-1.3.3/src/recompiler/new/hostregs_helper.h.64bit-fixes
2007-02-03 12:00:03.000000000 +0100
++++ vbox-1.3.3/src/recompiler/new/hostregs_helper.h 2007-02-03
11:51:06.000000000 +0100
+@@ -0,0 +1,145 @@
++/*
++ * host registers helpers for dyngen execution engine
++ *
++ * Copyright (c) 2003 Fabrice Bellard
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#ifdef AREG0
++#define DO_AREG0(x) x
++#else
++#define DO_AREG0(x)
++#endif
++
++#ifdef AREG1
++#define DO_AREG1(x) x
++#else
++#define DO_AREG1(x)
++#endif
++
++#ifdef AREG2
++#define DO_AREG2(x) x
++#else
++#define DO_AREG2(x)
++#endif
++
++#ifdef AREG3
++#define DO_AREG3(x) x
++#else
++#define DO_AREG3(x)
++#endif
++
++#ifdef AREG4
++#define DO_AREG4(x) x
++#else
++#define DO_AREG4(x)
++#endif
++
++#ifdef AREG5
++#define DO_AREG5(x) x
++#else
++#define DO_AREG5(x)
++#endif
++
++#ifdef AREG6
++#define DO_AREG6(x) x
++#else
++#define DO_AREG6(x)
++#endif
++
++#ifdef AREG7
++#define DO_AREG7(x) x
++#else
++#define DO_AREG7(x)
++#endif
++
++#ifdef AREG8
++#define DO_AREG8(x) x
++#else
++#define DO_AREG8(x)
++#endif
++
++#ifdef AREG9
++#define DO_AREG9(x) x
++#else
++#define DO_AREG9(x)
++#endif
++
++#ifdef AREG10
++#define DO_AREG10(x) x
++#else
++#define DO_AREG10(x)
++#endif
++
++#ifdef AREG11
++#define DO_AREG11(x) x
++#else
++#define DO_AREG11(x)
++#endif
++
++#if defined(DO_HOST_REGS_DECLARE)
++#define DO_EXPR(REG)
\
++ register uintptr_t reg_AREG##REG asm(AREG##REG); \
++ volatile uintptr_t saved_AREG##REG;
++#elif defined(DO_HOST_REGS_SAVE)
++#define DO_EXPR(REG) saved_AREG##REG = reg_AREG##REG;
++#elif defined(DO_HOST_REGS_RESTORE)
++#define DO_EXPR(REG) do {
\
++ reg_AREG##REG = saved_AREG##REG; \
++ __asm__ __volatile__ ("" : : "r" (reg_AREG##REG)); \
++} while (0);
++#endif
++
++DO_AREG0(DO_EXPR(0))
++#undef DO_AREG0
++
++DO_AREG1(DO_EXPR(1))
++#undef DO_AREG1
++
++DO_AREG2(DO_EXPR(2))
++#undef DO_AREG2
++
++DO_AREG3(DO_EXPR(3))
++#undef DO_AREG3
++
++DO_AREG4(DO_EXPR(4))
++#undef DO_AREG4
++
++DO_AREG5(DO_EXPR(5))
++#undef DO_AREG5
++
++DO_AREG6(DO_EXPR(6))
++#undef DO_AREG6
++
++DO_AREG7(DO_EXPR(7))
++#undef DO_AREG7
++
++DO_AREG8(DO_EXPR(8))
++#undef DO_AREG8
++
++DO_AREG9(DO_EXPR(9))
++#undef DO_AREG9
++
++DO_AREG10(DO_EXPR(10))
++#undef DO_AREG10
++
++DO_AREG11(DO_EXPR(11))
++#undef DO_AREG11
++
++#undef DO_EXPR
++#undef DO_HOST_REGS_DECLARE
++#undef DO_HOST_REGS_SAVE
++#undef DO_HOST_REGS_RESTORE
+--- vbox-1.3.3/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_util.c.64bit-fixes
2007-01-23 10:30:24.000000000 +0100
++++ vbox-1.3.3/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_util.c
2007-02-03 10:53:35.000000000 +0100
+@@ -39,6 +39,8 @@
+ * Utility functions called by various backends.
+ */
+
++#define _GNU_SOURCE 1
++#include <string.h>
+ #include "xpidl.h"
+
+ /* XXXbe static */ char OOM[] = "ERROR: out of memory\n";
Modified: packages/cooker/virtualbox/current/SPECS/virtualbox.spec
==============================================================================
--- packages/cooker/virtualbox/current/SPECS/virtualbox.spec (original)
+++ packages/cooker/virtualbox/current/SPECS/virtualbox.spec Sat Feb 3
12:04:33 2007
@@ -29,6 +29,7 @@
Source11: virtualbox.16.png
Source12: virtualbox.48.png
Patch0: vbox-1.3.3-mdvconfig.patch
+Patch1: vbox-1.3.3-64bit-fixes.patch
License: GPL
Group: Emulators
Url: http://www.virtualbox.org/
@@ -67,6 +68,7 @@
%prep
%setup -q -n %{pkgname}-%{version}
%patch0 -p1 -b .mdvconfig
+%patch1 -p1 -b .64bit-fixes
%build
export LIBPATH_LIB="%{_lib}"