naomi: Fix linux builds

This commit is contained in:
Stefanos Kornilios Mitsis Poiitidis 2015-08-11 19:07:23 +02:00
parent 13b2c4d8aa
commit ca83428fa5
5 changed files with 17 additions and 15 deletions

View File

@ -13,6 +13,7 @@ u32 RomSize;
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#endif
fd_t* RomCacheMap;
@ -26,7 +27,7 @@ bool naomi_cart_LoadRom(char* file)
printf("\nnullDC-Naomi rom loader v1.2\n");
size_t folder_pos = strlen(file) - 1;
while (folder_pos>1 && file[folder_pos] != '\\')
while (folder_pos>1 && (file[folder_pos] != '\\' && file[folder_pos] != '/'))
folder_pos--;
folder_pos++;
@ -99,10 +100,11 @@ bool naomi_cart_LoadRom(char* file)
#if HOST_OS == OS_WINDOWS
RomPtr = (u8*)VirtualAlloc(0, RomSize, MEM_RESERVE, PAGE_NOACCESS);
#else
RomPtr = (u8*)mmap(0, RomSize, PROT_NONE, MAP_PRIVATE, 0, 0);
RomPtr = (u8*)mmap(0, RomSize, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0);
#endif
verify(RomPtr != 0);
verify(RomPtr != (void*)-1);
strcpy(t, file);
@ -242,4 +244,4 @@ void* naomi_cart_GetPtr(u32 offset, u32 size) {
verify((offset + size) < RomSize);
return &RomPtr[offset];
}
}

View File

@ -408,7 +408,7 @@ void recSh4_Init()
bm_Init();
bm_Reset();
verify(rcb_noffs(p_sh4rcb->fpcb) == -(FPCB_SIZE*sizeof(void*) + 0x40000));
verify(rcb_noffs(p_sh4rcb->fpcb) == FPCB_OFFSET);
verify(rcb_noffs(p_sh4rcb->sq_buffer) == -512);

View File

@ -307,11 +307,13 @@ typedef void DYNACALL TaListVoidFP(void* data);
#define FPCB_SIZE (RAM_SIZE/2)
#define FPCB_MASK (FPCB_SIZE -1)
//#defeine FPCB_PAD 0x40000
#define FPCB_PAD 0x100000
#define FPCB_OFFSET (-(FPCB_SIZE*sizeof(void*) + FPCB_PAD))
struct Sh4RCB
{
void* fpcb[FPCB_SIZE];
u64 _pad[(0x40000-sizeof(Sh4Context)-64-sizeof(void*)*2)/8];
u64 _pad[(FPCB_PAD-sizeof(Sh4Context)-64-sizeof(void*)*2)/8];
TaListVoidFP* tacmd_voud; //*TODO* remove (not used)
sqw_fp* do_sqw_nommu;
u64 sq_buffer[64/8];
@ -346,4 +348,4 @@ s32 rcb_poffs(T* ptr)
//Get an interface to sh4 interpreter
void Get_Sh4Interpreter(sh4_if* cpu);
void Get_Sh4Recompiler(sh4_if* cpu);
void Get_Sh4Recompiler(sh4_if* cpu);

View File

@ -173,8 +173,8 @@ do_iter:
HIDDEN(no_update)
CSYM(no_update): @ next_pc _MUST_ be on r4 *R4 NOT R0 anymore*
#if RAM_SIZE == 33554432
sub r2,r8,#67371008
#if DC_PLATFORM == DC_PLATFORM_NAOMI
sub r2,r8,#0x4100000
ubfx r1,r4,#1,#24
#else
sub r2,r8,#33816576

View File

@ -409,11 +409,10 @@ u32 DynaRBI::Relink()
{
#ifdef CALLSTACK
#error offset broken
SUB(r2, r8, -FPCB_OFFSET);
#if RAM_SIZE == 33554432
SUB(r2, r8, 67371008);
UBFX(r1, r4, 1, 24);
#else
SUB(r2, r8, 33816576);
UBFX(r1, r4, 1, 23);
#endif
@ -437,11 +436,10 @@ u32 DynaRBI::Relink()
#if 1
//this is faster
//why ? (Icache ?)
SUB(r2, r8, -FPCB_OFFSET);
#if RAM_SIZE == 33554432
SUB(r2, r8, 67371008);
UBFX(r1, r4, 1, 24);
#else
SUB(r2, r8, 33816576);
UBFX(r1, r4, 1, 23);
#endif
LDR(r15,r2,r1,Offset,true,S_LSL,2);
@ -456,11 +454,11 @@ u32 DynaRBI::Relink()
}
else
{
SUB(r2, r8, -FPCB_OFFSET);
#if RAM_SIZE == 33554432
SUB(r2, r8, 67371008);
UBFX(r1, r4, 1, 24);
#else
SUB(r2, r8, 33816576);
UBFX(r1, r4, 1, 23);
#endif
NOP();NOP(); //2