summaryrefslogtreecommitdiff
path: root/Documentation/arch
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/arch')
-rw-r--r--Documentation/arch/index.md3
-rw-r--r--Documentation/arch/x86/index.md42
2 files changed, 45 insertions, 0 deletions
diff --git a/Documentation/arch/index.md b/Documentation/arch/index.md
index c3b080e5ab..a0f1050868 100644
--- a/Documentation/arch/index.md
+++ b/Documentation/arch/index.md
@@ -6,3 +6,6 @@ architectures.
## 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 0000000000..3ecb9803a4
--- /dev/null
+++ b/Documentation/arch/x86/index.md
@@ -0,0 +1,42 @@
+# 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:
+* The CPU supports long mode
+* 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
+* The CPU supports 1GiB hugepages
+
+## Assuptions for ARCH_ROMSTAGE_X86_64 reference implementation
+* 0-4GiB are identity mapped using 1GiB huge-pages
+* Memory above 4GiB isn't accessible
+* pagetables reside in _pagetables
+* Romstage must install new pagetables in CBMEM after RAMINIT
+
+## Assuptions for ARCH_RAMSTAGE_X86_64 reference implementation
+* Romstage installed pagetables according to memory layout
+* Memory above 4GiB is accessible
+
+## 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