This project make possible to compile ACPI 2.0 driver from leaked XP SP1 & W2003 RTM sources, has same functionality as existing acpi.sys v6666 (still missed integer/fields/memory 64 bit support/)
Grab leaked XP SP1/W2003 RTM sources (google it)
Use "XPSP1/NT" directory as basedir if you want to compile acpi.sys for Windows XP x32
Use "Win2K3/NT" directory as basedir for Windows 2003 x32 / Windows 2003 x64 / Windows XP x64
Download any GNU patch package for windows (gnuwin32.sourceforge.net, cygwin, mingw, msys2, ...)
Open command console, change current dir to base\busdrv\acpi\
(Windows XP x32) Save text diff patch https://pastebin.com/C5NXwHbS (v7 update) to file base\busdrv\acpi\sp1_to_sp3(ACP2).patch
(Windows 2003 x32 / Windows 2003 x64 / Windows XP x64) Save text diff patch https://pastebin.com/8QURrM49 (v7 update) to file base\busdrv\acpi\rtm_to_sp2(ACP2).patch
(Windows 2003 x32 / Windows 2003 x64 / Windows XP x64) Rename Win2K3/NT/public to Win2K3/NT/public2
(Windows 2003 x32 / Windows 2003 x64 / Windows XP x64) Update compiler and headers to mix of W2003 DDK+WRK, unpack https://anonfiles.com/J1W9H1a8y1/W2003_tools_update_7z to basedir with overriding existing files
Remove "read only" flag from base\busdrv\acpi directory including sub-dirs and files
Apply patch to convert original SP1/RTM sources to SP3/SP2 with extended ACPi 2.0 syntax:
patching file driver/amlinew/amlipriv.h
patching file driver/amlinew/amlitest.c
patching file driver/amlinew/data.c
patching file driver/amlinew/misc.c
patching file driver/amlinew/object.c
patching file driver/amlinew/parser.c
patching file driver/amlinew/proto.h
patching file driver/amlinew/type1op.c
patching file driver/amlinew/type2op.c
patching file driver/inc/aml.h
patching file driver/nt/debug.c
patching file driver/nt/debug.h
patching file driver/nt/devpower.c
patching file driver/nt/internal.c
patching file driver/nt/interupt.c
patching file driver/nt/irqarb.c
patching file driver/nt/osnotify.c
patching file driver/nt/pciopregion.c
patching file driver/nt/rangesup.c
patching file driver/nt/root.c
patching file driver/nt/wake.c
Change current dir to basedir
(Windows XP x32 / Windows 2003 x32) Run razzle environment setup:
(Windows 2003 x64 / Windows XP x64) Run razzle environment setup
Change current dir to base\busdrv\acpi\driver\
Complie ACPI driver: build /Dcegbw
Compiled acpi.sys.sys will be in (x32) base\busdrv\acpi\driver\nt\obj\i386\ or (x64) base\busdrv\acpi\driver\nt\obj\amd64\
Project contains implementation of new ACPi 2.0 syntax:
ToInteger
ToString
ToHexString
Continue
ConcatenateResTemplate
ToDecimalString
Mod
ToBuffer
CopyObject
MidString
QwordConst (inside ParseIntObj)
Timer
CreateQWordField(fake it as CreateDWordField)
Know issues workarounds:
BSOD 0xA5 (0x10006, ...) missing _DIS method for "PNP0C0F" (PCI Interrupt Link Devices)
BSOD 0xA5 (0x02,xxx, 0x0, ...) ACPI vs E820 mem ranges conflict
IOTRAPS I/O range 0xFF00-0xFFFF vs VGA (10-bit decode!) conflict
BSOD 0xA5(0x03, ..., C0140008, ...) error in ValidateArgTypes() when reading 64-bit fields
BSOD 0x7E(c0000005, ...) error in AcpiArbCrackPRT() when referencing null pointer
BSOD 0xA5 (0x11, 0x08, ..., ...) error in _AMLILoadDDB() (zero lenght buffer)
BSOD 0xA5 (0x11, 0x08, ..., ...) error in _AMLILoadDDB() (doubled device definition)
BSOD 0xA5 (0x0000000D, ..., 0x4449555F, 0) absence _UID method
BSOD 0xA5 (0x11, 0x08, ..., ...) error in _AMLILoadDDB() (Connection() opcode)
CPU definition as Device with _HID=ACPI0007
BSOD 0xA5(0x03, ..., C0000034, ...) postponed SSDT loading on x64 platform (v8 update)
Assertion Fail on loaddsdt.c, line 488 for x64 builds (v8 update)
Unresolved issues:
BSOD 0xA5 (0x0000000D, ..., ..., ...) duplicated/absence _HID/_UID method (AMD boards)
BSOD 0xA5 (0x2001, 0x01, 0xC0000034, ...) failure to evaluate the _PIC method in NotifyHalWithMachineStates()
Conflicted device names in Windows device manager (Code 42)