aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-05-24 00:39:00 +0000
committeriximeow <me@iximeow.net>2026-05-24 00:39:00 +0000
commitad82512ae89eeb840df9021148337c01ad0fa873 (patch)
treeaf328c258527bfd7fafaec1c54b14651332e06e5 /CHANGELOG
parent8a5775c618a4810edba952bd152f158f95b60096 (diff)
support 16-bit and 32-bit VM configurations
Diffstat (limited to 'CHANGELOG')
-rw-r--r--CHANGELOG23
1 files changed, 23 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 999bba8..7d24508 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,26 @@
+## 2.1.0
+
+asmlinator now supports creating protected-mode and real-mode VMs.
+
+the new Vm::create_by_settings consumes an (also new) VmSettings structure
+which declares the VM's base memory size and desired `IsaMode`. `Vm::create` is
+now a short-hand for
+```
+Vm::create_by_settings(VmSettings::new(mem_size, IsaMode::Protected))
+```
+
+control structures are laid out differently in 32-bit and 16-bit modes.
+
+in the protected-mode case, PSE is set and the page table is used to map memory
+as 4MiB pages. segment limits are set to their maximum values.
+
+in the real-mode case, a second code segment is established for the IDT, which
+is still at the linear address 0x2000. code, being placed at the 4096th byte
+before the end of memory, with the second code segment covering this lower
+region of memory. `cs`, `ds`, and other segment selectors are configured to
+address the last 4096 bytes of memory with code placed at (and `ip` set to)
+address 0 in this segment.
+
## 2.0.0
asmlinator now sets up VMs to be able to execute SSE, AVX, and AVX512