unsigned int PerformLDF(const unsigned int opcode) { unsigned int *pBase, *pAddress, *pFinal, nRc = 1, write_back = WRITE_BACK(opcode); //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode)); pBase = (unsigned int*)readRegister(getRn(opcode)); if (REG_PC == getRn(opcode)) { pBase += 2; write_back = 0; } pFinal = pBase; if (BIT_UP_SET(opcode)) pFinal += getOffset(opcode); else pFinal -= getOffset(opcode); if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; switch (opcode & MASK_TRANSFER_LENGTH) { case TRANSFER_SINGLE : loadSingle(getFd(opcode),pAddress); break; case TRANSFER_DOUBLE : loadDouble(getFd(opcode),pAddress); break; case TRANSFER_EXTENDED: loadExtended(getFd(opcode),pAddress); break; default: nRc = 0; } if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal); return nRc; }
int FwLoader::load(const char *path, unsigned int pid) { if (!dev.open(IODevice::SIFTEO_VID, pid)) { fprintf(stderr, "Note: Please ensure your device is in update mode, with the red LED illuminated\n"); return ENODEV; } FILE *f = fopen(path, "rb"); if (!f) { fprintf(stderr, "could not open %s: %s\n", path, strerror(errno)); return ENOENT; } uint64_t magic; if (fread(&magic, sizeof(magic), 1, f) != 1) { fprintf(stderr, "magic number mismatch\n"); return EIO; } int rv; if (magic == Deployer::MAGIC) { rv = loadSingle(f); } else if (magic == Deployer::MAGIC_CONTAINER) { rv = loadContainer(f); } else { fprintf(stderr, "invalid file format\n"); rv = EINVAL; } fclose(f); return rv; }
int CCPreLoad::loadAll() { int ret = -1; CCArray* arr = m_dict->allKeys(); do{ unsigned int i; for(i=0; i<arr->count(); ++i) { CCString* p = dynamic_cast<CCString*>(arr->objectAtIndex(i)); if(!p) break; CCDictionary* pdic = dynamic_cast<CCDictionary*>(m_dict->objectForKey(p->getCString())); if(!pdic) break; if(loadSingle(p->getCString(), pdic)!=0) break; } if(i!=arr->count()) { break; } ret = 0; }while(0); delete arr; return ret; }
int CCPreLoad::loadCurFile() { if(!m_dict || !m_tmpKeyArr || m_tmpIdx >= (int)m_dict->count()) return -1; CCString* p = dynamic_cast<CCString*>(m_tmpKeyArr->objectAtIndex(m_tmpIdx)); if(!p) return -1; CCDictionary* pdic = dynamic_cast<CCDictionary*>(m_dict->objectForKey(p->getCString())); if(!pdic) return -1; if(loadSingle(p->getCString(), pdic)!=0) return -1; return 0; }
unsigned int PerformLDF(const unsigned int opcode) { unsigned int __user *pBase, *pAddress, *pFinal; unsigned int nRc = 1, write_back = WRITE_BACK(opcode); pBase = (unsigned int __user *) readRegister(getRn(opcode)); if (REG_PC == getRn(opcode)) { pBase += 2; write_back = 0; } pFinal = pBase; if (BIT_UP_SET(opcode)) pFinal += getOffset(opcode); else pFinal -= getOffset(opcode); if (PREINDEXED(opcode)) pAddress = pFinal; else pAddress = pBase; switch (opcode & MASK_TRANSFER_LENGTH) { case TRANSFER_SINGLE: loadSingle(getFd(opcode), pAddress); break; case TRANSFER_DOUBLE: loadDouble(getFd(opcode), pAddress); break; #ifdef CONFIG_FPE_NWFPE_XP case TRANSFER_EXTENDED: loadExtended(getFd(opcode), pAddress); break; #endif default: nRc = 0; } if (write_back) writeRegister(getRn(opcode), (unsigned long) pFinal); return nRc; }