aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG
blob: 7d24508e9d539e50e8626f16ac94a8a1f74ab2bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
## 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
instructions as supported by the host processor.

additionally, asmlinator sets up IA32_LSTAR and prepares the syscall target
address to receive syscalls. exits due to syscall are reported as the new
`VcpuExit::Syscall`.

VM setup now panics in the absence of 1GB page support, rather than proceeding
with totally bogus page tables. this limits support to processor generations:
* AMD K10 (~Phenom X4 9500, 2007) or later,
* Intel Sandy Bridge-E (~i7-3930K, 2011) or later

## 1.0.0

it exists. easy path to a VM that effectively boots directly to x86_64.

immediately 1.0.0 because this is already incredibly useful to me elsewhere and
an interface i think will hold up to modest usage.