1
0
mirror of https://github.com/taigrr/gopher-os synced 2025-01-18 04:43:13 -08:00

4 Commits

Author SHA1 Message Date
Achilleas Anagnostopoulos
63c69fe8d3 acpi: implement internal VM method for executing AML blocks
The execBlock method supports the various control flows defined by the
ACPI standard (next instr, continue, break and return). It is designed
so that it can be recursively invoked both AML methods and various
flow-altering opcodes (e.g. opIf, opWhile e.t.c.)
2017-12-04 06:35:26 +00:00
Achilleas Anagnostopoulos
718006f4e4 acpi: define AML opcode jumptable and populate with placeholder function
Due to the large number of opcodes that the AML VM needs to support,
using a long switch statement will not be as performant as setting up a
jump table due to the way that the go compiler generates code for long
switch statements on integer values (asm code indicates that binary
search is used to select the switch target).

For the time being, the populateJumpTable method will assign a
placeholder function to each jump table entry that just returns a
"opcode X not implemented error".
2017-12-04 06:35:26 +00:00
Achilleas Anagnostopoulos
1d5d1dc3ec acpi: implement VM entity lookup and visit wrappers 2017-12-04 06:35:26 +00:00
Achilleas Anagnostopoulos
64f3dae485 acpi: define VM type and structs to maintain execution state 2017-12-04 06:35:26 +00:00