Fix compiler warnings in nwfpe code.

Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
Paul Brook 2009-05-04 15:19:04 +01:00
parent 6bb72b184d
commit 65a650c2a5
5 changed files with 47 additions and 86 deletions

View File

@ -30,11 +30,6 @@
#include <stdio.h> #include <stdio.h>
/* forward declarations */
unsigned int EmulateCPDO(const unsigned int);
unsigned int EmulateCPDT(const unsigned int);
unsigned int EmulateCPRT(const unsigned int);
FPA11* qemufpa=0; FPA11* qemufpa=0;
CPUARMState* user_registers; CPUARMState* user_registers;

View File

@ -116,6 +116,15 @@ static inline void writeConditionCodes(unsigned int x)
unsigned int EmulateAll(unsigned int opcode, FPA11* qfpa, CPUARMState* qregs); unsigned int EmulateAll(unsigned int opcode, FPA11* qfpa, CPUARMState* qregs);
unsigned int EmulateCPDO(const unsigned int);
unsigned int EmulateCPDT(const unsigned int);
unsigned int EmulateCPRT(const unsigned int);
unsigned int SingleCPDO(const unsigned int opcode);
unsigned int DoubleCPDO(const unsigned int opcode);
unsigned int ExtendedCPDO(const unsigned int opcode);
/* included only for get_user/put_user macros */ /* included only for get_user/put_user macros */
#include "qemu.h" #include "qemu.h"

View File

@ -22,10 +22,6 @@
#include "fpa11.h" #include "fpa11.h"
#include "fpopcode.h" #include "fpopcode.h"
unsigned int SingleCPDO(const unsigned int opcode);
unsigned int DoubleCPDO(const unsigned int opcode);
unsigned int ExtendedCPDO(const unsigned int opcode);
unsigned int EmulateCPDO(const unsigned int opcode) unsigned int EmulateCPDO(const unsigned int opcode)
{ {
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();

View File

@ -29,9 +29,8 @@
//#include <asm/uaccess.h> //#include <asm/uaccess.h>
static inline static inline
void loadSingle(const unsigned int Fn,const unsigned int *pMem) void loadSingle(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
fpa11->fType[Fn] = typeSingle; fpa11->fType[Fn] = typeSingle;
/* FIXME - handle failure of get_user() */ /* FIXME - handle failure of get_user() */
@ -39,9 +38,8 @@ void loadSingle(const unsigned int Fn,const unsigned int *pMem)
} }
static inline static inline
void loadDouble(const unsigned int Fn,const unsigned int *pMem) void loadDouble(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
unsigned int *p; unsigned int *p;
p = (unsigned int*)&fpa11->fpreg[Fn].fDouble; p = (unsigned int*)&fpa11->fpreg[Fn].fDouble;
@ -58,9 +56,8 @@ void loadDouble(const unsigned int Fn,const unsigned int *pMem)
} }
static inline static inline
void loadExtended(const unsigned int Fn,const unsigned int *pMem) void loadExtended(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
unsigned int *p; unsigned int *p;
p = (unsigned int*)&fpa11->fpreg[Fn].fExtended; p = (unsigned int*)&fpa11->fpreg[Fn].fExtended;
@ -72,9 +69,8 @@ void loadExtended(const unsigned int Fn,const unsigned int *pMem)
} }
static inline static inline
void loadMultiple(const unsigned int Fn,const unsigned int *pMem) void loadMultiple(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
register unsigned int *p; register unsigned int *p;
unsigned long x; unsigned long x;
@ -108,9 +104,8 @@ void loadMultiple(const unsigned int Fn,const unsigned int *pMem)
} }
static inline static inline
void storeSingle(const unsigned int Fn,unsigned int *pMem) void storeSingle(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
float32 val; float32 val;
register unsigned int *p = (unsigned int*)&val; register unsigned int *p = (unsigned int*)&val;
@ -133,9 +128,8 @@ void storeSingle(const unsigned int Fn,unsigned int *pMem)
} }
static inline static inline
void storeDouble(const unsigned int Fn,unsigned int *pMem) void storeDouble(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
float64 val; float64 val;
register unsigned int *p = (unsigned int*)&val; register unsigned int *p = (unsigned int*)&val;
@ -163,9 +157,8 @@ void storeDouble(const unsigned int Fn,unsigned int *pMem)
} }
static inline static inline
void storeExtended(const unsigned int Fn,unsigned int *pMem) void storeExtended(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
floatx80 val; floatx80 val;
register unsigned int *p = (unsigned int*)&val; register unsigned int *p = (unsigned int*)&val;
@ -190,9 +183,8 @@ void storeExtended(const unsigned int Fn,unsigned int *pMem)
} }
static inline static inline
void storeMultiple(const unsigned int Fn,unsigned int *pMem) void storeMultiple(const unsigned int Fn, target_ulong addr)
{ {
target_ulong addr = (target_ulong)(long)pMem;
FPA11 *fpa11 = GET_FPA11(); FPA11 *fpa11 = GET_FPA11();
register unsigned int nType, *p; register unsigned int nType, *p;
@ -220,25 +212,26 @@ void storeMultiple(const unsigned int Fn,unsigned int *pMem)
} }
} }
unsigned int PerformLDF(const unsigned int opcode) static unsigned int PerformLDF(const unsigned int opcode)
{ {
unsigned int *pBase, *pAddress, *pFinal, nRc = 1, target_ulong pBase, pAddress, pFinal;
unsigned int nRc = 1,
write_back = WRITE_BACK(opcode); write_back = WRITE_BACK(opcode);
//printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode)); //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
pBase = (unsigned int*)readRegister(getRn(opcode)); pBase = readRegister(getRn(opcode));
if (REG_PC == getRn(opcode)) if (REG_PC == getRn(opcode))
{ {
pBase += 2; pBase += 8;
write_back = 0; write_back = 0;
} }
pFinal = pBase; pFinal = pBase;
if (BIT_UP_SET(opcode)) if (BIT_UP_SET(opcode))
pFinal += getOffset(opcode); pFinal += getOffset(opcode) * 4;
else else
pFinal -= getOffset(opcode); pFinal -= getOffset(opcode) * 4;
if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase;
@ -254,26 +247,27 @@ unsigned int PerformLDF(const unsigned int opcode)
return nRc; return nRc;
} }
unsigned int PerformSTF(const unsigned int opcode) static unsigned int PerformSTF(const unsigned int opcode)
{ {
unsigned int *pBase, *pAddress, *pFinal, nRc = 1, target_ulong pBase, pAddress, pFinal;
unsigned int nRc = 1,
write_back = WRITE_BACK(opcode); write_back = WRITE_BACK(opcode);
//printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode)); //printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
SetRoundingMode(ROUND_TO_NEAREST); SetRoundingMode(ROUND_TO_NEAREST);
pBase = (unsigned int*)readRegister(getRn(opcode)); pBase = readRegister(getRn(opcode));
if (REG_PC == getRn(opcode)) if (REG_PC == getRn(opcode))
{ {
pBase += 2; pBase += 8;
write_back = 0; write_back = 0;
} }
pFinal = pBase; pFinal = pBase;
if (BIT_UP_SET(opcode)) if (BIT_UP_SET(opcode))
pFinal += getOffset(opcode); pFinal += getOffset(opcode) * 4;
else else
pFinal -= getOffset(opcode); pFinal -= getOffset(opcode) * 4;
if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase;
@ -289,23 +283,24 @@ unsigned int PerformSTF(const unsigned int opcode)
return nRc; return nRc;
} }
unsigned int PerformLFM(const unsigned int opcode) static unsigned int PerformLFM(const unsigned int opcode)
{ {
unsigned int i, Fd, *pBase, *pAddress, *pFinal, unsigned int i, Fd,
write_back = WRITE_BACK(opcode); write_back = WRITE_BACK(opcode);
target_ulong pBase, pAddress, pFinal;
pBase = (unsigned int*)readRegister(getRn(opcode)); pBase = readRegister(getRn(opcode));
if (REG_PC == getRn(opcode)) if (REG_PC == getRn(opcode))
{ {
pBase += 2; pBase += 8;
write_back = 0; write_back = 0;
} }
pFinal = pBase; pFinal = pBase;
if (BIT_UP_SET(opcode)) if (BIT_UP_SET(opcode))
pFinal += getOffset(opcode); pFinal += getOffset(opcode) * 4;
else else
pFinal -= getOffset(opcode); pFinal -= getOffset(opcode) * 4;
if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase;
@ -313,7 +308,7 @@ unsigned int PerformLFM(const unsigned int opcode)
for (i=getRegisterCount(opcode);i>0;i--) for (i=getRegisterCount(opcode);i>0;i--)
{ {
loadMultiple(Fd,pAddress); loadMultiple(Fd,pAddress);
pAddress += 3; Fd++; pAddress += 12; Fd++;
if (Fd == 8) Fd = 0; if (Fd == 8) Fd = 0;
} }
@ -321,23 +316,24 @@ unsigned int PerformLFM(const unsigned int opcode)
return 1; return 1;
} }
unsigned int PerformSFM(const unsigned int opcode) static unsigned int PerformSFM(const unsigned int opcode)
{ {
unsigned int i, Fd, *pBase, *pAddress, *pFinal, unsigned int i, Fd,
write_back = WRITE_BACK(opcode); write_back = WRITE_BACK(opcode);
target_ulong pBase, pAddress, pFinal;
pBase = (unsigned int*)readRegister(getRn(opcode)); pBase = readRegister(getRn(opcode));
if (REG_PC == getRn(opcode)) if (REG_PC == getRn(opcode))
{ {
pBase += 2; pBase += 8;
write_back = 0; write_back = 0;
} }
pFinal = pBase; pFinal = pBase;
if (BIT_UP_SET(opcode)) if (BIT_UP_SET(opcode))
pFinal += getOffset(opcode); pFinal += getOffset(opcode) * 4;
else else
pFinal -= getOffset(opcode); pFinal -= getOffset(opcode) * 4;
if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase;
@ -345,7 +341,7 @@ unsigned int PerformSFM(const unsigned int opcode)
for (i=getRegisterCount(opcode);i>0;i--) for (i=getRegisterCount(opcode);i>0;i--)
{ {
storeMultiple(Fd,pAddress); storeMultiple(Fd,pAddress);
pAddress += 3; Fd++; pAddress += 12; Fd++;
if (Fd == 8) Fd = 0; if (Fd == 8) Fd = 0;
} }

View File

@ -59,21 +59,6 @@ const float32 float32Constant[] = {
0x41200000 /* single 10.0 */ 0x41200000 /* single 10.0 */
}; };
unsigned int getTransferLength(const unsigned int opcode)
{
unsigned int nRc;
switch (opcode & MASK_TRANSFER_LENGTH)
{
case 0x00000000: nRc = 1; break; /* single precision */
case 0x00008000: nRc = 2; break; /* double precision */
case 0x00400000: nRc = 3; break; /* extended precision */
default: nRc = 0;
}
return(nRc);
}
unsigned int getRegisterCount(const unsigned int opcode) unsigned int getRegisterCount(const unsigned int opcode)
{ {
unsigned int nRc; unsigned int nRc;
@ -90,21 +75,6 @@ unsigned int getRegisterCount(const unsigned int opcode)
return(nRc); return(nRc);
} }
unsigned int getRoundingPrecision(const unsigned int opcode)
{
unsigned int nRc;
switch (opcode & MASK_ROUNDING_PRECISION)
{
case 0x00000000: nRc = 1; break;
case 0x00000080: nRc = 2; break;
case 0x00080000: nRc = 3; break;
default: nRc = 0;
}
return(nRc);
}
unsigned int getDestinationSize(const unsigned int opcode) unsigned int getDestinationSize(const unsigned int opcode)
{ {
unsigned int nRc; unsigned int nRc;
@ -141,8 +111,3 @@ static const unsigned short aCC[16] = {
0xFFFF, // AL always 0xFFFF, // AL always
0 // NV 0 // NV
}; };
unsigned int checkCondition(const unsigned int opcode, const unsigned int ccodes)
{
return (aCC[opcode>>28] >> (ccodes>>28)) & 1;
}