count, buffer, count == 1);
 }
 
-/* write target memory in multiples of 4 byte, optimized for writing large quantities of data */
-static int arm11_bulk_write_memory(struct target *target,
-       uint32_t address, uint32_t count, const uint8_t *buffer)
-{
-       if (target->state != TARGET_HALTED) {
-               LOG_WARNING("target was not halted");
-               return ERROR_TARGET_NOT_HALTED;
-       }
-
-       return arm11_write_memory(target, address, 4, count, buffer);
-}
-
 /* target break-/watchpoint control
 * rw: 0 = write, 1 = read, 2 = access
 */
        .read_memory = arm11_read_memory,
        .write_memory = arm11_write_memory,
 
-       .bulk_write_memory = arm11_bulk_write_memory,
-
        .checksum_memory = arm_checksum_memory,
        .blank_check_memory = arm_blank_check_memory,
 
 
        return ERROR_OK;
 }
 
-static int avr32_ap7k_bulk_write_memory(struct target *target, uint32_t address,
-       uint32_t count, const uint8_t *buffer)
-{
-       LOG_ERROR("%s: implement me", __func__);
-
-       return ERROR_OK;
-}
-
-
 int avr32_ap7k_arch_state(struct target *target)
 {
        struct avr32_ap7k_common *ap7k = target_to_ap7k(target);
 
        .read_memory = avr32_ap7k_read_memory,
        .write_memory = avr32_ap7k_write_memory,
-       .bulk_write_memory = avr32_ap7k_bulk_write_memory,
        /* .checksum_memory = avr32_ap7k_checksum_memory, */
        /* .blank_check_memory = avr32_ap7k_blank_check_memory, */
 
 
        return retval;
 }
 
-static int cortex_a8_bulk_write_memory(struct target *target, uint32_t address,
-       uint32_t count, const uint8_t *buffer)
-{
-       return cortex_a8_write_memory(target, address, 4, count, buffer);
-}
-
 static int cortex_a8_handle_target_request(void *priv)
 {
        struct target *target = priv;
 
        .read_memory = cortex_a8_read_memory,
        .write_memory = cortex_a8_write_memory,
-       .bulk_write_memory = cortex_a8_bulk_write_memory,
 
        .checksum_memory = arm_checksum_memory,
        .blank_check_memory = arm_blank_check_memory,
 
        return retval;
 }
 
-static int cortex_m3_bulk_write_memory(struct target *target, uint32_t address,
-       uint32_t count, const uint8_t *buffer)
-{
-       return cortex_m3_write_memory(target, address, 4, count, buffer);
-}
-
 static int cortex_m3_init_target(struct command_context *cmd_ctx,
        struct target *target)
 {
 
        .read_memory = cortex_m3_read_memory,
        .write_memory = cortex_m3_write_memory,
-       .bulk_write_memory = cortex_m3_bulk_write_memory,
        .checksum_memory = armv7m_checksum_memory,
        .blank_check_memory = armv7m_blank_check_memory,
 
 
                        buffer);
 }
 
-static int dsp563xx_bulk_write_memory_default(struct target *target,
-       uint32_t address,
-       uint32_t count,
-       const uint8_t *buffer)
-{
-       return dsp563xx_write_memory(target,
-                       dsp563xx_get_default_memory(), address, 4, count, buffer);
-}
-
 static int dsp563xx_add_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        return ERROR_OK;
 
        .read_memory = dsp563xx_read_memory_default,
        .write_memory = dsp563xx_write_memory_default,
-       .bulk_write_memory = dsp563xx_bulk_write_memory_default,
 
        .read_buffer = dsp563xx_read_buffer_default,
        .write_buffer = dsp563xx_write_buffer_default,
 
        return retval;
 }
 
-static int dsp5680xx_bulk_write_memory(struct target *t, uint32_t a,
-                                      uint32_t al, const uint8_t *b)
-{
-       LOG_ERROR("Not implemented yet.");
-       return ERROR_FAIL;
-}
-
 static int dsp5680xx_write_buffer(struct target *t, uint32_t a, uint32_t size,
                                  const uint8_t *b)
 {
 
        .read_memory = dsp5680xx_read,
        .write_memory = dsp5680xx_write,
-       .bulk_write_memory = dsp5680xx_bulk_write_memory,
 
        .checksum_memory = dsp5680xx_checksum_memory,
 
 
        return ERROR_OK;
 }
 
-static int adapter_bulk_write_memory(struct target *target,
-               uint32_t address, uint32_t count,
-               const uint8_t *buffer)
-{
-       return adapter_write_memory(target, address, 4, count, buffer);
-}
-
 static const struct command_registration adapter_command_handlers[] = {
        {
                .chain = arm_command_handlers,
 
        .read_memory = adapter_read_memory,
        .write_memory = adapter_write_memory,
-       .bulk_write_memory = adapter_bulk_write_memory,
        .checksum_memory = armv7m_checksum_memory,
        .blank_check_memory = armv7m_blank_check_memory,
 
 
        return target->type->bulk_write_memory(target, address, count, buffer);
 }
 
+static int target_bulk_write_memory_default(struct target *target,
+               uint32_t address, uint32_t count, const uint8_t *buffer)
+{
+       return target_write_memory(target, address, 4, count, buffer);
+}
+
 int target_add_breakpoint(struct target *target,
                struct breakpoint *breakpoint)
 {
        if (target->type->write_buffer == NULL)
                target->type->write_buffer = target_write_buffer_default;
 
+       if (target->type->bulk_write_memory == NULL)
+               target->type->bulk_write_memory = target_bulk_write_memory_default;
+
        return ERROR_OK;
 }
 
 
        return ERROR_FAIL;
 }
 
-static int xscale_bulk_write_memory(struct target *target, uint32_t address,
-       uint32_t count, const uint8_t *buffer)
-{
-       return xscale_write_memory(target, address, 4, count, buffer);
-}
-
 static int xscale_get_ttb(struct target *target, uint32_t *result)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        .read_phys_memory = xscale_read_phys_memory,
        .write_memory = xscale_write_memory,
        .write_phys_memory = xscale_write_phys_memory,
-       .bulk_write_memory = xscale_bulk_write_memory,
 
        .checksum_memory = arm_checksum_memory,
        .blank_check_memory = arm_blank_check_memory,