Example #1
0
 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
Example #2
0
    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