MCPcopy Create free account
hub / github.com/coreboot/coreboot / dump_regs

Function dump_regs

util/superiotool/superiotool.c:110–212  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108}
109
110static void dump_regs(const struct superio_registers_ldn *reg_table_ldn,
111 uint16_t port, uint8_t ldn_sel)
112{
113 int k;
114 uint8_t reg_dumped[256] = {0};
115 const int16_t *idx, *def;
116
117 // The LDN selector will never be listed as register in the reg_table_ldn,
118 // yet it should not be displayed as "unknown register" in the dump.
119 reg_dumped[ldn_sel] = 1;
120
121 if (reg_table_ldn->ldn != NOLDN) {
122 printf("LDN 0x%02x", reg_table_ldn->ldn);
123 if (reg_table_ldn->name != NULL)
124 printf(" (%s)", reg_table_ldn->name);
125 regwrite(port, ldn_sel, reg_table_ldn->ldn);
126 } else {
127 if (reg_table_ldn->name == NULL)
128 printf("Register dump:");
129 else
130 printf("(%s)", reg_table_ldn->name);
131 }
132
133 set_extra_selector(port, &reg_table_ldn->esel);
134
135 idx = reg_table_ldn->idx;
136 def = reg_table_ldn->def;
137
138 if (alternate_dump) {
139 int skip_def = 0;
140 int val;
141
142 printf("\nidx def val\n");
143
144 for (k = 0; idx[k] != EOT; k++) {
145 if (skip_def || def[k] == EOT) {
146 skip_def = 1;
147 printf("\n");
148 continue;
149 }
150
151 printf("0x%02x: ", idx[k]);
152 reg_dumped[idx[k]] = 1;
153 val = regval(port, idx[k]);
154
155 if (def[k] == NANA)
156 printf("(NA) 0x%02x\n", val);
157 else if (def[k] == RSVD)
158 printf("(RR) 0x%02x\n", val);
159 else if (def[k] == MISC)
160 printf("(MM) 0x%02x\n", val);
161 else {
162 if (def[k] == val)
163 printf("0x%02x 0x%02x\n", def[k], val);
164 else
165 printf("0x%02x [0x%02x]\n", def[k], val);
166 }
167 }

Callers 1

dump_superioFunction · 0.85

Calls 5

printfFunction · 0.85
regwriteFunction · 0.85
set_extra_selectorFunction · 0.85
regvalFunction · 0.85
putcharFunction · 0.85

Tested by

no test coverage detected