mirror of https://github.com/PCSX2/pcsx2.git
Thanks to a patch by Zeydlitz, the Linux build of pcsx2 works! (The plugins still need fixing from the reorg, but I'll get that later.)
git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@689 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
parent
cc0053c1e7
commit
1de54165b5
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../../common/
|
||||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../common/
|
||||
noinst_LIBRARIES = libDebugTools.a
|
||||
|
||||
libDebugTools_a_SOURCES = \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../x86 -I@srcdir@/../../common/
|
||||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../x86 -I@srcdir@/../common/
|
||||
noinst_LIBRARIES = libIPU.a
|
||||
|
||||
libIPU_a_SOURCES = IPU.cpp yuv2rgb.cpp coroutine.cpp \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../../ -I@srcdir@/../../../common/
|
||||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../../ -I@srcdir@/../../common/
|
||||
noinst_LIBRARIES = libmpeg2IPU.a
|
||||
|
||||
libmpeg2IPU_a_SOURCES = Idct.cpp Mpeg.cpp Mpeg.h Vlc.h
|
|
@ -20,9 +20,12 @@
|
|||
|
||||
#define COLOR_RESET "\033[0m"
|
||||
|
||||
|
||||
// Linux Note : The Linux Console is pretty simple. It just dumps to the stdio!
|
||||
// (no console open/close/title stuff tho, so those functions are dummies)
|
||||
|
||||
// Fixme - A lot of extra \ns are being added in here somewhere. I think it's
|
||||
// partially in SetColor/ClearColor, as colored lines have more extra \ns then the other
|
||||
// lines.
|
||||
namespace Console
|
||||
{
|
||||
static const char* tbl_color_codes[] =
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
AUTOMAKE_OPTIONS = foreign
|
||||
INCLUDES = $(shell pkg-config --cflags gtk+-2.0) -I@srcdir@/../ -I@srcdir@/../../common/
|
||||
INCLUDES = $(shell pkg-config --cflags gtk+-2.0) -I@srcdir@/../ -I@srcdir@/../common/
|
||||
|
||||
bin_PROGRAMS = pcsx2
|
||||
|
||||
|
|
|
@ -67,4 +67,116 @@ static __forceinline void memset16_obj( T& obj )
|
|||
memset32_obj<data + (data<<16)>( obj );
|
||||
}
|
||||
|
||||
|
||||
// An optimized memset for 8 bit destination data.
|
||||
template< u8 data, size_t bytes >
|
||||
static __forceinline void memset_8( void *dest )
|
||||
{
|
||||
if( bytes == 0 ) return;
|
||||
|
||||
if( (bytes & 0x3) != 0 )
|
||||
{
|
||||
// unaligned data length. No point in doing an optimized inline version (too complicated!)
|
||||
// So fall back on the compiler implementation:
|
||||
|
||||
memset( dest, data, bytes );
|
||||
return;
|
||||
}
|
||||
|
||||
// This function only works on 32-bit alignments of data copied.
|
||||
jASSUME( (bytes & 0x3) == 0 );
|
||||
|
||||
enum
|
||||
{
|
||||
remdat = bytes>>2,
|
||||
data32 = data + (data<<8) + (data<<16) + (data<<24)
|
||||
};
|
||||
|
||||
// macro to execute the x86/32 "stosd" copies.
|
||||
switch( remdat )
|
||||
{
|
||||
case 1:
|
||||
*(u32*)dest = data32;
|
||||
return;
|
||||
|
||||
case 2:
|
||||
((u32*)dest)[0] = data32;
|
||||
((u32*)dest)[1] = data32;
|
||||
return;
|
||||
|
||||
case 3:
|
||||
__asm__
|
||||
(
|
||||
".intel_syntax\n"
|
||||
"cld\n"
|
||||
// "mov %edi, %0\n"
|
||||
// "mov %eax, %1\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
".att_syntax\n"
|
||||
:
|
||||
: "D"(dest), "a"(data32)
|
||||
// D - edi, a -- eax, c ecx
|
||||
:
|
||||
);
|
||||
return;
|
||||
|
||||
case 4:
|
||||
__asm__
|
||||
(
|
||||
".intel_syntax\n"
|
||||
"cld\n"
|
||||
// "mov %edi, %0\n"
|
||||
// "mov %eax, %1\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
".att_syntax\n"
|
||||
:
|
||||
: "D"(dest), "a"(data32)
|
||||
:
|
||||
|
||||
);
|
||||
return;
|
||||
|
||||
case 5:
|
||||
__asm__
|
||||
(
|
||||
".intel_syntax\n"
|
||||
"cld\n"
|
||||
// "mov %edi, %0\n"
|
||||
// "mov %eax, %1\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
"stosd\n"
|
||||
".att_syntax\n"
|
||||
:
|
||||
: "D"(dest), "a"(data32)
|
||||
:
|
||||
|
||||
);
|
||||
return;
|
||||
|
||||
default:
|
||||
__asm__
|
||||
(
|
||||
".intel_syntax\n"
|
||||
"cld\n"
|
||||
// "mov ecx, %0\n"
|
||||
// "mov edi, %1\n"
|
||||
// "mov eax, %2\n"
|
||||
"rep stosd\n"
|
||||
".att_syntax\n"
|
||||
:
|
||||
: "c"(remdat), "D"(dest), "a"(data32)
|
||||
:
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -859,7 +859,7 @@ int SysPageFaultExceptionFilter(EXCEPTION_POINTERS* eps)
|
|||
#else
|
||||
#include "errno.h"
|
||||
|
||||
__forceinline void __fastcall InstallLinuxExceptionHandler()
|
||||
void InstallLinuxExceptionHandler()
|
||||
{
|
||||
struct sigaction sa;
|
||||
|
||||
|
@ -869,13 +869,13 @@ __forceinline void __fastcall InstallLinuxExceptionHandler()
|
|||
sigaction(SIGSEGV, &sa, NULL);
|
||||
}
|
||||
|
||||
__forceinline void __fastcall ReleaseLinuxExceptionHandler()
|
||||
void ReleaseLinuxExceptionHandler()
|
||||
{
|
||||
// Code this later.
|
||||
}
|
||||
// Linux implementation of SIGSEGV handler. Bind it using sigaction().
|
||||
// This is my shot in the dark. Probably needs some work. Good luck! (air)
|
||||
__forceinline void __fastcall SysPageFaultExceptionFilter( int signal, siginfo_t *info, void * )
|
||||
void SysPageFaultExceptionFilter( int signal, siginfo_t *info, void * )
|
||||
{
|
||||
int err;
|
||||
u32 pagesize = getpagesize();
|
||||
|
@ -884,6 +884,8 @@ __forceinline void __fastcall SysPageFaultExceptionFilter( int signal, siginfo_t
|
|||
// get bad virtual address
|
||||
u32 offset = (u8*)info->si_addr - psM;
|
||||
uptr pageoffset = ( offset / pagesize ) * pagesize;
|
||||
|
||||
DevCon::Status( "Protected memory cleanup. Offset 0x%x", params offset );
|
||||
|
||||
if (offset>=Ps2MemSize::Base)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../../common/
|
||||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../common/
|
||||
noinst_LIBRARIES = libRDebug.a
|
||||
|
||||
libRDebug_a_SOURCES = \
|
||||
|
|
|
@ -34,9 +34,9 @@
|
|||
using namespace R5900;
|
||||
|
||||
FILE *emuLog;
|
||||
u32 varLog;
|
||||
|
||||
#ifdef PCSX2_DEVBUILD
|
||||
u32 varLog;
|
||||
|
||||
// these used by the depreciated _old_Log only
|
||||
u16 logProtocol;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../../common/ -I@srcdir@/../IPU/
|
||||
INCLUDES = -I@srcdir@/../ -I@srcdir@/../common/ -I@srcdir@/../IPU/
|
||||
noinst_LIBRARIES = libx86recomp.a
|
||||
|
||||
# have to add the sources instead of making a library since the linking is complicated
|
||||
|
|
|
@ -113,10 +113,10 @@ static u32 dumplog = 0;
|
|||
|
||||
#ifdef PCSX2_DEVBUILD
|
||||
// and not sure what these might have once been used for... (air)
|
||||
static const char *txt0 = "EAX = %x : ECX = %x : EDX = %x\n";
|
||||
static const char *txt0RC = "EAX = %x : EBX = %x : ECX = %x : EDX = %x : ESI = %x : EDI = %x\n";
|
||||
static const char *txt1 = "REG[%d] = %x_%x\n";
|
||||
static const char *txt2 = "M32 = %x\n";
|
||||
//static const char *txt0 = "EAX = %x : ECX = %x : EDX = %x\n";
|
||||
//static const char *txt0RC = "EAX = %x : EBX = %x : ECX = %x : EDX = %x : ESI = %x : EDI = %x\n";
|
||||
//static const char *txt1 = "REG[%d] = %x_%x\n";
|
||||
//static const char *txt2 = "M32 = %x\n";
|
||||
#endif
|
||||
|
||||
static void iBranchTest(u32 newpc, bool noDispatch=false);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
INCLUDES = -I@srcdir@/.. -I@srcdir@/../../ -I@srcdir@/../../../common/
|
||||
INCLUDES = -I@srcdir@/.. -I@srcdir@/../../ -I@srcdir@/../../common/
|
||||
noinst_LIBRARIES = libix86.a
|
||||
|
||||
libix86_a_SOURCES = ix86_tools.cpp ix86_3dnow.cpp ix86.cpp ix86_cpudetect.cpp ix86_fpu.cpp ix86.h ix86_sse.cpp ix86_mmx.cpp
|
||||
|
|
|
@ -1082,12 +1082,10 @@ __forceinline void SSE4_DPPS_XMM_to_XMM(x86SSERegType to, x86SSERegType from, u8
|
|||
|
||||
__forceinline void SSE4_DPPS_M128_to_XMM(x86SSERegType to, uptr from, u8 imm8)
|
||||
{
|
||||
const int overb = 0; // TODO: x64?
|
||||
|
||||
write8(0x66);
|
||||
write24(0x403A0F);
|
||||
ModRM(0, to, DISP32);
|
||||
write32(MEMADDR(from, 4 + overb));
|
||||
write32(MEMADDR(from, 4));
|
||||
write8(imm8);
|
||||
}
|
||||
|
||||
|
@ -1128,13 +1126,11 @@ __forceinline void SSE4_BLENDVPS_XMM_to_XMM(x86SSERegType to, x86SSERegType from
|
|||
|
||||
__forceinline void SSE4_BLENDVPS_M128_to_XMM(x86SSERegType to, uptr from)
|
||||
{
|
||||
const int overb = 0; // TODO: x64?
|
||||
|
||||
write8(0x66);
|
||||
RexR(0, to);
|
||||
write24(0x14380F);
|
||||
ModRM(0, to, DISP32);
|
||||
write32(MEMADDR(from, 4 + overb));
|
||||
write32(MEMADDR(from, 4));
|
||||
}
|
||||
|
||||
__forceinline void SSE4_PMOVSXDQ_XMM_to_XMM(x86SSERegType to, x86SSERegType from)
|
||||
|
|
Loading…
Reference in New Issue