1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2010 by Spencer Oliver *
5 * spen@spen-soft.co.uk *
7 * Copyright (C) 2011 Øyvind Harboe *
8 * oyvind.harboe@zylin.com *
10 * Copyright (C) 2011 Clement Burin des Roziers *
11 * clement.burin-des-roziers@hikob.com *
13 * Copyright (C) 2017 Armin van der Togt *
15 ***************************************************************************/
24 r0 - destination address
27 r3 - bytes per half page
30 r0 - destination write pointer
31 r1 - source read pointer
32 r2 - source limit address
33 r3 - bytes per half page
35 r5 - pages left in current half page
39 /* offsets of registers from flash reg base */
40 #define STM32_FLASH_SR_OFFSET 0x18
45 // r2 = source + half pages * bytes per half page
51 // initialize pages left in current half page
54 // load word from address in r1 and increase r1 by 4
56 // store word to address in r0 and increase r0 by 4
58 // check for end of half page
62 // read status register into r6, loop while bottom bit is set
63 ldr r6, [r4, #STM32_FLASH_SR_OFFSET]
67 // compare r1 and r2, loop if not equal
71 // Set breakpoint to exit