Lines Matching refs:opcode
215 static unsigned int PerformLDF(const unsigned int opcode) in PerformLDF() argument
219 write_back = WRITE_BACK(opcode); in PerformLDF()
223 pBase = readRegister(getRn(opcode)); in PerformLDF()
224 if (ARM_REG_PC == getRn(opcode)) in PerformLDF()
231 if (BIT_UP_SET(opcode)) in PerformLDF()
232 pFinal += getOffset(opcode) * 4; in PerformLDF()
234 pFinal -= getOffset(opcode) * 4; in PerformLDF()
236 if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; in PerformLDF()
238 switch (opcode & MASK_TRANSFER_LENGTH) in PerformLDF()
240 case TRANSFER_SINGLE : loadSingle(getFd(opcode),pAddress); break; in PerformLDF()
241 case TRANSFER_DOUBLE : loadDouble(getFd(opcode),pAddress); break; in PerformLDF()
242 case TRANSFER_EXTENDED: loadExtended(getFd(opcode),pAddress); break; in PerformLDF()
246 if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal); in PerformLDF()
250 static unsigned int PerformSTF(const unsigned int opcode) in PerformSTF() argument
254 write_back = WRITE_BACK(opcode); in PerformSTF()
259 pBase = readRegister(getRn(opcode)); in PerformSTF()
260 if (ARM_REG_PC == getRn(opcode)) in PerformSTF()
267 if (BIT_UP_SET(opcode)) in PerformSTF()
268 pFinal += getOffset(opcode) * 4; in PerformSTF()
270 pFinal -= getOffset(opcode) * 4; in PerformSTF()
272 if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; in PerformSTF()
274 switch (opcode & MASK_TRANSFER_LENGTH) in PerformSTF()
276 case TRANSFER_SINGLE : storeSingle(getFd(opcode),pAddress); break; in PerformSTF()
277 case TRANSFER_DOUBLE : storeDouble(getFd(opcode),pAddress); break; in PerformSTF()
278 case TRANSFER_EXTENDED: storeExtended(getFd(opcode),pAddress); break; in PerformSTF()
282 if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal); in PerformSTF()
286 static unsigned int PerformLFM(const unsigned int opcode) in PerformLFM() argument
289 write_back = WRITE_BACK(opcode); in PerformLFM()
292 pBase = readRegister(getRn(opcode)); in PerformLFM()
293 if (ARM_REG_PC == getRn(opcode)) in PerformLFM()
300 if (BIT_UP_SET(opcode)) in PerformLFM()
301 pFinal += getOffset(opcode) * 4; in PerformLFM()
303 pFinal -= getOffset(opcode) * 4; in PerformLFM()
305 if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; in PerformLFM()
307 Fd = getFd(opcode); in PerformLFM()
308 for (i=getRegisterCount(opcode);i>0;i--) in PerformLFM()
315 if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal); in PerformLFM()
319 static unsigned int PerformSFM(const unsigned int opcode) in PerformSFM() argument
322 write_back = WRITE_BACK(opcode); in PerformSFM()
325 pBase = readRegister(getRn(opcode)); in PerformSFM()
326 if (ARM_REG_PC == getRn(opcode)) in PerformSFM()
333 if (BIT_UP_SET(opcode)) in PerformSFM()
334 pFinal += getOffset(opcode) * 4; in PerformSFM()
336 pFinal -= getOffset(opcode) * 4; in PerformSFM()
338 if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; in PerformSFM()
340 Fd = getFd(opcode); in PerformSFM()
341 for (i=getRegisterCount(opcode);i>0;i--) in PerformSFM()
348 if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal); in PerformSFM()
353 unsigned int EmulateCPDT(const unsigned int opcode) in EmulateCPDT() argument
359 if (LDF_OP(opcode)) in EmulateCPDT()
361 nRc = PerformLDF(opcode); in EmulateCPDT()
363 else if (LFM_OP(opcode)) in EmulateCPDT()
365 nRc = PerformLFM(opcode); in EmulateCPDT()
367 else if (STF_OP(opcode)) in EmulateCPDT()
369 nRc = PerformSTF(opcode); in EmulateCPDT()
371 else if (SFM_OP(opcode)) in EmulateCPDT()
373 nRc = PerformSFM(opcode); in EmulateCPDT()