Bugfixes in mips32_pracc.c
[fw/openocd] / src / target / avr32_regs.c
index eb283fc30882ea3d39d4a6194e2c61a099abdcae..c9581d7db2e55baafb6df8474186e8fbf459d213 100644 (file)
@@ -16,6 +16,7 @@
  *   Free Software Foundation, Inc.,                                       *
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -25,7 +26,7 @@
 #include "avr32_jtag.h"
 #include "avr32_regs.h"
 
-static int avr32_jtag_read_reg(struct avr32_jtag *jtag_info, int reg, 
+static int avr32_jtag_read_reg(struct avr32_jtag *jtag_info, int reg,
                uint32_t *val)
 {
        int retval;
@@ -36,27 +37,27 @@ static int avr32_jtag_read_reg(struct avr32_jtag *jtag_info, int reg,
                return retval;
 
        do {
-               retval = avr32_jtag_nexus_read(jtag_info, 
+               retval = avr32_jtag_nexus_read(jtag_info,
                        AVR32_OCDREG_DCSR, &dcsr);
 
                if (retval != ERROR_OK)
                        return retval;
        } while (!(dcsr & OCDREG_DCSR_CPUD));
 
-       retval = avr32_jtag_nexus_read(jtag_info, 
+       retval = avr32_jtag_nexus_read(jtag_info,
                        AVR32_OCDREG_DCCPU, val);
 
        return retval;
 }
 
-static int avr32_jtag_write_reg(struct avr32_jtag *jtag_info, int reg, 
+static int avr32_jtag_write_reg(struct avr32_jtag *jtag_info, int reg,
                uint32_t val)
 {
        int retval;
        uint32_t dcsr;
 
        /* Restore Status reg */
-       retval = avr32_jtag_nexus_write(jtag_info, 
+       retval = avr32_jtag_nexus_write(jtag_info,
                                AVR32_OCDREG_DCEMU, val);
        if (retval != ERROR_OK)
                return retval;
@@ -65,7 +66,7 @@ static int avr32_jtag_write_reg(struct avr32_jtag *jtag_info, int reg,
        if (retval != ERROR_OK)
                return retval;
        do {
-               retval = avr32_jtag_nexus_read(jtag_info, 
+               retval = avr32_jtag_nexus_read(jtag_info,
                        AVR32_OCDREG_DCSR, &dcsr);
        } while (!(dcsr & OCDREG_DCSR_EMUD) && (retval == ERROR_OK));
 
@@ -79,7 +80,7 @@ int avr32_jtag_read_regs(struct avr32_jtag *jtag_info, uint32_t *regs)
        int i, retval;
 
        /* read core registers */
-       for (i = 0; i < AVR32NUMCOREREGS - 1; i++) 
+       for (i = 0; i < AVR32NUMCOREREGS - 1; i++)
                avr32_jtag_read_reg(jtag_info, i, regs + i);
 
        /* read status register */
@@ -97,6 +98,9 @@ int avr32_jtag_write_regs(struct avr32_jtag *jtag_info, uint32_t *regs)
        int i, retval;
 
        retval = avr32_jtag_write_reg(jtag_info, 0, regs[AVR32_REG_SR]);
+       if (retval != ERROR_OK)
+               return retval;
+
        /* Restore Status reg */
        retval = avr32_jtag_exec(jtag_info, MTSR(0, 0));
        if (retval != ERROR_OK)
@@ -105,7 +109,7 @@ int avr32_jtag_write_regs(struct avr32_jtag *jtag_info, uint32_t *regs)
        /*
         * And now the rest of registers
         */
-       for (i = 0; i < AVR32NUMCOREREGS - 1; i++) 
+       for (i = 0; i < AVR32NUMCOREREGS - 1; i++)
                avr32_jtag_write_reg(jtag_info, i, regs[i]);
 
        return ERROR_OK;