def createECycleProcLoadProc(self): p = Process(self, "ECycleProcLoad") tmpaddr = p.createVariable("tmpaddr") assert self.ecycproc != None p.load(tmpaddr, self.ecycproc) p.output(EVTJUMPADDR, tmpaddr) return p
def createEProcLoadProc(self): """ set up the dispatch table, all entries """ p = Process(self, "EProcLoad") pos = 0 tempreg = p.createVariable("tempreg") for k, v in self.eprocs.iteritems(): (cmdrange, srcrange) = k proc = v baseaddr = 0x40 + pos*4 # first the address p.load(tempreg, proc) p.output(baseaddr, tempreg) # The Command Range cmdlow = cmdrange[0] cmdhigh = cmdrange[1] p.load(tempreg, (cmdhigh << 8) | cmdlow) p.output(baseaddr + 1, tempreg) # The Source Range srclow = srcrange[0] srchigh = srcrange[1] p.load(tempreg, (srchigh << 8) | srclow) p.output(baseaddr +2, tempreg) pos += 1 for remaining in range(pos, 16): ## fill in the missing ones baseaddr = 0x40 + remaining * 4 p.load(tempreg, 0x0001) # a contradictory condition p.output(baseaddr + 1, tempreg) return p