kernel/eka/compsupp/gcce/gcce.h
branchGCC_SURGE
changeset 150 9b2dbb18d44b
parent 104 466a0df5c15a
child 156 12b6722e7753
equal deleted inserted replaced
146:eb29190b8a37 150:9b2dbb18d44b
   166 
   166 
   167 #ifdef __cplusplus
   167 #ifdef __cplusplus
   168 // Support for throwing exceptions through embedded assembler
   168 // Support for throwing exceptions through embedded assembler
   169 // Should only be needed user side
   169 // Should only be needed user side
   170 
   170 
   171 #define	__EH_FRAME_ADDRESS(reg,offset)	FRAME ADDRESS reg, offset
   171 #define __VSTR(x) #x
   172 #define __EH_FRAME_PUSH2(reg1,reg2) FRAME PUSH {reg1, reg2}
   172 #define __STR(x) __VSTR(x)
   173 #define __EH_FRAME_SAVE1(reg,offset) FRAME SAVE {reg}, offset
   173 #define __GAS_SAVE_REG(reg) ".save {" __STR(reg) " }"
       
   174 #define __ASM_GAS_SAVE_REG(reg) asm( __GAS_SAVE_REG(reg) );
       
   175 #define __GAS_SAVE_REGS2(reg1,reg2) ".save {" __STR(reg1) "," __STR(reg2) "}"
       
   176 #define __ASM_GAS_SAVE_REGS2(reg1,reg2) asm( __GAS_SAVE_REGS2(reg1,reg2) );
       
   177 #define __GAS_SETFP(reg,offset) ".setfp fp," __STR(reg) ",#" __STR(offset)
       
   178 #define __ASM_GAS_SETFP(reg,offset) asm( __GAS_SETFP(reg,offset) );
       
   179 
       
   180 #define	__EH_FRAME_ADDRESS(reg,offset)	\
       
   181 		__ASM_GAS_SETFP(reg,offset)
       
   182 #define __EH_FRAME_PUSH2(reg1,reg2) __ASM_GAS_SAVE_REGS2(reg1,reg2)
       
   183 #define __EH_FRAME_SAVE1(reg,offset) \
       
   184 	__EH_FRAME_ADDRESS(fp,offset) \
       
   185 	__ASM_GAS_SAVE_REG(reg)
   174 
   186 
   175 #endif
   187 #endif
   176 
   188