FADT BootArchitectureFlags pre 2.0
- makerimages
- Member
- Posts: 27
- Joined: Sun Dec 28, 2014 11:16 am
- Libera.chat IRC: Makerimages
- Location: Estonia
FADT BootArchitectureFlags pre 2.0
Ok, apparently, the FADT BootArchitectureFlags is used in ACPI 2.0. But This is needed for PS/2 controller existence checking. What is the BootArchitectureFlags equiv. for pre- 2.0 ? The Flags field?
Working on SinusOS.
-
- Member
- Posts: 5588
- Joined: Mon Mar 25, 2013 7:01 pm
Re: FADT BootArchitectureFlags pre 2.0
What are your OS's minimum system requirements? I doubt your OS will run on anything so old that it's PC-compatible but not AT-compatible.makerimages wrote:But This is needed for PS/2 controller existence checking.
Re: FADT BootArchitectureFlags pre 2.0
Modern computer might not have PS/2, and be USB-only.Octocontrabass wrote:What are your OS's minimum system requirements? I doubt your OS will run on anything so old that it's PC-compatible but not AT-compatible.
-
- Member
- Posts: 5588
- Joined: Mon Mar 25, 2013 7:01 pm
Re: FADT BootArchitectureFlags pre 2.0
Modern computers will support at least ACPI 2.0.
Re: FADT BootArchitectureFlags pre 2.0
Hi,
In ACPI 2.0 and later, the first 2 bytes at offset 109 became the misaligned 16-bit "IAPC_BOOT_ARCH" flags, and the byte at offset 111 is "must be zero".
Note that (in general, for all ACPI tables) there is no "ACPI version number" and all of the tables only have a "table version number". Each time they change the table they increase the version number, but if they don't change the table they don't change the table's version number. For example, for ACPI 6.0 the DSDT has "table version 2", the SSDT has "table version 2" and the MADT has "table version 3".
Also; it would be a mistake to assume that firmware doesn't mix and match. For example; the FADT might have "table version 1" (from ACPI 1.0) while MADT has "table version 3" (from ACPI 4.0?); or FADT might have "table version 6" (from ACPI 6.0) while MADT has "table version 1" (from ACPI 1.0).
Mostly; you'd check if the FADT "table version" is 2 or higher, and if it is you'd check the "IAPC_BOOT_ARCH" flags to see if (e.g.) 8042 is present; and if FADT "table version" is 1 (or lower?) then the "IAPC_BOOT_ARCH" flags don't exist and you'd just assume an 8042 is present (and you'd still check the FADT "table version" even if something else makes your software think it's ACPI 2 or later).
Cheers,
Brendan
In ACPI 1.0b; there's 3 reserved bytes at offset 109 in the FADT (most likely padding for alignment) followed by a 32-bit "flags" field at offset 112.makerimages wrote:Ok, apparently, the FADT BootArchitectureFlags is used in ACPI 2.0. But This is needed for PS/2 controller existence checking. What is the BootArchitectureFlags equiv. for pre- 2.0 ? The Flags field?
In ACPI 2.0 and later, the first 2 bytes at offset 109 became the misaligned 16-bit "IAPC_BOOT_ARCH" flags, and the byte at offset 111 is "must be zero".
Note that (in general, for all ACPI tables) there is no "ACPI version number" and all of the tables only have a "table version number". Each time they change the table they increase the version number, but if they don't change the table they don't change the table's version number. For example, for ACPI 6.0 the DSDT has "table version 2", the SSDT has "table version 2" and the MADT has "table version 3".
Also; it would be a mistake to assume that firmware doesn't mix and match. For example; the FADT might have "table version 1" (from ACPI 1.0) while MADT has "table version 3" (from ACPI 4.0?); or FADT might have "table version 6" (from ACPI 6.0) while MADT has "table version 1" (from ACPI 1.0).
Mostly; you'd check if the FADT "table version" is 2 or higher, and if it is you'd check the "IAPC_BOOT_ARCH" flags to see if (e.g.) 8042 is present; and if FADT "table version" is 1 (or lower?) then the "IAPC_BOOT_ARCH" flags don't exist and you'd just assume an 8042 is present (and you'd still check the FADT "table version" even if something else makes your software think it's ACPI 2 or later).
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
- thepowersgang
- Member
- Posts: 734
- Joined: Tue Dec 25, 2007 6:03 am
- Libera.chat IRC: thePowersGang
- Location: Perth, Western Australia
- Contact:
Re: FADT BootArchitectureFlags pre 2.0
brendan is right there - If the FADT is older than the revision that contains the IA32 boot flags, you assume that the 8042 is present. (Current qemu ships with tables that require knowing this)
Kernel Development, It's the brain surgery of programming.
Acess2 OS (c) | Tifflin OS (rust) | mrustc - Rust compiler
Currently Working on: mrustc
Acess2 OS (c) | Tifflin OS (rust) | mrustc - Rust compiler
Currently Working on: mrustc