]> git.sur5r.net Git - openocd/blobdiff - src/flash/nor/lpc2000.c
stellaris: avoid chip writes
[openocd] / src / flash / nor / lpc2000.c
index 981cfac1d1c459f69b8ec57880af79f3256564f5..ae0a384b6febff60c80ae9a81de35fe9f15b2ad4 100644 (file)
 #include "config.h"
 #endif
 
+#include "imp.h"
 #include "lpc2000.h"
-#include "armv7m.h"
 #include <helper/binarybuffer.h>
-#include "algorithm.h"
+#include <target/algorithm.h>
+#include <target/arm_opcodes.h>
+#include <target/armv7m.h>
 
 
 /* flash programming support for NXP LPC17xx and LPC2xxx devices
@@ -241,7 +243,7 @@ static int lpc2000_iap_call(struct flash_bank *bank, int code, uint32_t param_ta
        struct target *target = bank->target;
        struct mem_param mem_params[2];
        struct reg_param reg_params[5];
-       struct armv4_5_algorithm armv4_5_info; /* for LPC2000 */
+       struct arm_algorithm armv4_5_info; /* for LPC2000 */
        struct armv7m_algorithm armv7m_info;   /* for LPC1700 */
        uint32_t status_code;
        uint32_t iap_entry_point = 0; /* to make compiler happier */
@@ -262,8 +264,10 @@ static int lpc2000_iap_call(struct flash_bank *bank, int code, uint32_t param_ta
                switch(lpc2000_info->variant)
                {
                        case lpc1700:
-                               target_buffer_set_u32(target, jump_gate, ARMV7M_T_BX(12));
-                               target_buffer_set_u32(target, jump_gate + 4, ARMV7M_T_B(0xfffffe));
+                               target_buffer_set_u32(target, jump_gate,
+                                               ARMV4_5_T_BX(12));
+                               target_buffer_set_u32(target, jump_gate + 4,
+                                               ARMV4_5_T_B(0xfffffe));
                                break;
                        case lpc2000_v1:
                        case lpc2000_v2:
@@ -291,9 +295,9 @@ static int lpc2000_iap_call(struct flash_bank *bank, int code, uint32_t param_ta
                        break;
                case lpc2000_v1:
                case lpc2000_v2:
-                       armv4_5_info.common_magic = ARMV4_5_COMMON_MAGIC;
-                       armv4_5_info.core_mode = ARMV4_5_MODE_SVC;
-                       armv4_5_info.core_state = ARMV4_5_STATE_ARM;
+                       armv4_5_info.common_magic = ARM_COMMON_MAGIC;
+                       armv4_5_info.core_mode = ARM_MODE_SVC;
+                       armv4_5_info.core_state = ARM_STATE_ARM;
                        iap_entry_point = 0x7ffffff1;
                        break;
                default:
@@ -339,7 +343,7 @@ static int lpc2000_iap_call(struct flash_bank *bank, int code, uint32_t param_ta
                case lpc2000_v1:
                case lpc2000_v2:
                        /* IAP stack */
-                       init_reg_param(&reg_params[3], "r13_svc", 32, PARAM_OUT);
+                       init_reg_param(&reg_params[3], "sp_svc", 32, PARAM_OUT);
                        buf_set_u32(reg_params[3].value, 0, 32, lpc2000_info->iap_working_area->address + 0xb4);
 
                        /* return address */