self.storedPC = self.ARMget_register(15) + pcoffset
self.last_dbg_state = self.ARMget_dbgstate()
self.cpsr = self.ARMget_regCPSR()
- print "ARMcapture_system_state: stored pc: 0x%x last_dbg_state: 0x%x" % (self.storedPC, self.last_dbg_state)
+ #print "ARMcapture_system_state: stored pc: 0x%x last_dbg_state: 0x%x" % (self.storedPC, self.last_dbg_state)
#def ARMhaltcpu(self):
def halt(self):
self.ARMset_dbgctrl(0)
self.ARMcapture_system_state(PCOFF_DBGRQ)
- print "storedPC: %x (%x) flags: %x nothing: %x" % (self.storedPC, self.c0Data, self.flags, self.c0Addr)
+ #print "storedPC: %x (%x) flags: %x nothing: %x" % (self.storedPC, self.c0Data, self.flags, self.c0Addr)
if self.ARMget_dbgstate() & DBG_TBIT:
self.ARMsetModeARM()
if self.storedPC ^ 4:
self.stored_regs = self.ARMget_registers()[:15]
#print "stored regs: " + repr(self.stored_regs)
#print self.print_stored_registers()
- print "CPSR: (%s) %s"%(self.ARMget_regCPSRstr())
+ #print "CPSR: (%s) %s"%(self.ARMget_regCPSRstr())
#halt = ARMhaltcpu
#def ARMreleasecpu(self):
#print out
return ''.join(out)
- def ARMprintChunk(self, adr, wordcount, verbose=False, width=8):
+ def ARMprintChunk(self, adr, wordcount=1, verbose=False, width=8):
for string in self.ARMreprChunk(adr, wordcount, verbose=False, width=8):
sys.stdout.write(string)
- def ARMreprChunk(self, adr, wordcount, verbose=False, width=8):
+ def ARMreprChunk(self, adr, wordcount=1, verbose=False, width=8):
adr &= 0xfffffffc
endva = adr + (4*wordcount)
output = [ "Dwords from 0x%x through 0x%x" % (adr, endva) ]
yield("\n")
- def ARMreadChunk(self, adr, wordcount, verbose=True):
+ def ARMreadChunk(self, adr, wordcount=1, verbose=True):
""" Only works in ARM mode currently
WARNING: Addresses must be word-aligned!
"""
def arm7_cli_handler(client, argv):
if(argv[1]=="info"):
client.halt()
- print >>sys.stderr,"Identifying Target:"
print >>sys.stderr, client.ARMidentstr()
- print >>sys.stderr,"Debug Status:\t%s\n" % client.statusstr()
+ print >>sys.stderr,"Debug Status:\t%s" % client.statusstr()
+ print >>sys.stderr,"CPSR: (%s) %s\n"%(client.ARMget_regCPSRstr())
client.resume()
#print hex(drp)
if drp and drp != 1:
drp = 2
- return (validAddrBits, maxAddrSpace, validCS, codeLabel, drp)
+ return (validAddrBits, maxAddrSpace, validCS, codeLabel, drp)
def mcr_decode_str(mcr):
( validAddrBits, maxAddrSpace, validCS, codeLabel, drp) = mcr_decode(mcr)
addr = EBI_BASE + (chipnum*4)
self.ARMwriteChunk(addr,[value])
- def getEBIMemoryMap(self):
+ def getEBIMemoryMapstr(self):
keys = ebi_memory_map_items.keys()
keys.sort()
- output = [ "EBI Memory Map"]
+ output = [ "===EBI Memory Map==="]
for x in xrange(8):
desc,name,rw,default = ebi_memory_map_items[x*4]
output.append("\nMAP: %s (%s) - default: %x\n%s"%(name,desc,default,self.getChipSelectRegstr(x)))
return mcr
def getMemoryControlRegisterstr(self):
return mcr_decode_str(self.getMemoryControlRegister())
- def getEBIMCR(self):
- print "EBI Memory Control Register\n"
- print self.getMemoryControlRegisterstr()
+ def getEBIMCRstr(self):
+ return "EBI Memory Control Register\n" + self.getMemoryControlRegisterstr()
def getInterruptSourceModeReg(self, regnum):
regval = self.ARMreadMem(AIC_SMR[regnum][0])
if(argv[1]=="memorymap"):
client.halt()
- print client.getEBIMCR()
+ print "=============================================="
+ print client.getEBIMCRstr()
print ""
- print client.getEBIMemoryMap()
+ print client.getEBIMemoryMapstr()
client.resume()
if(argv[1]=="memorycontrolreg"):
client.halt()
- print client.getEBIMCR()
+ print client.getEBIMCRstr()
client.resume()