Skip to content

Commit a487458

Browse files
CatalystGnotaz
authored andcommitted
Add support for PlayBook/BB10 with libretro
1 parent 1c6ab61 commit a487458

File tree

5 files changed

+259
-8
lines changed

5 files changed

+259
-8
lines changed

Makefile.libretro

+24-8
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ else ifneq ($(findstring win,$(shell uname -a)),)
2424
endif
2525
endif
2626

27-
CC = gcc
28-
CXX = g++
29-
AS = as
27+
CC ?= gcc
28+
CXX ?= g++
29+
AS ?= as
3030

3131
ifeq ($(platform), unix)
3232
TARGET := snes9x_next_libretro.so
@@ -83,6 +83,15 @@ else ifeq ($(platform), wii)
8383
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
8484
AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
8585
CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__
86+
else ifeq ($(platform), qnx)
87+
TARGET := libretro_pcsx_rearmed_qnx.so
88+
HAVE_NEON = 1
89+
USE_DYNAREC = 1
90+
DRC_CACHE_BASE = 0
91+
BUILTIN_GPU = neon
92+
ARCH = arm
93+
CFLAGS += -DBASE_ADDR_FIXED=0 -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
94+
ASFLAGS += -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
8695
else
8796
TARGET := snes9x_next_retro.dll
8897
CC = gcc
@@ -95,16 +104,20 @@ endif
95104
CFLAGS += -fPIC
96105
ASFLAGS +=
97106
LDFLAGS +=
98-
LDLIBS += -lpthread
107+
108+
ifneq ($(platform),qnx)
109+
LDLIBS += -lpthread
110+
MAIN_LDLIBS += -ldl
111+
endif
99112
MAIN_LDFLAGS += -shared
100-
MAIN_LDLIBS += -ldl -lm -lz
113+
MAIN_LDLIBS += -lm -lz
101114
PLUGIN_CFLAGS += -fPIC
102115

103-
TARGET = libretro.so
116+
TARGET ?= libretro.so
104117
PLATFORM = libretro
105-
BUILTIN_GPU = peops
118+
BUILTIN_GPU ?= peops
106119
SOUND_DRIVERS = libretro
107-
PLUGINS = plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so
120+
#PLUGINS = plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so
108121

109122
CC_LINK = $(CC)
110123
LDFLAGS += $(MAIN_LDFLAGS)
@@ -216,6 +229,9 @@ frontend/revision.h: FORCE
216229

217230
%.o: %.S
218231
$(CC) $(CFLAGS) -c $^ -o $@
232+
233+
%.o: %.s
234+
$(CC) $(ASFLAGS) -c $^ -o $@
219235

220236

221237
target_: $(TARGET)

blackberry_qnx/.cproject

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+
<?fileVersion 4.0.0?>
3+
4+
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
5+
<storageModule moduleId="org.eclipse.cdt.core.settings">
6+
<cconfiguration id="com.qnx.qcc.toolChain.1762498539">
7+
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.toolChain.1762498539" moduleId="org.eclipse.cdt.core.settings" name="Device-Debug">
8+
<externalSettings/>
9+
<extensions>
10+
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
11+
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
12+
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
13+
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
14+
</extensions>
15+
</storageModule>
16+
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
17+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1762498539" name="Device-Debug" parent="org.eclipse.cdt.build.core.emptycfg">
18+
<folderInfo id="com.qnx.qcc.toolChain.1762498539.1561488424" name="/" resourcePath="">
19+
<toolChain id="com.qnx.qcc.toolChain.682312592" name="com.qnx.qcc.toolChain" superClass="com.qnx.qcc.toolChain">
20+
<option id="com.qnx.qcc.option.os.1720929524" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
21+
<option id="com.qnx.qcc.option.cpu.2107899725" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
22+
<option id="com.qnx.qcc.option.compiler.596535986" name="Compiler:" superClass="com.qnx.qcc.option.compiler"/>
23+
<option id="com.qnx.qcc.option.runtime.742171011" name="Runtime:" superClass="com.qnx.qcc.option.runtime"/>
24+
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.982231418" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
25+
<builder arguments="-C .. -f Makefile.libretro platform=qnx" command="make" id="com.qnx.qcc.toolChain.1762498539.480897078" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
26+
<tool id="com.qnx.qcc.tool.compiler.267897021" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
27+
<option id="com.qnx.qcc.option.compiler.optlevel.1293751119" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
28+
<option id="com.qnx.qcc.option.compiler.includePath.365274483" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
29+
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
30+
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
31+
</option>
32+
<inputType id="com.qnx.qcc.inputType.compiler.116424583" superClass="com.qnx.qcc.inputType.compiler"/>
33+
</tool>
34+
<tool id="com.qnx.qcc.tool.assembler.1307903249" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
35+
<inputType id="com.qnx.qcc.inputType.assembler.1838739065" superClass="com.qnx.qcc.inputType.assembler"/>
36+
</tool>
37+
<tool id="com.qnx.qcc.tool.linker.1852803277" name="QCC Linker" superClass="com.qnx.qcc.tool.linker"/>
38+
<tool id="com.qnx.qcc.tool.archiver.1682937256" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
39+
</toolChain>
40+
</folderInfo>
41+
</configuration>
42+
</storageModule>
43+
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
44+
</cconfiguration>
45+
<cconfiguration id="com.qnx.qcc.toolChain.1815033502">
46+
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.toolChain.1815033502" moduleId="org.eclipse.cdt.core.settings" name="Device-Release">
47+
<externalSettings/>
48+
<extensions>
49+
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
50+
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
51+
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
52+
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
53+
</extensions>
54+
</storageModule>
55+
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
56+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1815033502" name="Device-Release" parent="org.eclipse.cdt.build.core.emptycfg">
57+
<folderInfo id="com.qnx.qcc.toolChain.1815033502.1093640979" name="/" resourcePath="">
58+
<toolChain id="com.qnx.qcc.toolChain.1811843468" name="com.qnx.qcc.toolChain" superClass="com.qnx.qcc.toolChain">
59+
<option id="com.qnx.qcc.option.os.66936807" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
60+
<option id="com.qnx.qcc.option.cpu.1884625209" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
61+
<option id="com.qnx.qcc.option.compiler.903071639" name="Compiler:" superClass="com.qnx.qcc.option.compiler"/>
62+
<option id="com.qnx.qcc.option.runtime.901433789" name="Runtime:" superClass="com.qnx.qcc.option.runtime"/>
63+
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1169345860" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
64+
<builder id="com.qnx.qcc.toolChain.1815033502.1831895405" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
65+
<tool id="com.qnx.qcc.tool.compiler.401658009" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
66+
<option id="com.qnx.qcc.option.compiler.optlevel.20820451" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
67+
<option id="com.qnx.qcc.option.compiler.includePath.2022402746" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
68+
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
69+
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
70+
</option>
71+
<inputType id="com.qnx.qcc.inputType.compiler.1180700251" superClass="com.qnx.qcc.inputType.compiler"/>
72+
</tool>
73+
<tool id="com.qnx.qcc.tool.assembler.1403530230" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
74+
<inputType id="com.qnx.qcc.inputType.assembler.1360707586" superClass="com.qnx.qcc.inputType.assembler"/>
75+
</tool>
76+
<tool id="com.qnx.qcc.tool.linker.577346665" name="QCC Linker" superClass="com.qnx.qcc.tool.linker"/>
77+
<tool id="com.qnx.qcc.tool.archiver.637344581" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
78+
</toolChain>
79+
</folderInfo>
80+
</configuration>
81+
</storageModule>
82+
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
83+
</cconfiguration>
84+
<cconfiguration id="com.qnx.qcc.toolChain.1271074456">
85+
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.toolChain.1271074456" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Debug">
86+
<externalSettings/>
87+
<extensions>
88+
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
89+
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
90+
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
91+
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
92+
</extensions>
93+
</storageModule>
94+
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
95+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1271074456" name="Simulator-Debug" parent="org.eclipse.cdt.build.core.emptycfg">
96+
<folderInfo id="com.qnx.qcc.toolChain.1271074456.2095507025" name="/" resourcePath="">
97+
<toolChain id="com.qnx.qcc.toolChain.563285451" name="com.qnx.qcc.toolChain" superClass="com.qnx.qcc.toolChain">
98+
<option id="com.qnx.qcc.option.os.2028959839" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
99+
<option id="com.qnx.qcc.option.cpu.460119393" name="Target CPU:" superClass="com.qnx.qcc.option.cpu"/>
100+
<option id="com.qnx.qcc.option.compiler.318948553" name="Compiler:" superClass="com.qnx.qcc.option.compiler"/>
101+
<option id="com.qnx.qcc.option.runtime.1244314155" name="Runtime:" superClass="com.qnx.qcc.option.runtime"/>
102+
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.2005367550" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
103+
<builder id="com.qnx.qcc.toolChain.1271074456.325666051" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
104+
<tool id="com.qnx.qcc.tool.compiler.821983732" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
105+
<option id="com.qnx.qcc.option.compiler.optlevel.1701209030" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
106+
<option id="com.qnx.qcc.option.compiler.includePath.1616908655" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
107+
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
108+
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
109+
</option>
110+
<inputType id="com.qnx.qcc.inputType.compiler.1059435667" superClass="com.qnx.qcc.inputType.compiler"/>
111+
</tool>
112+
<tool id="com.qnx.qcc.tool.assembler.1920350417" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
113+
<inputType id="com.qnx.qcc.inputType.assembler.618235584" superClass="com.qnx.qcc.inputType.assembler"/>
114+
</tool>
115+
<tool id="com.qnx.qcc.tool.linker.1321150712" name="QCC Linker" superClass="com.qnx.qcc.tool.linker"/>
116+
<tool id="com.qnx.qcc.tool.archiver.1860233844" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
117+
</toolChain>
118+
</folderInfo>
119+
</configuration>
120+
</storageModule>
121+
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
122+
</cconfiguration>
123+
</storageModule>
124+
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
125+
<project id="pcsx_rearmed.null.446260429" name="pcsx_rearmed"/>
126+
</storageModule>
127+
<storageModule moduleId="scannerConfiguration">
128+
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
129+
<scannerConfigBuildInfo instanceId="com.qnx.qcc.toolChain.1815033502">
130+
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
131+
</scannerConfigBuildInfo>
132+
<scannerConfigBuildInfo instanceId="com.qnx.qcc.toolChain.1762498539">
133+
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
134+
</scannerConfigBuildInfo>
135+
<scannerConfigBuildInfo instanceId="com.qnx.qcc.toolChain.1271074456">
136+
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
137+
</scannerConfigBuildInfo>
138+
</storageModule>
139+
<storageModule moduleId="refreshScope" versionNumber="1">
140+
<resource resourceType="PROJECT" workspacePath="/pcsx_rearmed"/>
141+
</storageModule>
142+
</cproject>

blackberry_qnx/.project

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>pcsx_rearmed</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
10+
<triggers>clean,full,incremental,</triggers>
11+
<arguments>
12+
<dictionary>
13+
<key>?name?</key>
14+
<value></value>
15+
</dictionary>
16+
<dictionary>
17+
<key>org.eclipse.cdt.make.core.append_environment</key>
18+
<value>true</value>
19+
</dictionary>
20+
<dictionary>
21+
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
22+
<value>all</value>
23+
</dictionary>
24+
<dictionary>
25+
<key>org.eclipse.cdt.make.core.buildArguments</key>
26+
<value>-C .. -f Makefile.libretro platform=qnx</value>
27+
</dictionary>
28+
<dictionary>
29+
<key>org.eclipse.cdt.make.core.buildCommand</key>
30+
<value>make</value>
31+
</dictionary>
32+
<dictionary>
33+
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
34+
<value>clean</value>
35+
</dictionary>
36+
<dictionary>
37+
<key>org.eclipse.cdt.make.core.contents</key>
38+
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
39+
</dictionary>
40+
<dictionary>
41+
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
42+
<value>false</value>
43+
</dictionary>
44+
<dictionary>
45+
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
46+
<value>true</value>
47+
</dictionary>
48+
<dictionary>
49+
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
50+
<value>true</value>
51+
</dictionary>
52+
<dictionary>
53+
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
54+
<value>all</value>
55+
</dictionary>
56+
<dictionary>
57+
<key>org.eclipse.cdt.make.core.stopOnError</key>
58+
<value>true</value>
59+
</dictionary>
60+
<dictionary>
61+
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
62+
<value>false</value>
63+
</dictionary>
64+
</arguments>
65+
</buildCommand>
66+
<buildCommand>
67+
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
68+
<triggers>full,incremental,</triggers>
69+
<arguments>
70+
</arguments>
71+
</buildCommand>
72+
<buildCommand>
73+
<name>com.qnx.tools.bbt.xml.core.bbtXMLValidationBuilder</name>
74+
<arguments>
75+
</arguments>
76+
</buildCommand>
77+
</buildSpec>
78+
<natures>
79+
<nature>org.eclipse.cdt.core.cnature</nature>
80+
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
81+
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
82+
<nature>com.qnx.tools.ide.bbt.core.bbtnature</nature>
83+
</natures>
84+
</projectDescription>

libpcsxcore/new_dynarec/new_dynarec.c

+4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
#include "assem_arm.h"
4242
#endif
4343

44+
#undef __clear_cache
45+
#define __clear_cache(start,end) msync(start, (size_t)((void*)end - (void*)start), MS_SYNC | MS_CACHE_ONLY | MS_INVALIDATE_ICACHE);
46+
47+
4448
#define MAXBLOCK 4096
4549
#define MAX_OUTPUT_BLOCK_SIZE 262144
4650

libpcsxcore/psxmem.c

+5
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,13 @@ int psxMemInit() {
129129

130130
psxM = psxMap(0x80000000, 0x00210000, 1, MAP_TAG_RAM);
131131
#ifndef RAM_FIXED
132+
#ifdef __BLACKBERRY_QNX__
133+
if (psxM == NULL)
134+
psxM = psxMap(0x70000000, 0x00210000, 0, MAP_TAG_RAM);
135+
#else
132136
if (psxM == NULL)
133137
psxM = psxMap(0x78000000, 0x00210000, 0, MAP_TAG_RAM);
138+
#endif
134139
#endif
135140
if (psxM == NULL) {
136141
SysMessage(_("mapping main RAM failed"));

0 commit comments

Comments
 (0)