|  | #ifndef CRISUTILS_H | 
|  | #define CRISUTILS_H 1 | 
|  |  | 
|  | static char *tst_cc_loc = NULL; | 
|  |  | 
|  | #define cris_tst_cc_init() \ | 
|  | do { tst_cc_loc = "test_cc failed at " CURRENT_LOCATION; } while(0) | 
|  |  | 
|  | /* We need a real symbol to signal error.  */ | 
|  | void _err(void) { | 
|  | if (!tst_cc_loc) | 
|  | tst_cc_loc = "tst_cc_failed\n"; | 
|  | _fail(tst_cc_loc); | 
|  | } | 
|  |  | 
|  | static inline void cris_tst_cc_n1(void) | 
|  | { | 
|  | asm volatile ("bpl _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  | static inline void cris_tst_cc_n0(void) | 
|  | { | 
|  | asm volatile ("bmi _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  |  | 
|  | static inline void cris_tst_cc_z1(void) | 
|  | { | 
|  | asm volatile ("bne _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  | static inline void cris_tst_cc_z0(void) | 
|  | { | 
|  | asm volatile ("beq _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  | static inline void cris_tst_cc_v1(void) | 
|  | { | 
|  | asm volatile ("bvc _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  | static inline void cris_tst_cc_v0(void) | 
|  | { | 
|  | asm volatile ("bvs _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  |  | 
|  | static inline void cris_tst_cc_c1(void) | 
|  | { | 
|  | asm volatile ("bcc _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  | static inline void cris_tst_cc_c0(void) | 
|  | { | 
|  | asm volatile ("bcs _err\n" | 
|  | "nop\n"); | 
|  | } | 
|  |  | 
|  | static inline void cris_tst_mov_cc(int n, int z) | 
|  | { | 
|  | if (n) cris_tst_cc_n1(); else cris_tst_cc_n0(); | 
|  | if (z) cris_tst_cc_z1(); else cris_tst_cc_z0(); | 
|  | asm volatile ("" : : "g" (_err)); | 
|  | } | 
|  |  | 
|  | static inline void cris_tst_cc(const int n, const int z, | 
|  | const int v, const int c) | 
|  | { | 
|  | if (n) cris_tst_cc_n1(); else cris_tst_cc_n0(); | 
|  | if (z) cris_tst_cc_z1(); else cris_tst_cc_z0(); | 
|  | if (v) cris_tst_cc_v1(); else cris_tst_cc_v0(); | 
|  | if (c) cris_tst_cc_c1(); else cris_tst_cc_c0(); | 
|  | asm volatile ("" : : "g" (_err)); | 
|  | } | 
|  |  | 
|  | #endif |