tests: add armv7 debug test and a register dumper
[pandora-misc.git] / tests / regread.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <sys/mman.h>
7 #include <unistd.h>
8
9 int main(int argc, char *argv[])
10 {
11         volatile unsigned int *regs;
12         unsigned int nreg, val;
13         int memdev;
14         char *p;
15
16         if (argc < 2)
17         {
18                 printf("%s <reg> [val]\n", argv[0]);
19                 return 1;
20         }
21
22         nreg = strtoul(argv[1], &p, 0);
23         if (*p != 0)
24         {
25                 printf("bad arg 1\n");
26                 return 1;
27         }
28
29         memdev = open("/dev/mem", O_RDWR|O_SYNC);
30         if (memdev == -1)
31         {
32                 perror("open /dev/mem");
33                 return 1;
34         }
35
36         regs = mmap(0, 0x1000, PROT_WRITE|PROT_READ, MAP_SHARED, memdev, nreg & ~0xfff);
37         if (regs == MAP_FAILED)
38         {
39                 close(memdev);
40                 perror("mmap");
41                 return 1;
42         }
43
44         printf(" = 0x%08x\n", regs[(nreg&0xfff)>>2]);
45
46         if (argc == 3)
47         {
48                 val = strtoul(argv[2], &p, 0);
49                 if (*p != 0)
50                 {
51                         printf("bad arg 2\n");
52                         return 1;
53                 }
54
55                 regs[(nreg&0xfff)>>2] = val;
56                 printf("val set.\n");
57         }
58
59         munmap((void *)regs, 0x1000);
60         close(memdev);
61
62         return 0;
63 }
64