Interestingly this is somewhere that x86 is cleaner. For instance on x86, the 'memcpy' instruction rep movsb is architecturally defined as simply not incrementing the program counter until it meets it's end condition. It can perform one move decrement remain count, increment addresses, check for exceptions and interrupts then repeat.
Cortex M also exposes how far you are into a ldm/stm for recoverable exceptions as well.
Cortex M also exposes how far you are into a ldm/stm for recoverable exceptions as well.