diff options
| author | Kathy Gray | 2016-01-26 14:19:48 +0000 |
|---|---|---|
| committer | Kathy Gray | 2016-01-26 14:19:48 +0000 |
| commit | f1a06d6f60b15521db564a01bdafabb2391bfaa5 (patch) | |
| tree | 633d1fefacb8c8bc5a59ffcf295970306b542f62 /src | |
| parent | 6f8c99cf778ac458860e1a28516fc2468b43bbfd (diff) | |
Fix problem in run_with_model where we forgot that ppcmem2 treats everything as increasing, and updated ranges accordingly, and mistakenly were using the wrong range values for register slicing.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/run_interp_model.ml | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lem_interp/run_interp_model.ml b/src/lem_interp/run_interp_model.ml index de628116..ff5dea0b 100644 --- a/src/lem_interp/run_interp_model.ml +++ b/src/lem_interp/run_interp_model.ml @@ -54,7 +54,16 @@ module Mem = struct (memory_value_to_string !default_endian [v]) end -let slice register_vector (start,stop) = slice_reg_value register_vector start stop +let slice register_vector (start,stop) = + if register_vector.rv_dir = D_increasing + then slice_reg_value register_vector start stop + else + (*Interface turns start and stop into forms for + increasing because ppcmem only speaks increasing, so here we turn it back *) + let startd = register_vector.rv_start_internal- start in + let stopd = startd - stop in + (*let _ = Printf.eprintf "slice decreasing with %i, %i, %i\n" startd stopd register_vector.rv_start in*) + slice_reg_value {register_vector with rv_start=register_vector.rv_start_internal} startd stopd let big_num_unit = of_int 1 |
