|
|
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: /* this would be better to do in asm, it's an orgy in GCC inline asm now. */
8:
9: /* ACR will be clobbered. */
10: #define cris_addoq(o, v) \
11: asm volatile ("addoq\t%1, %0, $acr\n" : : "r" (v), "i" (o) : "acr");
12:
13:
14: int main(void)
15: {
16: int x[3] = {0x55aa77ff, 0xccff2244, 0x88ccee19};
17: int *p, *t = x + 1;
18:
19: cris_tst_cc_init();
20: asm volatile ("setf\tzvnc\n");
21: cris_addoq(0, t);
22: cris_tst_cc(1, 1, 1, 1);
23: asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
24: if (*p != 0xccff2244)
25: err();
26:
27: cris_tst_cc_init();
28: asm volatile ("setf\tzvnc\n");
29: cris_addoq(4, t);
1.1.1.2 ! root 30: cris_tst_cc(0, 0, 0, 0);
1.1 root 31: asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
32: if (*p != 0x88ccee19)
33: err();
34:
35: cris_tst_cc_init();
36: asm volatile ("clearf\tzvnc\n");
37: cris_addoq(-8, t + 1);
38: cris_tst_cc(0, 0, 0, 0);
39: asm volatile ("move.d\t$acr, %0\n" : "=r" (p));
40: if (*p != 0x55aa77ff)
41: err();
42: pass();
43: return 0;
44: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.