|
|
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. */
1.1.1.2 root 7: void _err(void) {
1.1 root 8: if (!tst_cc_loc)
9: tst_cc_loc = "tst_cc_failed\n";
10: _fail(tst_cc_loc);
11: }
12:
1.1.1.3 ! root 13: static inline void cris_tst_cc_n1(void)
1.1 root 14: {
15: asm volatile ("bpl _err\n"
16: "nop\n");
17: }
1.1.1.3 ! root 18: static inline void cris_tst_cc_n0(void)
1.1 root 19: {
20: asm volatile ("bmi _err\n"
21: "nop\n");
22: }
23:
1.1.1.3 ! root 24: static inline void cris_tst_cc_z1(void)
1.1 root 25: {
26: asm volatile ("bne _err\n"
27: "nop\n");
28: }
1.1.1.3 ! root 29: static inline void cris_tst_cc_z0(void)
1.1 root 30: {
31: asm volatile ("beq _err\n"
32: "nop\n");
33: }
1.1.1.3 ! root 34: static inline void cris_tst_cc_v1(void)
1.1 root 35: {
36: asm volatile ("bvc _err\n"
37: "nop\n");
38: }
1.1.1.3 ! root 39: static inline void cris_tst_cc_v0(void)
1.1 root 40: {
41: asm volatile ("bvs _err\n"
42: "nop\n");
43: }
44:
1.1.1.3 ! root 45: static inline void cris_tst_cc_c1(void)
1.1 root 46: {
47: asm volatile ("bcc _err\n"
48: "nop\n");
49: }
1.1.1.3 ! root 50: static inline void cris_tst_cc_c0(void)
1.1 root 51: {
52: asm volatile ("bcs _err\n"
53: "nop\n");
54: }
55:
1.1.1.3 ! root 56: static inline void cris_tst_mov_cc(int n, int z)
1.1 root 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:
1.1.1.3 ! root 63: static inline void cris_tst_cc(const int n, const int z,
1.1 root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.