22{
23 FILE *pipe;
24 char line[BUFSIZ];
25
27
28 pipe=popen("prtconf -pv","r");
29 if (pipe==NULL) {
31 }
32
33 while(1) {
34
35 if (fgets(line,BUFSIZ,pipe)==NULL) break;
36
37 if (strstr(line,"icache-size:")) {
38 sscanf(line,"%*s %#x",&mem[0].cache[0].size);
39 }
40 if (strstr(line,"icache-line-size:")) {
41 sscanf(line,"%*s %#x",&mem[0].cache[0].line_size);
42 }
43 if (strstr(line,"icache-associativity:")) {
44 sscanf(line,"%*s %#x",&mem[0].cache[0].associativity);
45 }
46
47 if (strstr(line,"dcache-size:")) {
48 sscanf(line,"%*s %#x",&mem[0].cache[1].size);
49 }
50 if (strstr(line,"dcache-line-size:")) {
51 sscanf(line,"%*s %#x",&mem[0].cache[1].line_size);
52 }
53 if (strstr(line,"dcache-associativity:")) {
54 sscanf(line,"%*s %#x",&mem[0].cache[1].associativity);
55 }
56
57 if (strstr(line,"ecache-size:")) {
58 sscanf(line,"%*s %#x",&mem[1].cache[0].size);
59 }
60 if (strstr(line,"ecache-line-size:")) {
61 sscanf(line,"%*s %#x",&mem[1].cache[0].line_size);
62 }
63 if (strstr(line,"ecache-associativity:")) {
64 sscanf(line,"%*s %#x",&mem[1].cache[0].associativity);
65 }
66
67 if (strstr(line,"#itlb-entries:")) {
68 sscanf(line,"%*s %#x",&mem[0].tlb[0].num_entries);
69 }
70 if (strstr(line,"#dtlb-entries:")) {
71 sscanf(line,"%*s %#x",&mem[0].tlb[1].num_entries);
72 }
73
74 }
75
76
77 pclose(pipe);
78
79
83
84
89
90
91
93
95
96
98
100
101
106
107
109
111}