Can anyone comment on the prologue and epilogue of following CM7 code, particularly the content of r7 when the routine returns?
{ 0: b480 push {r7} 2: af00 add r7, sp, #0 if ((ANADIG_MISC->MISC_DIFPROG & ANADIG_MISC_MISC_DIFPROG_CHIPID(0x10U)) != 0U) 4: 4b0b ldr r3, [pc, #44] @ (34 <RamBased_ROM_API_Init+0x34>) 6: f8d3 3800 ldr.w r3, [r3, #2048] @ 0x800 a: f003 0310 and.w r3, r3, #16 e: 2b00 cmp r3, #0 10: d005 beq.n 1e <RamBased_ROM_API_Init+0x1e> { g_bootloaderTree = ((bootloader_api_entry_t *)*(uint32_t *)0x0021001cU); 12: 4b09 ldr r3, [pc, #36] @ (38 <RamBased_ROM_API_Init+0x38>) 14: 681b ldr r3, [r3, #0] 16: 461a mov r2, r3 18: 4b08 ldr r3, [pc, #32] @ (3c <RamBased_ROM_API_Init+0x3c>) 1a: 601a str r2, [r3, #0] } else { g_bootloaderTree = ((bootloader_api_entry_t *)*(uint32_t *)0x0020001cU); } } 1c: e004 b.n 28 <RamBased_ROM_API_Init+0x28> g_bootloaderTree = ((bootloader_api_entry_t *)*(uint32_t *)0x0020001cU); 1e: 4b08 ldr r3, [pc, #32] @ (40 <RamBased_ROM_API_Init+0x40>) 20: 681b ldr r3, [r3, #0] 22: 461a mov r2, r3 24: 4b05 ldr r3, [pc, #20] @ (3c <RamBased_ROM_API_Init+0x3c>) 26: 601a str r2, [r3, #0] } 28: bf00 nop 2a: 46bd mov sp, r7 2c: f85d 7b04 ldr.w r7, [sp], #4 30: 4770 bx lr 32: bf00 nop 34: 40c84000 .word 0x40c84000 38: 0021001c .word 0x0021001c 3c: 80981070 .word 0x80981070 40: 0020001c .word 0x0020001c
Thanks very much!