Because this is a quite toolchain-specific question, I would ask it on the Keil forum as well.
My company uses the IAR WB for some projects, which has a specific __ramfunc keyword to execute code from RAM. Not sure how Keil supports this.
> I prefer to not update SDK files with directives in front of each function. It would be best if there is a way to specify relocating entire *.o to SRAM.
I suspect you most likely need to, unless you you can accept unnecessary "ballast" when moving whole modules to RAM.
Would moving critical code to the parallel Flash be an option ? You would just need to modify the linker settings / scatter file for that purpose.