+ /* RAMCODE used for fm3 Flash sector erase: */
+ /* R0 keeps Flash Sequence address 1 (u32FlashSeq1) */
+ /* R1 keeps Flash Sequence address 2 (u32FlashSeq2) */
+ /* R2 keeps Flash Offset address (ofs) */
+ static const uint8_t fm3_flash_erase_sector_code[] = {
+ /* *(uint16_t*)u32FlashSeq1 = 0xAA; */
+ 0xAA, 0x24, /* MOVS R4, #0xAA */
+ 0x04, 0x80, /* STRH R4, [R0, #0] */
+ /* *(uint16_t*)u32FlashSeq2 = 0x55; */
+ 0x55, 0x23, /* MOVS R3, #0x55 */
+ 0x0B, 0x80, /* STRH R3, [R1, #0] */
+ /* *(uint16_t*)u32FlashSeq1 = 0x80; */
+ 0x80, 0x25, /* MOVS R5, #0x80 */
+ 0x05, 0x80, /* STRH R5, [R0, #0] */
+ /* *(uint16_t*)u32FlashSeq1 = 0xAA; */
+ 0x04, 0x80, /* STRH R4, [R0, #0] */
+ /* *(uint16_t*)u32FlashSeq2 = 0x55; */
+ 0x0B, 0x80, /* STRH R3, [R1, #0] */
+ /* Sector_Erase Command (0x30) */
+ /* *(uint16_t*)ofs = 0x30; */
+ 0x30, 0x20, /* MOVS R0, #0x30 */
+ 0x10, 0x80, /* STRH R0, [R2, #0] */
+ /* End Code */
+ 0x00, 0xBE, /* BKPT #0 */
+ };
+
+ LOG_INFO("Fujitsu MB9[A/B]FXXX: Sector Erase ... (%d to %d)", first, last);
+
+ /* disable HW watchdog */
+ retval = target_write_u32(target, 0x40011C00, 0x1ACCE551);
+ if (retval != ERROR_OK)
+ return retval;
+
+ retval = target_write_u32(target, 0x40011C00, 0xE5331AAE);
+ if (retval != ERROR_OK)
+ return retval;
+
+ retval = target_write_u32(target, 0x40011008, 0x00000000);
+ if (retval != ERROR_OK)
+ return retval;