CONFIG_CODE_DATA_RELOCATION may conflict with __ramfunc on Cortex-M7


baudiffred@...
 

Has anyone had issues combining data/code relocation and __ramfunc support?  

__ramfunc functions as expected on an iMXRT1062 system.  When additional code is relocated via the file-based CONFIG_CODE_DATA_RELOCATION feature, __ramfunc no longer executes properly.  If you look at the flash contents, they appear to be offset by 16 as are the resultant instructions loaded in RAM.  Perhaps this is an alignment bug in the solution.  

   0x80000cc0 <flexSpiNorInit+0>: movs r0, r0   <-------  0's for first 16 memory locations
   0x80000cc2 <flexSpiNorInit+2>: movs r0, r0
   0x80000cc4 <flexSpiNorInit+4>: movs r0, r0
   0x80000cc6 <flexSpiNorInit+6>: movs r0, r0
   0x80000cc8 <flexSpiNorInit+8>: movs r0, r0
   0x80000cca <flexSpiNorInit+10>: movs r0, r0
   0x80000ccc <flexSpiNorInit+12>: movs r0, r0
   0x80000cce <flexSpiNorInit+14>: movs r0, r0
   0x80000cd0 <flexSpiNorInit+16>: push {lr}             <---- this is incorrectly offset by 16 in _ramfunc_rom_start
   0x80000cd2: sub sp, #60 ; 0x3c
   0x80000cd4: add r0, sp, #4
   0x80000cd6: bl 0x80000104 <FLEXSPI_GetDefaultConfig+16>
   0x80000cda: movs r0, #0
   0x80000cdc: add sp, #60 ; 0x3c
   0x80000cde: ldr.w r0, [sp, r0]
 

Join devel@lists.zephyrproject.org to automatically receive all group messages.