From fcac3aa05c68528e940d8486f5aa27c011ac9355 Mon Sep 17 00:00:00 2001 From: Keith Rothman <537074+litghost@users.noreply.github.com> Date: Fri, 5 Oct 2018 09:31:45 -0700 Subject: [PATCH] Lighter hack. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com> --- fuzzers/005-tilegrid/generate.py | 3 ++- tools/fasm2frame.py | 1 + tools/segprint2fasm.py | 31 ++++++++++++++++++++++++++++++- utils/segprint.py | 1 + 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/fuzzers/005-tilegrid/generate.py b/fuzzers/005-tilegrid/generate.py index 4f5e5235..d05e1282 100644 --- a/fuzzers/005-tilegrid/generate.py +++ b/fuzzers/005-tilegrid/generate.py @@ -230,8 +230,9 @@ for segment_name in database["segments"].keys(): for tiledata in database['tiles'].values(): if "segment" in tiledata: segment = tiledata['segment'] - tiledata['frame'] = database['segments'][segment]['frames'] + tiledata['frames'] = database['segments'][segment]['frames'] tiledata['words'] = database['segments'][segment]['words'] + tiledata['segment_type'] = database['segments'][segment]['type'] database = database["tiles"] diff --git a/tools/fasm2frame.py b/tools/fasm2frame.py index 44943503..495d5218 100755 --- a/tools/fasm2frame.py +++ b/tools/fasm2frame.py @@ -171,6 +171,7 @@ def run(f_in, f_out, sparse=False, debug=False): 'baseaddr': [ tile['baseaddr'], tile['offset'], ], + 'type': tile['segment_type'], 'frames': tile['frames'], 'words': tile['words'], } diff --git a/tools/segprint2fasm.py b/tools/segprint2fasm.py index 5906044f..ac5f248b 100755 --- a/tools/segprint2fasm.py +++ b/tools/segprint2fasm.py @@ -73,7 +73,36 @@ def tag2fasm(grid, seg, tag): def run(f_in, f_out, sparse=False): with open("%s/%s/tilegrid.json" % (os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE")), "r") as f: - grid = json.load(f) + new_grid = json.load(f) + + grid = { + 'tiles': new_grid, + 'segments': {} + } + + for tilename, tile in grid['tiles'].items(): + if 'segment' in tile: + segment = tile['segment'] + + if segment not in grid['segments']: + grid['segments'][segment] = { + 'baseaddr': ( + tile['baseaddr'], tile['offset'], + ), + 'type': tile['segment_type'], + 'frames': tile['frames'], + 'words': tile['words'], + 'tiles': [tilename] + } + else: + assert grid['segments'][segment]['baseaddr'] == ( + tile['baseaddr'], tile['offset'], + ) + assert grid['segments'][segment]['type'] == tile['segment_type'] + assert grid['segments'][segment]['frames'] == tile['frames'] + assert grid['segments'][segment]['words'] == tile['words'] + + grid['segments'][segment]['tiles'].append(tilename) seg = None for l in f_in: diff --git a/utils/segprint.py b/utils/segprint.py index 5c4c233d..256842ea 100755 --- a/utils/segprint.py +++ b/utils/segprint.py @@ -62,6 +62,7 @@ for tile in grid['tiles'].values(): 'baseaddr': [ tile['baseaddr'], tile['offset'], ], + 'type': tile['segment_type'], 'frames': tile['frames'], 'words': tile['words'], }