Patrick Rudolph has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/30056
Change subject: Documentation: Add arch x86 ......................................................................
Documentation: Add arch x86
Describe state and assuptions made about x86_64 support.
Change-Id: I308a09b0eac269afd30df95ed3ea195238a6cfbe Signed-off-by: Patrick Rudolph siro@das-labor.org --- M Documentation/arch/index.md A Documentation/arch/x86/index.md 2 files changed, 33 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/56/30056/1
diff --git a/Documentation/arch/index.md b/Documentation/arch/index.md index c3b080e..a0f1050 100644 --- a/Documentation/arch/index.md +++ b/Documentation/arch/index.md @@ -6,3 +6,6 @@ ## RISC-V
- [RISC-V documentation](riscv/index.md) + +## x86 +- [x86 documentation](x86/index.md) diff --git a/Documentation/arch/x86/index.md b/Documentation/arch/x86/index.md new file mode 100644 index 0000000..b77a34b --- /dev/null +++ b/Documentation/arch/x86/index.md @@ -0,0 +1,30 @@ +# x86 architecture documentation + +This section contains documentation about coreboot on x86 architecture. + +## State of x86_64 support +At the moment there's no single board that supports x86_64 or to be exact +`ARCH_RAMSTAGE_X86_64` and `ARCH_ROMSTAGE_X86_64`. + +In order to add support for x86_64 the following assumptions are made: +* All memory returned by malloc must be below 4GiB in physical memory +* All code that is to be run must be below 4GiB in physical memory +* The high dword of pointers is always zero +* The reference implementation is qemu + +## Steps to add basic support for x86_64 +* Add x86_64 toolchain support - *DONE* +* Fix compilation errors - *DONE* +* Fix linker errors - *TODO* +* Add x86_64 rmodule support - *ONGERRIT* +* Add x86_64 exception handlers - *TODO* +* Setup page tables for long mode - *TODO* +* Add assembly code for long mode - *TODO* +* Add assembly code to return to protected mode - *TODO* +* Implement reference code for mainboard `emulation/qemu-q35` - *TODO* + +## Porting other boards +* Fix compilation errors +* Test how well CAR works with x86_64 and paging +* Improve mode switches +* Test libgfxinit / VGA Option ROMs / FSP