soc: allow regions that are not a power of 2
Align region to its power of 2, not the region size itself.
This commit is contained in:
parent
d504639f1c
commit
72ec359f52
|
@ -254,12 +254,13 @@ class SoCBusHandler(LiteXModule):
|
||||||
search_regions = {"main": SoCRegion(origin=0x00000000, size=2**self.address_width-1)}
|
search_regions = {"main": SoCRegion(origin=0x00000000, size=2**self.address_width-1)}
|
||||||
|
|
||||||
# Iterate on Search_Regions to find a Candidate.
|
# Iterate on Search_Regions to find a Candidate.
|
||||||
|
size_pow2 = 2**log2_int(size, False)
|
||||||
for _, search_region in search_regions.items():
|
for _, search_region in search_regions.items():
|
||||||
origin = search_region.origin
|
origin = search_region.origin
|
||||||
while (origin + size) < (search_region.origin + search_region.size_pow2):
|
while (origin + size) < (search_region.origin + search_region.size_pow2):
|
||||||
# Align Origin on Size.
|
# Align Origin on Size.
|
||||||
if (origin%size):
|
if (origin%size_pow2):
|
||||||
origin += (origin - origin%size)
|
origin += (origin - origin%size_pow2)
|
||||||
continue
|
continue
|
||||||
# Create a Candidate.
|
# Create a Candidate.
|
||||||
candidate = SoCRegion(origin=origin, size=size, cached=cached)
|
candidate = SoCRegion(origin=origin, size=size, cached=cached)
|
||||||
|
|
Loading…
Reference in New Issue