From ad82512ae89eeb840df9021148337c01ad0fa873 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sun, 24 May 2026 00:39:00 +0000 Subject: support 16-bit and 32-bit VM configurations --- CHANGELOG | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'CHANGELOG') 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 -- cgit v1.1