Hello Tuna Ayan,
I'm afraid that CW linker cannot distinguish between constant vs. volatile constant.
I'd recommend you to use __declspec(section ... ) instead of #pragma section + push/pop. since it's easier to replace it with macro:
e.g. you can add the statements below into your prefix .h file or into a custom .h file that is included into each source file :
prefix.h
-----------
#pragma section R ".__Cal_DataArea" ".__Cal_DataArea"
#define VOLATILE_CONST __declspec(section ".__Cal_DataArea") volatile const
Now in all the source files where you declare a volatile constant just replace keyword "volatile const" with "VOLATILE_CONST"
VOLATILE_CONST char hello[]= "Hello World!";
and all these constant will be placed into ".__Cal_DataArea" section.
Note: If a constant is not referenced in the code you should instruct the linker to avoid dead-stipping this symbol e.g. in .lcf file, FORCEACTIVE { "hello" }
Hope it helps.
Stan