Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[patch-axel-10] python scripts #54

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
python: inline align_memory()
Signed-off-by: Axel Heider <axelheider@gmx.de>
axel-h committed Sep 15, 2022
commit b215759036ba2ba78eeee2f37bc63d516b05b8c6
34 changes: 11 additions & 23 deletions tools/hardware/utils/memory.py
Original file line number Diff line number Diff line change
@@ -87,33 +87,21 @@ def reserve_regions(regions: Set[Region], reserved: Set[Region]) -> Set[Region]:
return ret


def align_memory(regions: Set[Region], config: Config) -> List[Region]:
''' Given a set of regions, sort them and align the first so that the
ELF loader will be able to load the kernel into it. Will return the
aligned memory region list, a set of any regions of memory that were
aligned out and the physBase value that the kernel will use. '''

ret = sorted(regions)
extra_reserved = set()

if config.get_kernel_phys_align() != 0:
new = ret[0].align_base(config.get_kernel_phys_align())
resv = Region(ret[0].base, new.base - ret[0].base)
extra_reserved.add(resv)
ret[0] = new

physBase = ret[0].base
return ret, extra_reserved, physBase


def get_physical_memory(tree: FdtParser, config: Config) -> List[Region]:
''' returns a list of regions representing physical memory as used by the kernel '''
regions = merge_memory_regions(get_memory_regions(tree))
reserved = parse_reserved_regions(tree.get_path('/reserved-memory'))
regions = reserve_regions(regions, reserved)
regions, extra_reserved, physBase = align_memory(regions, config)

return regions, reserved.union(extra_reserved), physBase
regions = sorted(reserve_regions(regions, reserved))

# Align the first so that the ELF loader will be able to load the kernel
# into it. Will return the aligned memory region list, a set of any regions
# of memory that were
kernel_phys_align = config.get_kernel_phys_align()
if kernel_phys_align != 0:
new = regions[0].align_base(kernel_phys_align)
reserved.add(Region(regions[0].base, new.base - regions[0].base))
regions[0] = new
return regions, reserved, regions[0].base


def get_addrspace_exclude(regions: List[Region], config: Config):