- Added a C fallback for inline assembly code when the compiler is not MSVC.

This commit is contained in:
Bart Trzynadlowski 2011-07-31 17:12:02 +00:00
parent cbf28944a5
commit 357536ea5a

View file

@ -1001,14 +1001,22 @@ void SCSP_w32(unsigned int addr,unsigned int val)
addr&=0x1f;
DebugLog("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
//printf("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
#ifdef _MSC_VER // MS VisualC++
_asm rol val,16
#else
val = (val>>16)|(val<<16);
#endif
*((unsigned int *) (SCSP->Slots[slot].datab+(addr))) = val;
SCSP_UpdateSlotReg(slot,addr&0x1f);
SCSP_UpdateSlotReg(slot,(addr&0x1f)+2);
}
else if(addr<0x600)
{
#ifdef _MSC_VER // MS VisualC++
_asm rol val,16
#else
val = (val>>16)|(val<<16);
#endif
*((unsigned int *) (SCSP->datab+((addr&0xff)))) = val;
SCSP_UpdateReg(addr&0xff);
SCSP_UpdateReg((addr&0xff)+2);
@ -1019,7 +1027,11 @@ void SCSP_w32(unsigned int addr,unsigned int val)
{
#ifdef USEDSP
//DSP
_asm rol val,16
#ifdef _MSC_VER // MS VisualC++
_asm rol val,16
#else
val = (val>>16)|(val<<16);
#endif
if(addr<0x780) //COEF
*((unsigned int *) (SCSP->DSP.COEF+(addr-0x700)/2))=val;
else if(addr<0x800)