error.bend

bend-osdev-acpi@0.1.2.0 · 69 lines · 0 definitions

1# bend-osdev-acpi, error.bend: why a table, an AML definition block or an
2# AML evaluation was refused. One constructor per failure, so a caller can
3# tell them apart.
4import Base
5import bend-osdev-word64@0.1.1.1/word64.bend as W
6import bend-osdev-bytes@0.1.1.1/bytes.bend as B
7
8type AcpiError is Data:
9  # Tables
10
11  # fewer bytes than the structure needs: need, got
12  AcpiTooShort{need: Nat, got: Nat}
13  # the signature is not the one the parser reads
14  AcpiBadSignature{got: B.Octets}
15  # a table's length field below its header, or past the bytes given
16  AcpiBadLength{length: U32}
17  # the bytes of a table do not sum to 0 mod 256 (the sum, mod 256)
18  AcpiBadChecksum{sum: U32}
19  # the RSDP's first 20 bytes do not sum to 0 mod 256
20  AcpiRsdpBadChecksum{sum: U32}
21  # the RSDP (revision 2 or later) does not sum to 0 mod 256 over its length
22  AcpiRsdpBadExtChecksum{sum: U32}
23  # a revision this parser does not read
24  AcpiBadRevision{revision: U32}
25  # a sub-structure (MADT, SRAT entry) at this offset in the table's body is
26  # shorter than 2 bytes, shorter than its type needs, or runs past the table
27  AcpiBadEntry{offset: Nat, kind: U32}
28  # a table's body does not hold what its fields say (an SLIT matrix that
29  # does not fit, an RSDT/XSDT body that is not a whole number of entries)
30  AcpiBadSize{size: Nat}
31  # the memory reader has no bytes at this physical address
32  AcpiNotMapped{address: W.W64}
33  # no table with this signature
34  AcpiTableMissing{signature: B.Octets}
35
36  # AML
37
38  # the definition block or a package ends inside a term
39  AcpiAmlTruncated{}
40  # an opcode this interpreter does not know (extended opcodes: 0x5B00 + op)
41  AcpiAmlBadOpcode{opcode: U32}
42  # a PkgLength with reserved bits set, or longer than its enclosing package
43  AcpiAmlBadPkgLength{}
44  # a NameString that is not well-formed
45  AcpiAmlBadName{}
46  # a name that does not resolve
47  AcpiAmlUndefined{path: String}
48  # a name defined twice in one scope
49  AcpiAmlDuplicate{path: String}
50  # an operand of the wrong kind (a statement where a value is needed, a
51  # value that cannot be converted, a reference where none can be taken)
52  AcpiAmlBadOperand{opcode: U32}
53  # an operation on an object of a type it does not take
54  AcpiAmlBadType{what: String}
55  # Index past the end of a buffer, string or package; a field outside its
56  # region or buffer
57  AcpiAmlRange{}
58  # Divide or Mod by zero
59  AcpiAmlDivZero{}
60  # Break or Continue outside While, Return outside a method
61  AcpiAmlBadControl{}
62  # a Fatal operator: type, code, argument
63  AcpiAmlFatal{kind: U32, code: U32, arg: W.W64}
64  # a construct this interpreter does not support (named in README.md)
65  AcpiAmlUnsupported{what: String}
66  # the step bound ran out before the evaluation finished
67  AcpiAmlStepLimit{}
68  # the operation-region host refused an access (its own code)
69  AcpiAmlHost{code: U32}