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