mirror of
https://github.com/libretro/Mu.git
synced 2026-09-23 07:05:37 +00:00
Cleanups, try and make sandbox C89 compliant
This commit is contained in:
@@ -395,7 +395,7 @@ uint32_t EmuWrapper::installApplication(const QString& path){
|
||||
appFile.close();
|
||||
appData.data = (uint8_t*)appDataBuffer.data();
|
||||
appData.size = appDataBuffer.size();
|
||||
error = sandboxCommand(SANDBOX_INSTALL_APP, &appData);
|
||||
error = sandboxCommand(SANDBOX_DEBUG_INSTALL_APP, &appData);
|
||||
}
|
||||
|
||||
if(!wasPaused)
|
||||
|
||||
@@ -184,10 +184,6 @@ uint32_t MainWindow::getEmuFeatureList(){
|
||||
features |= settings->value("featureExtraKeys", false).toBool() ? FEATURE_EXT_KEYS : 0;
|
||||
features |= settings->value("featureSoundStreams", false).toBool() ? FEATURE_SND_STRMS : 0;
|
||||
|
||||
#if defined(EMU_DEBUG)
|
||||
features |= FEATURE_DEBUG;
|
||||
#endif
|
||||
|
||||
//lazy debug overrides
|
||||
//features = FEATURE_EXT_KEYS | FEATURE_EMU_HONEST | FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_DEBUG | FEATURE_SND_STRMS;
|
||||
//features = FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_DEBUG;
|
||||
|
||||
@@ -85,10 +85,10 @@ uint32_t armv5StateSize(void){
|
||||
|
||||
//armv5Cpu
|
||||
size += sizeof(uint32_t) * 16;//armv5Cpu.regs
|
||||
size += sizeof(uint32_t) * 2;//armv5Cpu.CPSR/SPSR
|
||||
size += sizeof(uint32_t) * 3 * 6;//armv5Cpu.bank_usr/bank_svc/bank_abt/bank_und/bank_irq/bank_fiq
|
||||
size += sizeof(uint32_t) * 2;//armv5Cpu.CPSR / armv5Cpu.SPSR
|
||||
size += sizeof(uint32_t) * 3 * 6;//armv5Cpu.bank_(usr/svc/abt/und/irq/fiq)
|
||||
size += sizeof(uint32_t) * 5;//armv5Cpu.extra_regs
|
||||
size += sizeof(uint16_t) * 3;//armv5Cpu.waitingIrqs/waitingFiqs/CPAR
|
||||
size += sizeof(uint16_t) * 3;//armv5Cpu.waiting(Irqs/Fiqs) / armv5Cpu.CPAR
|
||||
size += sizeof(uint32_t);//armv5Cpu.vectorBase
|
||||
|
||||
//variables
|
||||
|
||||
@@ -50,6 +50,7 @@ static local_cpu_state_t sandboxOldFunctionCpuState;
|
||||
static mem_region_t sandboxWatchRegions[SANDBOX_MAX_WATCH_REGIONS];//code locations in m68k address space to be sandboxed
|
||||
static uint16_t sandboxWatchRegionsActive;//number of used sandboxWatchRegions entrys
|
||||
|
||||
|
||||
static uint32_t sandboxCallGuestFunction(bool fallthrough, uint32_t address, uint16_t trap, const char* prototype, ...);
|
||||
|
||||
#include "sandboxTrapNumToName.c.h"
|
||||
@@ -150,12 +151,11 @@ static void logApiCalls(void){
|
||||
uint32_t programCounter = m68k_get_reg(NULL, M68K_REG_PPC);
|
||||
uint16_t instruction = m68k_get_reg(NULL, M68K_REG_IR);
|
||||
|
||||
if(instruction == 0x4E4F){
|
||||
//Trap F/API call
|
||||
if(instruction == 0x4E4F/*Trap F/API call opcode*/){
|
||||
uint16_t trap = m68k_read_memory_16(programCounter + 2);
|
||||
if(!ignoreTrap(trap)){
|
||||
|
||||
if(!ignoreTrap(trap))
|
||||
debugLog("Trap F API:%s, API number:0x%04X, PC:0x%08X\n", lookupTrap(trap), trap, programCounter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +167,6 @@ static bool isAlphanumeric(char chr){
|
||||
|
||||
static bool readable6CharsBack(uint32_t address){
|
||||
uint8_t count;
|
||||
|
||||
for(count = 0; count < 6; count++)
|
||||
if(!isAlphanumeric(m68k_read_memory_8(address - count)))
|
||||
return false;
|
||||
@@ -588,6 +587,12 @@ void sandboxReset(void){
|
||||
uint32_t sandboxStateSize(void){
|
||||
uint32_t size = 0;
|
||||
|
||||
size += sizeof(uint8_t) * 2;//sandboxActive / sandboxControlHandoff
|
||||
size += sizeof(uint32_t) * 4;//sandboxOldFunctionCpuState.(sp/pc/a0/d0)
|
||||
size += sizeof(uint16_t);//sandboxOldFunctionCpuState.sr
|
||||
size += sizeof(uint32_t) * 2;//sandboxWatchRegions.(address/size)
|
||||
size += sizeof(uint16_t);//sandboxWatchRegionsActive
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -846,9 +851,10 @@ void sandboxOnMemoryAccess(uint32_t address, uint8_t size, bool write, uint32_t
|
||||
|
||||
bool sandboxRunning(void){
|
||||
uint32_t pc = m68k_get_reg(NULL, M68K_REG_PC);
|
||||
uint16_t memRegion;
|
||||
|
||||
//this is used to capture full logs when running from specific locations
|
||||
for(uint16_t memRegion = 0; memRegion < sandboxWatchRegionsActive; memRegion++){
|
||||
for(memRegion = 0; memRegion < sandboxWatchRegionsActive; memRegion++){
|
||||
if(pc >= sandboxWatchRegions[memRegion].address && pc < sandboxWatchRegions[memRegion].address + sandboxWatchRegions[memRegion].size)
|
||||
return true;
|
||||
}
|
||||
@@ -869,7 +875,7 @@ void sandboxReturn(void){
|
||||
uint16_t sandboxSetWatchRegion(uint32_t address, uint32_t size){
|
||||
uint16_t index;
|
||||
|
||||
//cant get 0 sized memory area
|
||||
//cant watch 0 sized memory area
|
||||
if(size < 1)
|
||||
return 0xFFFF;
|
||||
|
||||
|
||||
@@ -53,6 +53,14 @@ double palmClk32Sysclks;//how many SYSCLKs have happened in the current CLK32
|
||||
|
||||
|
||||
uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t enabledEmuFeatures){
|
||||
//only accept valid non debug features from the user
|
||||
enabledEmuFeatures &= FEATURE_RAM_HUGE | FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_SYNCED_RTC | FEATURE_HLE_APIS | FEATURE_EMU_HONEST | FEATURE_EXT_KEYS | FEATURE_SND_STRMS;
|
||||
|
||||
#if defined(EMU_DEBUG)
|
||||
//enable debug features if compiled in debug mode
|
||||
enabledEmuFeatures |= FEATURE_DEBUG;
|
||||
#endif
|
||||
|
||||
if(emulatorInitialized)
|
||||
return EMU_ERROR_RESOURCE_LOCKED;
|
||||
|
||||
@@ -189,10 +197,10 @@ uint32_t emulatorGetStateSize(void){
|
||||
size += sizeof(uint8_t) * 6;//pwm1Fifo[6]
|
||||
size += sizeof(uint8_t) * 2;//pwm1(Read/Write)
|
||||
size += sizeof(uint8_t) * 7;//palmMisc
|
||||
size += sizeof(uint32_t) * 4;//palmEmuFeatures.src / palmEmuFeatures.dst / palmEmuFeatures.size / palmEmuFeatures.value
|
||||
size += sizeof(uint32_t) * 4;//palmEmuFeatures.(src/dst/size/value)
|
||||
size += sizeof(uint64_t);//palmSdCard.command
|
||||
size += sizeof(uint8_t) * 8;//palmSdCard.commandBitsRemaining / palmSdCard.runningCommand / palmSdCard.commandIsAcmd /palmSdCard.allowInvalidCrc / palmSdCard.chipSelect / palmSdCard.receivingCommand / palmSdCard.inIdleState / palmSdCard.writeProtectSwitch
|
||||
size += sizeof(uint16_t) * 2;//palmSdCard.responseReadPosition / palmSdCard.responseWritePosition
|
||||
size += sizeof(uint8_t) * 8;//palmSdCard.(commandBitsRemaining/runningCommand/commandIsAcmd/allowInvalidCrc/chipSelect/receivingCommand/inIdleState/writeProtectSwitch)
|
||||
size += sizeof(uint16_t) * 2;//palmSdCard.response(Read/Write)Position
|
||||
size += sizeof(int8_t);//palmSdCard.responseReadPositionBit
|
||||
size += sizeof(uint32_t) * 3;//palmSdCard.runningCommandVars
|
||||
size += SD_CARD_BLOCK_DATA_PACKET_SIZE;//palmSdCard.runningCommandPacket
|
||||
|
||||
@@ -70,10 +70,10 @@ void pdiUsbD12Reset(void){
|
||||
uint32_t pdiUsbD12StateSize(void){
|
||||
uint32_t size = 0;
|
||||
|
||||
size += sizeof(uint8_t);
|
||||
size += sizeof(uint64_t);
|
||||
size += PDIUSBD12_TRANSFER_BUFFER_SIZE * PDIUSBD12_FIFO_TOTAL_FIFOS;
|
||||
size += sizeof(uint16_t) * PDIUSBD12_FIFO_TOTAL_FIFOS * 2;
|
||||
size += sizeof(uint8_t);//pdiUsbD12Command
|
||||
size += sizeof(uint64_t);//pdiUsbD12CommandState
|
||||
size += PDIUSBD12_TRANSFER_BUFFER_SIZE * PDIUSBD12_FIFO_TOTAL_FIFOS;//pdiUsbD12FifoBuffer
|
||||
size += sizeof(uint16_t) * PDIUSBD12_FIFO_TOTAL_FIFOS * 2;//pdiUsbD12(Read/Write)Position
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user