From e36cd38d72b011591d740dbc10aeadc20dee97e4 Mon Sep 17 00:00:00 2001 From: Marek Materzok Date: Fri, 3 Nov 2023 10:00:49 +0100 Subject: [PATCH] Fix alignment of data segments --- test/regression/memory.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/test/regression/memory.py b/test/regression/memory.py index 9b26209f4..5eac04f38 100644 --- a/test/regression/memory.py +++ b/test/regression/memory.py @@ -160,17 +160,21 @@ def load_segment(segment: Segment, *, disable_write_protection: bool = False) -> if flags_raw & P_FLAGS.PF_X: flags |= SegmentFlags.EXECUTABLE + config = CoreConfiguration() if flags_raw & P_FLAGS.PF_X: - # align only instruction section to full icache lines - align_bits = CoreConfiguration().icache_block_size_bits + # align instruction section to full icache lines + align_bits = config.icache_block_size_bits + else: + # align to memory words + align_bits = config.xlen // 8 - align_data_front = seg_start - align_down_to_power_of_two(seg_start, align_bits) - align_data_back = align_to_power_of_two(seg_end, align_bits) - seg_end + align_data_front = seg_start - align_down_to_power_of_two(seg_start, align_bits) + align_data_back = align_to_power_of_two(seg_end, align_bits) - seg_end - data = b"\x00" * align_data_front + data + b"\x00" * align_data_back + data = b"\x00" * align_data_front + data + b"\x00" * align_data_back - seg_start = align_down_to_power_of_two(seg_start, align_bits) - seg_end = align_to_power_of_two(seg_end, align_bits) + seg_start = align_down_to_power_of_two(seg_start, align_bits) + seg_end = align_to_power_of_two(seg_end, align_bits) return RandomAccessMemory(range(seg_start, seg_end), flags, data)