diff --git a/bugs/properPwmSineWave.png b/bugs/fixed/weirdAudio/properPwmSineWave.png similarity index 100% rename from bugs/properPwmSineWave.png rename to bugs/fixed/weirdAudio/properPwmSineWave.png diff --git a/bugs/pwmAnalogOutput.png b/bugs/fixed/weirdAudio/pwmAnalogOutput.png similarity index 100% rename from bugs/pwmAnalogOutput.png rename to bugs/fixed/weirdAudio/pwmAnalogOutput.png diff --git a/changelog.txt b/changelog.txt index 252579c..6407d67 100644 --- a/changelog.txt +++ b/changelog.txt @@ -14,6 +14,7 @@ Core: *add ARM optimized 68k CPU core(not fully working yet, SIGSEGVs when running) *allow safety checks to be disabled with EMU_NO_SAFETY, accuracy is maintained when its not defined *switch byte buffer orders to optimize for 16 bit opcode fetches +*cyclone68000 reenabled for ARM devices, SIGSEGVs seem to be gone ------------------------------------------ v0.9 to v0.9.5(Sept 22 2018 - Oct 18 2018) diff --git a/libretroBuildSystem/Makefile.libretro b/libretroBuildSystem/Makefile.libretro index 59d040d..15580ac 100644 --- a/libretroBuildSystem/Makefile.libretro +++ b/libretroBuildSystem/Makefile.libretro @@ -1,7 +1,7 @@ -DEBUG=0 +DEBUG = 0 GIT_VERSION := " $(shell git rev-parse --short HEAD)" -STATIC_LINKING=0 -STATIC_LINKING_LINK=0 +STATIC_LINKING = 0 +STATIC_LINKING_LINK = 0 CORE_DIR := . BUILD_DIR = build @@ -15,6 +15,10 @@ else ifeq ($(platform),linux_x86) include $(BUILD_DIR)/Makefile.linux_x86 else ifeq ($(platform),linux_x86_64) include $(BUILD_DIR)/Makefile.linux_x86_64 +else ifeq ($(platform),osx_x86) +include $(BUILD_DIR)/Makefile.osx_x86 +else ifeq ($(platform),osx_x86_64) +include $(BUILD_DIR)/Makefile.osx_x86_64 else ifeq ($(platform),mingw_x86) include $(BUILD_DIR)/Makefile.mingw_x86 else ifeq ($(platform),mingw_x86_64) @@ -118,7 +122,7 @@ else ifeq ($(platform), osx) TARGET := $(TARGET_NAME)_libretro.$(EXT) fpic := -fPIC ifeq ($(arch),ppc) - CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 endif OSXVER = $(shell sw_vers -productVersion | cut -d. -f 2) OSX_GT_MOJAVE = $(shell (( $(OSXVER) >= 14)) && echo "YES") @@ -143,8 +147,6 @@ ifeq ($(platform),ios-arm64) CC = cc -arch arm64 -isysroot $(IOSSDK) else CC = cc -arch armv7 -isysroot $(IOSSDK) - # EMU_OPTIMIZE_FOR_ARM = 1 - # EMU_NEW_ASM_SYNTAX = 1 endif LD = armv7-apple-darwin11-ld @@ -177,7 +179,6 @@ else ifeq ($(platform), qnx) CC = qcc -Vgcc_ntoarmv7le AR = qcc -Vgcc_ntoarmv7le CFLAGS += -D__BLACKBERRY_QNX__ - EMU_OPTIMIZE_FOR_ARM = 1 # PS3 else ifeq ($(platform), ps3) @@ -185,7 +186,7 @@ else ifeq ($(platform), ps3) TARGET := $(TARGET_NAME)_libretro_ps3.$(EXT) CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe - CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 @@ -195,7 +196,7 @@ else ifeq ($(platform), sncps3) TARGET := $(TARGET_NAME)_libretro_ps3.$(EXT) CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe - CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 @@ -205,7 +206,7 @@ else ifeq ($(platform), psl1ght) TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT) AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT) - CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 @@ -238,7 +239,6 @@ else ifeq ($(platform), vita) CFLAGS += -DVITA STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 - EMU_OPTIMIZE_FOR_ARM = 1 # CTR (3DS) else ifeq ($(platform), ctr) @@ -253,7 +253,6 @@ else ifeq ($(platform), ctr) CFLAGS += -D_3DS STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 - EMU_OPTIMIZE_FOR_ARM = 1 # Raspberry Pi 2 else ifeq ($(platform), rpi2) @@ -264,7 +263,6 @@ else ifeq ($(platform), rpi2) CFLAGS += -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations CFLAGS += -fomit-frame-pointer -ffast-math HAVE_NEON = 1 - EMU_OPTIMIZE_FOR_ARM = 1 # Raspberry Pi 3 else ifeq ($(platform), rpi3) @@ -307,7 +305,6 @@ else ifeq ($(platform), classic_armv7_a7) LDFLAGS += -static-libgcc -static-libstdc++ endif endif - EMU_OPTIMIZE_FOR_ARM = 1 # Xbox 360 else ifeq ($(platform), xenon) @@ -325,7 +322,7 @@ else ifeq ($(platform), ngc) TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 @@ -336,7 +333,7 @@ else ifeq ($(platform), wii) TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 @@ -347,7 +344,7 @@ else ifeq ($(platform), wiiu) TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_RVL -mwup -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN + CFLAGS += -DGEKKO -DHW_RVL -mwup -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST -DWORDS_BIGENDIAN=1 CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int STATIC_LINKING = 1 STATIC_LINKING_LINK = 1 diff --git a/libretroBuildSystem/build/Makefile.common b/libretroBuildSystem/build/Makefile.common index b06a970..e6689aa 100644 --- a/libretroBuildSystem/build/Makefile.common +++ b/libretroBuildSystem/build/Makefile.common @@ -15,11 +15,27 @@ ifneq (,$(findstring msvc200,$(platform))) endif ifneq (,$(findstring msvc20,$(platform))) - #Mu is dependent on stdbool.h and the standard inline directive existing + # Mu is dependent on stdbool.h and the standard inline directive existing INCFLAGS += -I$(CORE_DIR)/fixIncludes/stdbool COREDEFINES += -Dinline=_inline -DINLINE=_inline endif +ifneq (,$(filter ps3 sncps3 psl1ght ngc wii wiiu,$(platform))) + COREDEFINES += -DEMU_BIG_ENDIAN +else ifeq ($(platform), osx) + ifeq ($(arch), ppc) + COREDEFINES += -DEMU_BIG_ENDIAN + endif +endif + +ifneq (,$(filter qnx vita ctr rpi2 classic_armv7_a7,$(platform))) + EMU_OPTIMIZE_FOR_ARM32 = 1 +else ifneq (,$(findstring armv7,$(platform))) + EMU_OPTIMIZE_FOR_ARM32 = 1 +else ifneq (,$(findstring armv6,$(platform))) + EMU_OPTIMIZE_FOR_ARM32 = 1 +endif + include $(EMU_PATH)/makefile.all COREDEFINES += $(EMU_DEFINES) diff --git a/libretroBuildSystem/build/Makefile.ps3_ppc b/libretroBuildSystem/build/Makefile.ps3_ppc index a635446..03ba573 100644 --- a/libretroBuildSystem/build/Makefile.ps3_ppc +++ b/libretroBuildSystem/build/Makefile.ps3_ppc @@ -42,8 +42,8 @@ LIBEXT = .ps3_ppc.a STATIC_LINKING = 1 platform = ps3 PLATDEFS = -D__CELLOS_LV2__ -PLATCFLAGS = -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN -PLATCXXFLAGS = -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN +PLATCFLAGS = -DMSB_FIRST -DWORDS_BIGENDIAN=1 +PLATCXXFLAGS = -DMSB_FIRST -DWORDS_BIGENDIAN=1 PLATLDFLAGS = -shared -lm PLATLDXFLAGS = -shared -lm diff --git a/libretroBuildSystem/build/Makefile.vita_arm b/libretroBuildSystem/build/Makefile.vita_arm index a5df9f8..557ef95 100644 --- a/libretroBuildSystem/build/Makefile.vita_arm +++ b/libretroBuildSystem/build/Makefile.vita_arm @@ -46,7 +46,6 @@ PLATCFLAGS = -ftree-vectorize -mfloat-abi=hard -ffast-math -fsingle-precisio PLATCXXFLAGS = -ftree-vectorize -mfloat-abi=hard -ffast-math -fsingle-precision-constant -funroll-loops -fno-short-enums PLATLDFLAGS = -shared -lm -mthumb -mcpu=cortex-a9 -mfloat-abi=hard PLATLDXFLAGS = -shared -lm -mthumb -mcpu=cortex-a9 -mfloat-abi=hard -EMU_OPTIMIZE_FOR_ARM = 1 ################ # libretro setup diff --git a/libretroBuildSystem/build/Makefile.wii_ppc b/libretroBuildSystem/build/Makefile.wii_ppc index e49fce3..f39be58 100644 --- a/libretroBuildSystem/build/Makefile.wii_ppc +++ b/libretroBuildSystem/build/Makefile.wii_ppc @@ -42,8 +42,8 @@ LIBEXT = .wii_ppc.a STATIC_LINKING = 1 platform = wii PLATDEFS = -DGEKKO -DHW_RVL -PLATCFLAGS = -m32 -fstrict-aliasing -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN -PLATCXXFLAGS = -m32 -fstrict-aliasing -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST -DWORDS_BIGENDIAN=1 -DEMU_BIG_ENDIAN +PLATCFLAGS = -m32 -fstrict-aliasing -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST -DWORDS_BIGENDIAN=1 +PLATCXXFLAGS = -m32 -fstrict-aliasing -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST -DWORDS_BIGENDIAN=1 PLATLDFLAGS = -shared -lm PLATLDXFLAGS = -shared -lm diff --git a/libretroBuildSystem/jni/Android.mk b/libretroBuildSystem/jni/Android.mk index bdb23e5..ab1d42a 100644 --- a/libretroBuildSystem/jni/Android.mk +++ b/libretroBuildSystem/jni/Android.mk @@ -14,7 +14,7 @@ endif #set ASM CPU core, only use with ARMv4<->7, ARMv8 is its own architecture ifeq ($(TARGET_ARCH),arm) ifneq ($(TARGET_ARCH_ABI),arm64-v8a) - EMU_OPTIMIZE_FOR_ARM = 1 + EMU_OPTIMIZE_FOR_ARM32 = 1 endif endif diff --git a/qtBuildSystem/Mu/Mu.pro b/qtBuildSystem/Mu/Mu.pro index 053ed71..ee7747e 100644 --- a/qtBuildSystem/Mu/Mu.pro +++ b/qtBuildSystem/Mu/Mu.pro @@ -32,14 +32,13 @@ windows{ macx{ # QMAKE_CFLAGS += -std=c89 -D__STDBOOL_H -Dinline= -Dbool=char -Dtrue=1 -Dfalse=0 # tests C89 mode - CONFIG += sdk_no_version_check # using 10.14 SDK which Qt only unofficialy supports + # CONFIG += sdk_no_version_check # using 10.14 SDK which Qt only unofficialy supports ICON = macos/Mu.icns QMAKE_INFO_PLIST = macos/Info.plist DEFINES += EMU_MULTITHREADED } linux-g++{ - message(This really shouldnt trigger yet!) QMAKE_CFLAGS += -fopenmp QMAKE_CXXFLAGS += -fopenmp QMAKE_LFLAGS += -fopenmp @@ -51,20 +50,20 @@ android{ QMAKE_CXXFLAGS += -fopenmp QMAKE_LFLAGS += -fopenmp DEFINES += EMU_MULTITHREADED - # CONFIG += optimize_for_arm # for now, later this will check if building for ARMv4<->7 + CONFIG += optimize_for_arm32 # for now, later this will check if building for ARMv4<->7 } -# ios{ -# QMAKE_INFO_PLIST = ios/Info.plist -# DEFINES += EMU_MULTITHREADED -# CONFIG += optimize_for_arm -# } +ios{ + # QMAKE_INFO_PLIST = ios/Info.plist + DEFINES += EMU_MULTITHREADED + # iOS is now ARMv8 only, cyclone wont work +} CONFIG(debug, debug|release){ # debug build, be accurate, fail hard, and add logging DEFINES += EMU_DEBUG EMU_CUSTOM_DEBUG_LOG_HANDLER - !optimize_for_arm:DEFINES += EMU_SANDBOX + !optimize_for_arm32:DEFINES += EMU_SANDBOX macx|linux-g++{ # DEFINES += EMU_SANDBOX_OPCODE_LEVEL_DEBUG # DEFINES += EMU_SANDBOX_LOG_APIS @@ -84,8 +83,8 @@ CONFIG += c++11 INCLUDEPATH += $$PWD/qt-common/include # only use with ARMv4<->7, ARMv8 is its own architecture -optimize_for_arm{ - DEFINES += EMU_OPTIMIZE_FOR_ARM +optimize_for_arm32{ + DEFINES += EMU_OPTIMIZE_FOR_ARM32 SOURCES += ../../src/m68k/cyclone/CycloneNew.S }else{ SOURCES += ../../src/m68k/musashi/m68kcpu.c \ diff --git a/src/emulator.h b/src/emulator.h index 126ed06..adc760b 100644 --- a/src/emulator.h +++ b/src/emulator.h @@ -17,7 +17,7 @@ extern "C" { //DEFINE INFO!!! //define EMU_MULTITHREADED to speed up long loops -//define EMU_OPTIMIZE_FOR_ARM to use ASM CPU core +//define EMU_OPTIMIZE_FOR_ARM32 to use ASM CPU core //define EMU_NO_SAFETY to remove all safety checks //define EMU_BIG_ENDIAN on big endian systems //to enable degguging define EMU_DEBUG, all options below do nothing unless EMU_DEBUG is defined diff --git a/src/flx68000.c b/src/flx68000.c index 0ddbad3..b74dce1 100755 --- a/src/flx68000.c +++ b/src/flx68000.c @@ -6,7 +6,7 @@ #include "hardwareRegisters.h" #include "memoryAccess.h" -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) #include //for exit(1) #include "m68k/cyclone/Cyclone.h" #else @@ -14,7 +14,7 @@ #endif -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) static struct Cyclone cycloneCpu; @@ -57,7 +57,7 @@ void flx68000Init(void){ static bool inited = false; if(!inited){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) CycloneInit(); cycloneCpu.read8 = m68k_read_memory_8; cycloneCpu.read16 = m68k_read_memory_16; @@ -87,7 +87,7 @@ void flx68000Init(void){ void flx68000Reset(void){ resetHwRegisters(); resetAddressSpace();//address space must be reset after hardware registers because it is dependent on them -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) CycloneReset(&cycloneCpu); #else m68k_pulse_reset(); @@ -97,7 +97,7 @@ void flx68000Reset(void){ uint64_t flx68000StateSize(void){ uint64_t size = 0; -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) size += 0x80;//specified in Cyclone.h, line 82 #else size += sizeof(uint32_t) * 50;//m68ki_cpu @@ -108,7 +108,7 @@ uint64_t flx68000StateSize(void){ void flx68000SaveState(uint8_t* data){ uint64_t offset = 0; -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) CyclonePack(&cycloneCpu, data + offset); offset += 0x80;//specified in Cyclone.h, line 82 #else @@ -182,7 +182,7 @@ void flx68000SaveState(uint8_t* data){ void flx68000LoadState(uint8_t* data){ uint64_t offset = 0; -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) CycloneUnpack(&cycloneCpu, data + offset); offset += 0x80;//specified in Cyclone.h, line 82 #else @@ -263,7 +263,7 @@ void flx68000Execute(void){ int32_t cpuCycles = sysclks * pctlrCpuClockDivider * palmClockMultiplier; if(cpuCycles > 0){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) cycloneCpu.cycles = cpuCycles; CycloneRun(&cycloneCpu); #else @@ -279,7 +279,7 @@ void flx68000Execute(void){ } void flx68000SetIrq(uint8_t irqLevel){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) cycloneCpu.irq = irqLevel; CycloneFlushIrq(&cycloneCpu); #else @@ -288,7 +288,7 @@ void flx68000SetIrq(uint8_t irqLevel){ } void flx68000RefreshAddressing(void){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) //cycloneCpu.pc = cycloneCpu.checkpc(cycloneCpu.pc); #else //C implementation doesnt cache address information @@ -296,7 +296,7 @@ void flx68000RefreshAddressing(void){ } bool flx68000IsSupervisor(void){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) return CycloneGetSr(&cycloneCpu) & 0x2000; #else return !!(m68k_get_reg(NULL, M68K_REG_SR) & 0x2000); @@ -304,7 +304,7 @@ bool flx68000IsSupervisor(void){ } void flx68000BusError(uint32_t address, bool isWrite){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) //no bus error callback #else //never call outsize of a 68k opcode, behavior is undefined due to longjmp @@ -335,7 +335,7 @@ uint32_t flx68000GetRegister(uint8_t reg){ M68K_REG_SR */ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) if(reg < 8) return cycloneCpu.d[reg]; else if(reg < 16) @@ -352,7 +352,7 @@ uint32_t flx68000GetRegister(uint8_t reg){ } uint32_t flx68000GetPc(void){ -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) return cycloneCpu.prev_pc; #else return m68k_get_reg(NULL, M68K_REG_PPC); @@ -362,7 +362,7 @@ uint32_t flx68000GetPc(void){ uint64_t flx68000ReadArbitraryMemory(uint32_t address, uint8_t size){ uint64_t data = UINT64_MAX;//invalid access -#if defined(EMU_OPTIMIZE_FOR_ARM) +#if defined(EMU_OPTIMIZE_FOR_ARM32) //reading from a hardware register FIFO will corrupt it! if(bankType[START_BANK(address)] != CHIP_NONE){ uint16_t m68kSr = CycloneGetSr(&cycloneCpu); diff --git a/src/makefile.all b/src/makefile.all index 6f40e80..67b2e48 100644 --- a/src/makefile.all +++ b/src/makefile.all @@ -13,8 +13,8 @@ EMU_SOURCES_C := $(EMU_PATH)/emulator.c \ $(EMU_PATH)/debug/sandbox.c #only use with ARMv4<->7, ARMv8 is its own architecture -ifeq ($(EMU_OPTIMIZE_FOR_ARM), 1) - EMU_DEFINES += -DEMU_OPTIMIZE_FOR_ARM +ifeq ($(EMU_OPTIMIZE_FOR_ARM32), 1) + EMU_DEFINES += -DEMU_OPTIMIZE_FOR_ARM32 ifeq ($(EMU_NEW_ASM_SYNTAX), 1) EMU_SOURCES_ASM += $(EMU_PATH)/m68k/cyclone/CycloneNew.S else