Sirish,
Interrupt priority can be easily changed using this macro from CodeWarrior project wizard generated files:
#define ROUTE_INTERRUPT(vec_adr, cfdata) \
INT_CFADDR= (vec_adr) & 0xF0; \
INT_CFDATA_ARR[((vec_adr) & 0x0F) >> 1]= (cfdata)
Usage is ... Unfortunately you didn't say what variant of S12X are you using. In case it is ECT channel 0 on S12XE:
ROUTE_INTERRUPT ( Vectch0, desired_priority_level) ;
Vectch0 is vector address defined in derivative header file.
ROUTE_INTERRUPT() is a half of the task. To make interrupts nested, you need to reenable interrupts in all lower priority interrupt handlers.
Priority levels mechanism works this way: when CPU enters interrupt handler for level (for example) 2 interrupt, it sets I bit and sets current priority level to 2. I=1 disables all interrupts, PRIO=2 disables all interrupts with priority levels <=2. To enable Interrupts with priority levels >=3, you need to clear I bit. You should clear I bit (asm CLI;) as soon as you enter lower priority interrupts.