Annotation of qemu/tests/cris/crisutils.h, revision 1.1.1.1

1.1       root        1: static char *tst_cc_loc = NULL;
                      2: 
                      3: #define cris_tst_cc_init() \
                      4: do { tst_cc_loc = "test_cc failed at " CURRENT_LOCATION; } while(0)
                      5: 
                      6: /* We need a real symbol to signal error.  */
                      7: static void _err(void) {
                      8:        if (!tst_cc_loc)
                      9:                tst_cc_loc = "tst_cc_failed\n";
                     10:        _fail(tst_cc_loc);
                     11: }
                     12: 
                     13: extern inline void cris_tst_cc_n1(void)
                     14: {
                     15:        asm volatile ("bpl _err\n"
                     16:                      "nop\n");
                     17: }
                     18: extern inline void cris_tst_cc_n0(void)
                     19: {
                     20:        asm volatile ("bmi _err\n"
                     21:                      "nop\n");
                     22: }
                     23: 
                     24: extern inline void cris_tst_cc_z1(void)
                     25: {
                     26:        asm volatile ("bne _err\n"
                     27:                      "nop\n");
                     28: }
                     29: extern inline void cris_tst_cc_z0(void)
                     30: {
                     31:        asm volatile ("beq _err\n"
                     32:                      "nop\n");
                     33: }
                     34: extern inline void cris_tst_cc_v1(void)
                     35: {
                     36:        asm volatile ("bvc _err\n"
                     37:                      "nop\n");
                     38: }
                     39: extern inline void cris_tst_cc_v0(void)
                     40: {
                     41:        asm volatile ("bvs _err\n"
                     42:                      "nop\n");
                     43: }
                     44: 
                     45: extern inline void cris_tst_cc_c1(void)
                     46: {
                     47:        asm volatile ("bcc _err\n"
                     48:                      "nop\n");
                     49: }
                     50: extern inline void cris_tst_cc_c0(void)
                     51: {
                     52:        asm volatile ("bcs _err\n"
                     53:                      "nop\n");
                     54: }
                     55: 
                     56: extern inline void cris_tst_mov_cc(int n, int z)
                     57: {
                     58:        if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
                     59:        if (z) cris_tst_cc_z1(); else cris_tst_cc_z0();
                     60:        asm volatile ("" : : "g" (_err));
                     61: }
                     62: 
                     63: extern inline void cris_tst_cc(const int n, const int z,
                     64:                               const int v, const int c)
                     65: {
                     66:        if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
                     67:        if (z) cris_tst_cc_z1(); else cris_tst_cc_z0();
                     68:        if (v) cris_tst_cc_v1(); else cris_tst_cc_v0();
                     69:        if (c) cris_tst_cc_c1(); else cris_tst_cc_c0();
                     70:        asm volatile ("" : : "g" (_err));
                     71: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.