Skip to content
Snippets Groups Projects
Commit 63320f6a authored by Pieter Donker's avatar Pieter Donker
Browse files

repair bug in reading in mmap

parent 9d3206d6
Branches
No related tags found
No related merge requests found
...@@ -121,7 +121,7 @@ CMMap mmap_to_regmap(istringstream& iss) ...@@ -121,7 +121,7 @@ CMMap mmap_to_regmap(istringstream& iss)
string val_str; string val_str;
bool same_mask; bool same_mask;
bool same_field_name; bool same_field_name;
// char sep; char sep;
iss.getline(line, sizeof(line)); iss.getline(line, sizeof(line));
iss.getline(line, sizeof(line)); iss.getline(line, sizeof(line));
...@@ -188,11 +188,9 @@ CMMap mmap_to_regmap(istringstream& iss) ...@@ -188,11 +188,9 @@ CMMap mmap_to_regmap(istringstream& iss)
} }
/* Code to remove sscanf */ /* Code to remove sscanf */
// strs >> mm_mask_hi; strs >> mm_mask_hi;
// strs >> sep; strs >> sep;
// strs >> mm_mask_lo; strs >> mm_mask_lo;
strs >> val_str; // get mm_mask hi/lo
sscanf(val_str.c_str(), "%d:%d", &mm_mask_hi, &mm_mask_lo);
mask = 0; mask = 0;
for (int i=mm_mask_lo; i<=mm_mask_hi; i++) { for (int i=mm_mask_lo; i<=mm_mask_hi; i++) {
mask |= (1 << i); mask |= (1 << i);
...@@ -202,41 +200,31 @@ CMMap mmap_to_regmap(istringstream& iss) ...@@ -202,41 +200,31 @@ CMMap mmap_to_regmap(istringstream& iss)
} }
mm_info.shift = mm_mask_lo; mm_info.shift = mm_mask_lo;
/* Code to remove sscanf */ strs >> val_str; // get user_mask
// if (strs.peek() != "-") {
// sep = strs.get()
// mm_info.user_mask = mm_info.mm_mask;
// mm_info.span = mm_info.n_fields;
// }
// else {
// strs >> user_mask_hi;
// strs >> sep;
// strs >> user_mask_lo;
// mask = 0;
// for (int i=mm_mask_lo; i<=mm_mask_hi; i++) {
// mask |= (1<<i);
// }
// mm_info.user_mask = mask;
// mm_info.span = (uint)(((user_mask_hi - user_mask_lo + 1) * mm_info.n_fields) / (mm_mask_hi - mm_mask_lo + 1));
// }
strs >> val_str; // get user_mask hi/lo
uint32_t span;
if (val_str != "-") { if (val_str != "-") {
sscanf(val_str.c_str(), "%d:%d", &user_mask_hi, &user_mask_lo); stringstream ss(val_str);
ss >> user_mask_hi;
ss >> sep;
ss >> user_mask_lo;
mask = 0; mask = 0;
for (int i=mm_mask_lo; i<=mm_mask_hi; i++) { for (int i=mm_mask_lo; i<=mm_mask_hi; i++) {
mask |= (1<<i); mask |= (1<<i);
} }
mm_info.user_mask = mask; mm_info.user_mask = mask;
span = (uint)(((user_mask_hi - user_mask_lo + 1) * mm_info.n_fields) / (mm_mask_hi - mm_mask_lo + 1));
} }
else { else {
mm_info.user_mask = mm_info.mm_mask; mm_info.user_mask = mm_info.mm_mask;
}
uint32_t span;
if (mm_info.radix == "char8") {
span = mm_info.n_fields / sizeof(uint32_t);
}
else {
span = mm_info.n_fields; span = mm_info.n_fields;
} }
mm_info.span += span; mm_info.span += span;
strs >> val_str; // get peripheral_span strs >> val_str; // get peripheral_span
if (val_str != "-") { if (val_str != "-") {
if (mm_info.n_peripherals > 1 || mm_info.n_ports > 1) { if (mm_info.n_peripherals > 1 || mm_info.n_ports > 1) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment