Working on linux x86 dyna
This commit is contained in:
parent
78f45da8da
commit
ad054f1b96
|
@ -85,3 +85,8 @@
|
|||
#error Invalid Target: TARGET_* not defined
|
||||
#endif
|
||||
|
||||
#ifdef HOST_NO_REC
|
||||
#ifndef HOST_NO_AREC
|
||||
#define HOST_NO_AREC 1
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,10 @@ ifndef NOT_ARM
|
|||
RZDCY_MODULES += rec-ARM/
|
||||
endif
|
||||
|
||||
ifdef X86_REC
|
||||
RZDCY_MODULES += rec-x86/
|
||||
endif
|
||||
|
||||
ifndef NO_REND
|
||||
RZDCY_MODULES += rend/gles/
|
||||
else
|
||||
|
@ -69,4 +73,4 @@ endif
|
|||
|
||||
ifdef NO_REC
|
||||
RZDCY_CXXFLAGS += -DHOST_NO_REC
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#if 1
|
||||
#include "types.h"
|
||||
#else
|
||||
//basic types
|
||||
typedef signed __int8 s8;
|
||||
typedef signed __int16 s16;
|
||||
|
@ -49,4 +52,5 @@ using namespace std;
|
|||
|
||||
#ifndef die
|
||||
#define die(reason) { printf("Fatal error : %s\n in %s -> %s : %d \n",reason,__FUNCTION__,__FILE__,__LINE__); dbgbreak;}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -193,7 +193,7 @@ typedef void* dyna_finalizeFP(void* ptr,u32 oldsize,u32 newsize);
|
|||
//define it here cus we use it on label type ;)
|
||||
class x86_block;
|
||||
// a label
|
||||
struct __declspec(dllexport) x86_Label
|
||||
struct /*__declspec(dllexport)*/ x86_Label
|
||||
{
|
||||
u32 target_opcode;
|
||||
u8 patch_sz;
|
||||
|
@ -202,7 +202,7 @@ struct __declspec(dllexport) x86_Label
|
|||
void* GetPtr();
|
||||
};
|
||||
//An empty type that we will use as ptr type.This is ptr-reference
|
||||
struct __declspec(dllexport) x86_ptr
|
||||
struct /*__declspec(dllexport)*/ x86_ptr
|
||||
{
|
||||
union
|
||||
{
|
||||
|
@ -216,7 +216,7 @@ struct __declspec(dllexport) x86_ptr
|
|||
}
|
||||
};
|
||||
//This is ptr/imm (for call/jmp)
|
||||
struct __declspec(dllexport) x86_ptr_imm
|
||||
struct /*__declspec(dllexport)*/ x86_ptr_imm
|
||||
{
|
||||
union
|
||||
{
|
||||
|
@ -255,11 +255,11 @@ struct x86_mrm_t
|
|||
u32 disp;
|
||||
};
|
||||
|
||||
__declspec(dllexport) x86_mrm_t x86_mrm(x86_reg base);
|
||||
__declspec(dllexport) x86_mrm_t x86_mrm(x86_reg base,x86_ptr disp);
|
||||
__declspec(dllexport) x86_mrm_t x86_mrm(x86_reg base,x86_reg index);
|
||||
__declspec(dllexport) x86_mrm_t x86_mrm(x86_reg index,x86_sib_scale scale,x86_ptr disp);
|
||||
__declspec(dllexport) x86_mrm_t x86_mrm(x86_reg base,x86_reg index,x86_sib_scale scale,x86_ptr disp);
|
||||
/*__declspec(dllexport)*/ x86_mrm_t x86_mrm(x86_reg base);
|
||||
/*__declspec(dllexport)*/ x86_mrm_t x86_mrm(x86_reg base,x86_ptr disp);
|
||||
/*__declspec(dllexport)*/ x86_mrm_t x86_mrm(x86_reg base,x86_reg index);
|
||||
/*__declspec(dllexport)*/ x86_mrm_t x86_mrm(x86_reg index,x86_sib_scale scale,x86_ptr disp);
|
||||
/*__declspec(dllexport)*/ x86_mrm_t x86_mrm(x86_reg base,x86_reg index,x86_sib_scale scale,x86_ptr disp);
|
||||
|
||||
|
||||
struct code_patch
|
||||
|
@ -273,7 +273,7 @@ struct code_patch
|
|||
u32 offset; //offset in opcode stream :)
|
||||
};
|
||||
|
||||
struct __declspec(dllexport) x86_block_externs
|
||||
struct /*__declspec(dllexport)*/ x86_block_externs
|
||||
{
|
||||
void Apply(void* code_base);
|
||||
bool Modify(u32 offs,u8* dst);
|
||||
|
@ -282,7 +282,7 @@ struct __declspec(dllexport) x86_block_externs
|
|||
};
|
||||
|
||||
//A block of x86 code :p
|
||||
class __declspec(dllexport) x86_block
|
||||
class /*__declspec(dllexport)*/ x86_block
|
||||
{
|
||||
private:
|
||||
void* _labels;
|
||||
|
|
|
@ -188,7 +188,7 @@ void armt_init();
|
|||
//void CreateTables();
|
||||
void arm_Init()
|
||||
{
|
||||
#if !defined(HOST_NO_REC)
|
||||
#if !defined(HOST_NO_AREC)
|
||||
armt_init();
|
||||
#endif
|
||||
//CreateTables();
|
||||
|
@ -398,7 +398,7 @@ void FlushCache();
|
|||
|
||||
void arm_Reset()
|
||||
{
|
||||
#if !defined(HOST_NO_REC)
|
||||
#if !defined(HOST_NO_AREC)
|
||||
FlushCache();
|
||||
#endif
|
||||
Arm7Enabled = false;
|
||||
|
@ -512,7 +512,7 @@ void update_armintc()
|
|||
reg[INTR_PEND].I=e68k_out && armFiqEnable;
|
||||
}
|
||||
|
||||
#ifdef HOST_NO_REC
|
||||
#ifdef HOST_NO_AREC
|
||||
void arm_Run(u32 CycleCount) { arm_Run_(CycleCount); }
|
||||
#else
|
||||
extern "C" void CompileCode();
|
||||
|
@ -789,7 +789,7 @@ u32 DYNACALL DoMemOp(u32 addr,u32 data)
|
|||
{
|
||||
u32 rv=0;
|
||||
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_REC)
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_AREC)
|
||||
addr=virt_arm_reg(0);
|
||||
data=virt_arm_reg(1);
|
||||
#endif
|
||||
|
@ -809,7 +809,7 @@ u32 DYNACALL DoMemOp(u32 addr,u32 data)
|
|||
arm_WriteMem32(addr,data);
|
||||
}
|
||||
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_REC)
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_AREC)
|
||||
virt_arm_reg(0)=rv;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "virt_arm.h"
|
||||
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_REC)
|
||||
#if HOST_CPU==CPU_X86 && !defined(HOST_NO_AREC)
|
||||
|
||||
#define C_CORE
|
||||
|
||||
|
@ -321,4 +321,4 @@ u32& virt_arm_reg(u32 id)
|
|||
return VARM::arm_Reg[id].I;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -92,14 +92,14 @@ u32 bm_gc_luc,bm_gcf_luc;
|
|||
DynarecCodeEntry* DYNACALL bm_GetCode(u32 addr)
|
||||
{
|
||||
//rdv_FailedToFindBlock_pc=addr;
|
||||
DynarecCodeEntry* rv=FPCA(addr);
|
||||
DynarecCodeEntry* rv=(DynarecCodeEntry*)FPCA(addr);
|
||||
|
||||
return rv;
|
||||
return (DynarecCodeEntry*)rv;
|
||||
}
|
||||
|
||||
DynarecCodeEntry* DYNACALL bm_GetCode2(u32 addr)
|
||||
{
|
||||
return bm_GetCode(addr);
|
||||
return (DynarecCodeEntry*)bm_GetCode(addr);
|
||||
}
|
||||
|
||||
RuntimeBlockInfo* DYNACALL bm_GetBlock(u32 addr)
|
||||
|
@ -155,7 +155,7 @@ void bm_AddBlock(RuntimeBlockInfo* blk)
|
|||
blkmap.insert(blk);
|
||||
|
||||
|
||||
verify(bm_GetCode(blk->addr)==ngen_FailedToFindBlock);
|
||||
verify((void*)bm_GetCode(blk->addr)==(void*)ngen_FailedToFindBlock);
|
||||
FPCA(blk->addr)=blk->code;
|
||||
|
||||
#ifdef DYNA_OPROF
|
||||
|
|
|
@ -66,7 +66,7 @@ void fault_handler (int sn, siginfo_t * si, void *ctxr)
|
|||
|
||||
if (VramLockedWrite((u8*)si->si_addr) || BM_LockedWrite((u8*)si->si_addr))
|
||||
return;
|
||||
#ifndef HOST_NO_REC
|
||||
#if !defined( HOST_NO_REC) && HOST_CPU==CPU_ARM
|
||||
else if (dyna_cde)
|
||||
{
|
||||
GET_PC_FROM_CONTEXT(ctxr)=(u32)ngen_readm_fail_v2((u32*)GET_PC_FROM_CONTEXT(ctxr),(u32*)&(ctx->uc_mcontext.arm_r0),(unat)si->si_addr);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#if BUILD_COMPILER==COMPILER_VC
|
||||
#define DYNACALL __fastcall
|
||||
#else
|
||||
#define DYNACALL
|
||||
#define DYNACALL __attribute__((fastcall))
|
||||
#endif
|
||||
|
||||
#if BUILD_COMPILER==COMPILER_VC
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
FOR_LINUX :=1
|
||||
NOT_ARM := 1
|
||||
NO_REC := 1
|
||||
X86_REC := 1
|
||||
#NO_REC := 1
|
||||
#NO_REND := 1
|
||||
|
||||
RZDCY_SRC_DIR = ../../core
|
||||
|
@ -26,33 +27,35 @@ LDFLAGS := -m32 -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-co
|
|||
|
||||
SOURCES := cfg/ hw/arm7/ hw/aica/ hw/asic/ hw/ hw/gdrom/ hw/maple/ \
|
||||
hw/mem/ hw/pvr/ hw/sh4/ hw/sh4/rec_v2/ plugins/ profiler/ serial_ipc/ \
|
||||
hw/extdev/ hw/arm/ imgread/ linux/ linux-dist/ ./ rec-ARM/ deps/zlib/ deps/chdr/ deps/crypto/ arm_emitter/
|
||||
hw/extdev/ hw/arm/ imgread/ linux/ linux-dist/ ./ rec-x86/ deps/zlib/ deps/chdr/ deps/crypto/ arm_emitter/
|
||||
|
||||
|
||||
CFLAGS := -m32 -g -O3 -D RELEASE -c -D TARGET_LINUX_x86 -D USES_HOMEDIR -D HOST_NO_AREC #-D NO_REND
|
||||
CFLAGS += -D SUPPORT_X11
|
||||
CFLAGS += -frename-registers -fno-strict-aliasing -fsingle-precision-constant
|
||||
CFLAGS += -ffast-math -ftree-vectorize
|
||||
|
||||
|
||||
CXXFLAGS := -m32 -g -O3 -D RELEASE -c -D TARGET_LINUX_x86 -D USES_HOMEDIR -D HOST_NO_REC #-D NO_REND
|
||||
CXXFLAGS += -frename-registers -fno-strict-aliasing -fsingle-precision-constant
|
||||
CXXFLAGS += -ffast-math -ftree-vectorize
|
||||
#-fprefetch-loop-arrays
|
||||
#-std=c++0x
|
||||
|
||||
CXXFLAGS += $(CFLAGS) $(MFLAGS) -fno-exceptions -fno-rtti
|
||||
CXXFLAGS += -D SUPPORT_X11
|
||||
CXXFLAGS = $(MFLAGS) -fno-exceptions -fno-rtti -fpermissive
|
||||
|
||||
|
||||
ifdef PGO_MAKE
|
||||
CXXFLAGS += -fprofile-generate -pg
|
||||
CFLAGS += -fprofile-generate -pg
|
||||
LDFLAGS += -fprofile-generate
|
||||
else
|
||||
CXXFLAGS += -fomit-frame-pointer
|
||||
CFLAGS += -fomit-frame-pointer
|
||||
endif
|
||||
|
||||
ifdef PGO_USE
|
||||
CXXFLAGS += -fprofile-use
|
||||
CFLAGS += -fprofile-use
|
||||
endif
|
||||
|
||||
|
||||
ifdef LTO_TEST
|
||||
CXXFLAGS += -flto -fwhole-program
|
||||
CFLAGS += -flto -fwhole-program
|
||||
LDFLAGS +=-flto -fwhole-program
|
||||
endif
|
||||
|
||||
|
@ -86,11 +89,11 @@ $(EXECUTABLE_STRIPPED): $(EXECUTABLE)
|
|||
|
||||
obj/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp
|
||||
mkdir -p $(dir $@)
|
||||
$(CXX) $(EXTRAFLAGS) $(INCS) $(CXXFLAGS) $< -o $@
|
||||
$(CXX) $(EXTRAFLAGS) $(INCS) $(CFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
obj/%.build_obj : $(RZDCY_SRC_DIR)/%.c
|
||||
mkdir -p $(dir $@)
|
||||
$(CC) $(EXTRAFLAGS) $(INCS) $(CXXFLAGS) $< -o $@
|
||||
$(CC) $(EXTRAFLAGS) $(INCS) $(CFLAGS) $< -o $@
|
||||
|
||||
obj/%.build_obj : $(RZDCY_SRC_DIR)/%.S
|
||||
mkdir -p $(dir $@)
|
||||
|
|
Loading…
Reference in New Issue