From a6d9532001d844db4546a99e2d9d24a396255318 Mon Sep 17 00:00:00 2001 From: dodge-this Date: Tue, 23 Mar 2010 03:13:14 +0000 Subject: [PATCH] w00t! get_registers does something almost sane! i see basically what amounts to pc incrementing 32 bytes each call (==8 instructions). set_register doesn't seem to change anything, and retval index 0xa seems to be 4bytes behind pc and changing every time... but it's something! time to recull that subsystem and kill them bugs! w00t! git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@443 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- firmware/apps/jtag/jtagarm7tdmi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/firmware/apps/jtag/jtagarm7tdmi.c b/firmware/apps/jtag/jtagarm7tdmi.c index 056f42a..2545c07 100644 --- a/firmware/apps/jtag/jtagarm7tdmi.c +++ b/firmware/apps/jtag/jtagarm7tdmi.c @@ -354,6 +354,7 @@ unsigned long jtagarm7tdmi_scan_intest(int chain) { // PROVEN //! push an instruction into the pipeline - Assumes scan-chain 1 is already INTEST unsigned long jtagarm7tdmi_instr_primitive(unsigned long instr, char breakpt){ unsigned long retval; + //jtagarm7tdmi_resettap(); // FIXME: DEBUG: seems necessary for some reason. ugh. jtagarm7tdmi_scan_intest(1); SHIFT_DR; @@ -563,7 +564,6 @@ unsigned long jtagarm7tdmi_get_register(unsigned char reg) { cmddatalong[2] = jtagarm7tdmi_nop( 0); // push nop into pipeline - fetched cmddatalong[3] = jtagarm7tdmi_nop( 0); // push nop into pipeline - decoded cmddatalong[4] = jtagarm7tdmi_nop( 0); // push nop into pipeline - executed - //retval = jtagarmtransn(ARM_INSTR_NOP, 32, LSB, END, NORETIDLE); //DEBUGGING NOT FOR RESALE! retval = jtagarm7tdmi_nop( 0); // recover 32-bit word cmddatalong[5] = retval; cmddatalong[6] = jtagarm7tdmi_nop( 0); @@ -691,12 +691,12 @@ unsigned long jtagarm7tdmi_readmem(unsigned long adr){ delay(1); waitcount --; } - if (waitcount == 0xffff){ + if (waitcount == 0){ return (-1); } else { retval = jtagarm7tdmi_get_register(1); // read memory value from R1 register - jtagarm7tdmi_set_register(1, r1); // restore R0 and R1 - jtagarm7tdmi_set_register(0, r0); + jtagarm7tdmi_set_register(1, r1); // restore R0 and R1 + jtagarm7tdmi_set_register(0, r0); } return retval; } -- 2.20.1