The Pedigree Project
0.1
|
Pedigree can already run on multiple architectures and hardware platforms, and the work towards making this possible makes porting relatively simple.
Note: the assumption throughout this page is that you are porting to a new architecture and hardware platform at the same time. If you are porting to a target that can use an existing processor or hardware target, you can skip those steps.
This is possibly the most complex part of the porting process. You will need to apply the Pedigree patches to a GCC compiler (ideally in something like a git repository), and then make the needed changes to support the [arch]-pedigree target you wish to add.
Then, you can update the patches with the now-larger diff and build a full toolchain.
See existing implementations in src/system/kernel/core/processor
and src/system/kernel/machine
for further guidance.
VirtualAddressSpace
with the needed MMU management for your targetsrc/system/kernel/utilities/Cache.cc
, add an entry to Cache::Cache()
to specify Cache virtual address rangesSee existing implementations in src/system/include/processor
and src/system/include/machine
for further guidance.
Processor
methods for the processor targetEVENT_BASE
for your processor target to an area of the virtual address space that can be used for event handler trampolines (needs 8K of memory)VirtualAddressSpace
with a valid memory layout for your targetsite_scons/defaults.py
to add a section for your architecture targetsrc/system/kernel/SConscript
to add the necessary source files for your machine targetSConscript
in the root directory to add your target to the various if
checks that enable builds in parts of the treesrc/subsys
may need to be edited to enable syscalls for new targetseasy_build_[arch].sh
script and enable it via .travis.yml
to enable continuous integration via Travis-CI (https://travis-ci.org); this will allow your new target to be built at every push and reveal breakage earlyscripts/runtest.py
as well so the continuous integration build will also perform a runtime testThe amount of changes needed to make a port is currently rather large and messy, and we want to reduce this to make porting significantly easier. See https://www.pedigree-project.org/issues/7 to track our progress on this.