VirtualBox

Changeset 15034 in vbox for trunk


Ignore:
Timestamp:
Dec 5, 2008 12:28:44 PM (16 years ago)
Author:
vboxsync
Message:

new_recompiler: force promoution on helpers invoked from generated code, removed old GCC junk

Location:
trunk/src/recompiler_new
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler_new/Makefile.kmk

    r15028 r15034  
    5656else
    5757
    58 TOOL_GCC3V3 = description
    59 TOOL_GCC3V3_EXTENDS = GCC3
    60 TOOL_GCC3V3_CC = $(firstword $(which gcc-4.1.2 gcc-3.4 gcc-3.4.6 gcc-3.3 gcc-3.3.6  gcc-3.2 gcc-4.1 gcc-4.2))
    61 TOOL_GCC3V3_COMPILE_C_DEPEND =
    62 TOOL_GCC3V3_COMPILE_C_DEPORD =
    63 TOOL_GCC3V3_COMPILE_C_OUTPUT =
    64 define TOOL_GCC3V3_COMPILE_C_CMDS
     58 # Just keep it here, if need to experiment with older compilers in the future
     59 TOOL_GCC3V3 = description
     60 TOOL_GCC3V3_EXTENDS = GCC3
     61 TOOL_GCC3V3_CC = $(firstword $(which gcc-4.2 gcc-4.1 gcc-3.4 gcc-3.4.6 gcc-3.3 gcc-3.3.6  gcc-3.2))
     62 TOOL_GCC3V3_COMPILE_C_DEPEND =
     63 TOOL_GCC3V3_COMPILE_C_DEPORD =
     64 TOOL_GCC3V3_COMPILE_C_OUTPUT =
     65 define TOOL_GCC3V3_COMPILE_C_CMDS
    6566        $(QUIET)$(TOOL_GCC3V3_CC) -c\
    6667                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     
    6869                -o $(obj)\
    6970                $(abspath $(source))
    70 endef
    71 
    72  # Unfortunately little pinguins tend to have default compilers no suitable
    73  # for real compilation, so search better alternatives
    74  if1of ($(KBUILD_TARGET),)
    75   $(REM_MOD)_TOOL      = GCC3V3
    76   $(REM_MOD)_TEMPLATE  = DUMMY
    77   $(REM_MOD)_CFLAGS    = -fPIC                                          \
    78                          -Wall -fno-strict-aliasing -Wno-unused         \
    79                          -Wno-long-long -Wno-sign-compare
    80   $(REM_MOD)_CFLAGS.x86      = -m32
    81   $(REM_MOD)_CFLAGS.amd64    = -m64
    82   $(REM_MOD)_CFLAGS.debug    = -g -O0
    83   $(REM_MOD)_CFLAGS.release += -O2
    84  else
    85   $(REM_MOD)_TEMPLATE  = VBOXR3NP
    86  endif
     71 endef
     72 #target-i386/op_helper.c_TOOL = GCC3V3
     73
     74 $(REM_MOD)_TEMPLATE  = VBOXR3NP
    8775
    8876 IMPORT_LIBS          += VBoxREM
     
    132120        target-i386/helper.c    \
    133121        target-i386/translate.c
    134 
    135 #target-i386/helper.c_TOOL = GCC3V3
    136122
    137123ifeq ($(KBUILD_TARGET_ARCH),amd64)
  • trunk/src/recompiler_new/softmmu_defs.h

    r14542 r15034  
    22#define SOFTMMU_DEFS_H
    33
     4#ifndef VBOX
    45uint8_t REGPARM __ldb_mmu(target_ulong addr, int mmu_idx);
    56void REGPARM __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
     
    1920uint64_t REGPARM __ldq_cmmu(target_ulong addr, int mmu_idx);
    2021void REGPARM __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
     22#else
     23RTCCUINTREG REGPARM __ldb_mmu(target_ulong addr, int mmu_idx);
     24void REGPARM __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
     25RTCCUINTREG REGPARM __ldw_mmu(target_ulong addr, int mmu_idx);
     26void REGPARM __stw_mmu(target_ulong addr, uint16_t val, int mmu_idx);
     27RTCCUINTREG REGPARM __ldl_mmu(target_ulong addr, int mmu_idx);
     28void REGPARM __stl_mmu(target_ulong addr, uint32_t val, int mmu_idx);
     29uint64_t REGPARM __ldq_mmu(target_ulong addr, int mmu_idx);
     30void REGPARM __stq_mmu(target_ulong addr, uint64_t val, int mmu_idx);
     31
     32RTCCUINTREG REGPARM __ldb_cmmu(target_ulong addr, int mmu_idx);
     33void REGPARM __stb_cmmu(target_ulong addr, uint8_t val, int mmu_idx);
     34RTCCUINTREG REGPARM __ldw_cmmu(target_ulong addr, int mmu_idx);
     35void REGPARM __stw_cmmu(target_ulong addr, uint16_t val, int mmu_idx);
     36RTCCUINTREG REGPARM __ldl_cmmu(target_ulong addr, int mmu_idx);
     37void REGPARM __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx);
     38uint64_t REGPARM __ldq_cmmu(target_ulong addr, int mmu_idx);
     39void REGPARM __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
     40#endif
    2141
    2242#endif
  • trunk/src/recompiler_new/softmmu_template.h

    r13731 r15034  
    3333#define USUFFIX q
    3434#define DATA_TYPE uint64_t
     35#define DATA_TYPE_PROMOUTED uint64_t
    3536#elif DATA_SIZE == 4
    3637#define SUFFIX l
    3738#define USUFFIX l
    3839#define DATA_TYPE uint32_t
     40#ifdef VBOX
     41#define DATA_TYPE_PROMOUTED RTCCUINTREG
     42#endif
    3943#elif DATA_SIZE == 2
    4044#define SUFFIX w
    4145#define USUFFIX uw
    4246#define DATA_TYPE uint16_t
     47#ifdef VBOX
     48#define DATA_TYPE_PROMOUTED RTCCUINTREG
     49#endif
    4350#elif DATA_SIZE == 1
    4451#define SUFFIX b
    4552#define USUFFIX ub
    4653#define DATA_TYPE uint8_t
     54#ifdef VBOX
     55#define DATA_TYPE_PROMOUTED RTCCUINTREG
     56#endif
    4757#else
    4858#error unsupported data size
     
    98108
    99109/* handle all cases except unaligned access which span two pages */
     110#ifndef VBOX
    100111DATA_TYPE REGPARM glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr,
    101112                                                      int mmu_idx)
     113#else
     114/* Load helpers invoked from generated code, and TCG makes an assumption
     115   that valid value takes the whole register, why gcc after 4.3 may
     116   use only lower part of register for smaller types. So force promoution. */
     117DATA_TYPE_PROMOUTED REGPARM
     118glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr,
     119                                    int mmu_idx)
     120#endif
    102121{
    103122    DATA_TYPE res;
     
    347366#endif /* !defined(SOFTMMU_CODE_ACCESS) */
    348367
     368#ifdef VBOX
     369#undef DATA_TYPE_PROMOUTED
     370#endif
    349371#undef READ_ACCESS_TYPE
    350372#undef SHIFT
  • trunk/src/recompiler_new/target-i386/helper.h

    r14542 r15034  
    134134DEF_HELPER(void, helper_fildl_ST0, (int32_t val))
    135135DEF_HELPER(void, helper_fildll_ST0, (int64_t val))
     136#ifndef VBOX
    136137DEF_HELPER(uint32_t, helper_fsts_ST0, (void))
    137138DEF_HELPER(uint64_t, helper_fstl_ST0, (void))
     
    142143DEF_HELPER(int32_t, helper_fisttl_ST0, (void))
    143144DEF_HELPER(int64_t, helper_fisttll_ST0, (void))
     145#else
     146DEF_HELPER(RTCCUINTREG, helper_fsts_ST0, (void))
     147DEF_HELPER(uint64_t, helper_fstl_ST0, (void))
     148DEF_HELPER(RTCCINTREG, helper_fist_ST0, (void))
     149DEF_HELPER(RTCCINTREG, helper_fistl_ST0, (void))
     150DEF_HELPER(int64_t, helper_fistll_ST0, (void))
     151DEF_HELPER(RTCCINTREG, helper_fistt_ST0, (void))
     152DEF_HELPER(RTCCINTREG, helper_fisttl_ST0, (void))
     153DEF_HELPER(int64_t, helper_fisttll_ST0, (void))
     154#endif
    144155DEF_HELPER(void, helper_fldt_ST0, (target_ulong ptr))
    145156DEF_HELPER(void, helper_fstt_ST0, (target_ulong ptr))
     
    181192DEF_HELPER(void, helper_fldz_ST0, (void))
    182193DEF_HELPER(void, helper_fldz_FT0, (void))
     194#ifndef VBOX
    183195DEF_HELPER(uint32_t, helper_fnstsw, (void))
    184196DEF_HELPER(uint32_t, helper_fnstcw, (void))
     197#else
     198DEF_HELPER(RTCCUINTREG, helper_fnstsw, (void))
     199DEF_HELPER(RTCCUINTREG, helper_fnstcw, (void))
     200#endif
    185201DEF_HELPER(void, helper_fldcw, (uint32_t val))
    186202DEF_HELPER(void, helper_fclex, (void))
  • trunk/src/recompiler_new/target-i386/op_helper.c

    r15009 r15034  
    41094109}
    41104110
     4111#ifndef VBOX
    41114112uint32_t helper_fsts_ST0(void)
     4113#else
     4114RTCCUINTREG helper_fsts_ST0(void)
     4115#endif
    41124116{
    41134117    union {
     
    41284132    return u.i;
    41294133}
    4130 
     4134#ifndef VBOX
    41314135int32_t helper_fist_ST0(void)
     4136#else
     4137RTCCINTREG helper_fist_ST0(void)
     4138#endif
    41324139{
    41334140    int32_t val;
     
    41384145}
    41394146
     4147#ifndef VBOX
    41404148int32_t helper_fistl_ST0(void)
     4149#else
     4150RTCCINTREG helper_fistl_ST0(void)
     4151#endif
    41414152{
    41424153    int32_t val;
     
    41524163}
    41534164
     4165#ifndef VBOX
    41544166int32_t helper_fistt_ST0(void)
     4167#else
     4168RTCCINTREG helper_fistt_ST0(void)
     4169#endif
    41554170{
    41564171    int32_t val;
     
    41614176}
    41624177
     4178#ifndef VBOX
    41634179int32_t helper_fisttl_ST0(void)
     4180#else
     4181RTCCINTREG helper_fisttl_ST0(void)
     4182#endif
    41644183{
    41654184    int32_t val;
     
    44134432}
    44144433
     4434#ifndef VBOX
    44154435uint32_t helper_fnstsw(void)
     4436#else
     4437RTCCUINTREG helper_fnstsw(void)
     4438#endif
    44164439{
    44174440    return (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
    44184441}
    44194442
     4443#ifndef VBOX
    44204444uint32_t helper_fnstcw(void)
     4445#else
     4446RTCCUINTREG helper_fnstcw(void)
     4447#endif
    44214448{
    44224449    return env->fpuc;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette