The ACPI tables should be always in LE format. The following should work: 1. Dump an ACPI table from a LE machine (cp /sys/firmware/acpi/tables/... /tmp/) 2. Decompile it on a BE machine (iasl -d ...) Actual: Error [...] TableHeader length [0xBB040000] greater than the input file size [0x4BB]. As you can see the length bytes are swapped. Happens in acpica-tools-20130823-5.fc19.ppc64, didn't check on newer versions. Thanks, Marcel
This may or may not be a simple fix. If there is a patch available, please post it. Thanks.
The global issue is of course that ACPI tables are generally little-endian. The ACPICA core uses macros to implement "endian independence", and these could conceivably be deployed in iASL/disassembler also.
(In reply to comment #2) > The global issue is of course that ACPI tables are generally little-endian. > The ACPICA core uses macros to implement "endian independence", and these > could conceivably be deployed in iASL/disassembler also. Hi Bob, Thanks for the analysis. Excuse my (lack of) knowledge, is it possible today to compile the upstream iASL/disassembler on a big endian machine? Thanks, Marcel
You may be able to compile it, but we now disallow execution at runtime: /* * Big-endian machines are not currently supported. ACPI tables must * be little-endian, and support for big-endian machines needs to * be implemented. */ if (AcpiIsBigEndianMachine ()) { fprintf (stderr, "iASL is not currently supported on big-endian machines.\n"); return (-1); } Until such time that full BE support is implemented.
Hi, Marcel Can you try this branch and report back issues: https://github.com/zetalog/acpica/tree/acpica-endian Or could you offer a remote accessible BE machine for us to test? Thanks in advance.