|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <stdlib.h> ! 3: #include <stdint.h> ! 4: #include "sys.h" ! 5: #include "crisutils.h" ! 6: ! 7: extern inline int cris_bound_b(int v, int b) { ! 8: int r = v; ! 9: asm ("bound.b\t%1, %0\n" : "+r" (r) : "ri" (b)); ! 10: return r; ! 11: } ! 12: ! 13: extern inline int cris_bound_w(int v, int b) { ! 14: int r = v; ! 15: asm ("bound.w\t%1, %0\n" : "+r" (r) : "ri" (b)); ! 16: return r; ! 17: } ! 18: ! 19: extern inline int cris_bound_d(int v, int b) { ! 20: int r = v; ! 21: asm ("bound.d\t%1, %0\n" : "+r" (r) : "ri" (b)); ! 22: return r; ! 23: } ! 24: ! 25: int main(void) ! 26: { ! 27: int r; ! 28: ! 29: cris_tst_cc_init(); ! 30: r = cris_bound_d(-1, 2); ! 31: cris_tst_cc(0, 0, 0, 0); ! 32: if (r != 2) ! 33: err(); ! 34: ! 35: cris_tst_cc_init(); ! 36: r = cris_bound_d(2, 0xffffffff); ! 37: cris_tst_cc(0, 0, 0, 0); ! 38: if (r != 2) ! 39: err(); ! 40: ! 41: cris_tst_cc_init(); ! 42: r = cris_bound_d(0xffff, 0xffff); ! 43: cris_tst_cc(0, 0, 0, 0); ! 44: if (r != 0xffff) ! 45: err(); ! 46: ! 47: cris_tst_cc_init(); ! 48: r = cris_bound_d(-1, 0xffffffff); ! 49: cris_tst_cc(1, 0, 0, 0); ! 50: if (r != 0xffffffff) ! 51: err(); ! 52: ! 53: cris_tst_cc_init(); ! 54: r = cris_bound_d(0x78134452, 0x5432f789); ! 55: cris_tst_cc(0, 0, 0, 0); ! 56: if (r != 0x5432f789) ! 57: err(); ! 58: ! 59: cris_tst_cc_init(); ! 60: r = cris_bound_w(-1, 2); ! 61: cris_tst_cc(0, 0, 0, 0); ! 62: if (r != 2) ! 63: err(); ! 64: ! 65: cris_tst_cc_init(); ! 66: r = cris_bound_w(-1, 0xffff); ! 67: cris_tst_cc(0, 0, 0, 0); ! 68: if (r != 0xffff) ! 69: err(); ! 70: ! 71: cris_tst_cc_init(); ! 72: r = cris_bound_w(2, 0xffff); ! 73: cris_tst_cc(0, 0, 0, 0); ! 74: if (r != 2) ! 75: err(); ! 76: ! 77: cris_tst_cc_init(); ! 78: r = cris_bound_w(0xfedaffff, 0xffff); ! 79: cris_tst_cc(0, 0, 0, 0); ! 80: if (r != 0xffff) ! 81: err(); ! 82: ! 83: cris_tst_cc_init(); ! 84: r = cris_bound_w(0x78134452, 0xf789); ! 85: cris_tst_cc(0, 0, 0, 0); ! 86: if (r != 0xf789) ! 87: err(); ! 88: ! 89: cris_tst_cc_init(); ! 90: r = cris_bound_b(-1, 2); ! 91: cris_tst_cc(0, 0, 0, 0); ! 92: if (r != 2) ! 93: err(); ! 94: ! 95: cris_tst_cc_init(); ! 96: r = cris_bound_b(2, 0xff); ! 97: cris_tst_cc(0, 0, 0, 0); ! 98: if (r != 2) ! 99: err(); ! 100: ! 101: cris_tst_cc_init(); ! 102: r = cris_bound_b(-1, 0xff); ! 103: cris_tst_cc(0, 0, 0, 0); ! 104: if (r != 0xff) ! 105: err(); ! 106: ! 107: cris_tst_cc_init(); ! 108: r = cris_bound_b(0xff, 0xff); ! 109: cris_tst_cc(0, 0, 0, 0); ! 110: if (r != 0xff) ! 111: err(); ! 112: ! 113: cris_tst_cc_init(); ! 114: r = cris_bound_b(0xfeda49ff, 0xff); ! 115: cris_tst_cc(0, 0, 0, 0); ! 116: if (r != 0xff) ! 117: err(); ! 118: ! 119: cris_tst_cc_init(); ! 120: r = cris_bound_b(0x78134452, 0x89); ! 121: cris_tst_cc(0, 0, 0, 0); ! 122: if (r != 0x89) ! 123: err(); ! 124: ! 125: cris_tst_cc_init(); ! 126: r = cris_bound_w(0x78134452, 0); ! 127: cris_tst_cc(0, 1, 0, 0); ! 128: if (r != 0) ! 129: err(); ! 130: ! 131: cris_tst_cc_init(); ! 132: r = cris_bound_b(0xffff, -1); ! 133: cris_tst_cc(0, 0, 0, 0); ! 134: if (r != 0xff) ! 135: err(); ! 136: ! 137: pass(); ! 138: return 0; ! 139: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.