Zitat von daniel_k im Beitrag #1987@Mov AX, 0xDEAD, interesting that, with XP's ACPI.SYS there is no conflict
i dont know how you run original acpi.sys with original _crs of IOTR Device (on intel mb this acpi virtual device generate conflict) original _crs has ConcatenateResTemplate opcode, so it was commented/patched some way
Zitat von diderius6 im Beitrag #1990 For the not working PCIe (graphikcard) E/A-Bereich FF00 - FFFE wird verwendet von: \Driver\VgaSave PCI Standard-PCI-zu-PCI-Brücke ACPI\PNP0C02\IOTRAPS
Zitat von diderius6 im Beitrag #1978 The gigabyte h110m-s2h board with original BIOS F25 starts with ACPI support. But there is no graphikcard and on one PCI-to-PCI bridge (yellow exclamation mark) told, not enough resources. When you look at the IRQ, they go only up to 19.
check hidden virtual devices "Motherboard resource" in Device Manager one of these may conflict with pci-vga, in my case it was ACPI\PNP0C02\IOTRAPS and conflict with IO Ports 0xFF00-0xFFFF so i set resources to zero in dsdt for this acpi device
Zitat von infuscomus im Beitrag #1976@diderius6 @daniel_k @Mov AX, 0xDEAD what are we doing with acpi.sys? don't we already have a patched acpi.sys from longhorn 5048 that works?
I told how to add ACPI 2.0 opcodes to classic winxp's acpi.sys. 5048 still doesnt support QWordConst opcode, see Windows XP SP3 32bit and modern PC parts (21) , this opcode used in _ps0 of XHCI
Zitat von diderius6 im Beitrag #1956@daniel_k "Does DSDT can be modded in VirtualBox? Did you ever try?" I think yes, but the results on real compi may be different
dsdt is hardcoded in Vbox (VBoxDD.dll) old qemu 1.6 load dsdt from file acpi-dsdt.aml if runed with "-M pc" (but qemu is slow and no gui)
Zitat von daniel_k im Beitrag #1953 Switch does not exist in ACPI.SYS. Does XP ignores this? Will check ACPI specs.
switch()+case() is no real commands switch (Arg0) -> case (0x04) {...} is set of low level command like _T_1 = Arg0, if If (_T_1 == 0x04) then {...} _T_1 - temp variable
Zitat von daniel_k im Beitrag #1948 6F680200-40BA0200-8A 1- Function address 2- Opcode "CreateDwordField" String 3- Opcode
Not exactly, record begin with "40BA0200" - offset to string representation 8a - opcode 64BA0200 - offset to "CCN", encoded types of arguments (char,char, int ?) 02 - i dont know ..... FF680200 - offset to handler, _CreateDWordField
if no need create new implementation, for CreateQWordField enough set 0x8F record same as 0x8A =>"10 CA 02 00" then opcode 0x8f is equivalent of 0x8a
Zitat von daniel_k im Beitrag #1946 - add CreateQWordField, which actually calls CreateDWordField. - Patch Store so it will ignore higher order address and just copy the lower 32-bit part. - XP is tricked into thinking we are working with 32-bit addresses.
This trick will work. no need touch "store" because in winxp all ints are 32, so M64L/M64B/Zero is 32 too
Zitat von daniel_k im Beitrag #1943 I was wondering, as I still don't have the knowledge to do it myself, wouldn't it be possible to add support for CreateQWordFieldOp by using the same function that processes CreateDWordFieldOp?
CreateQWordFieldOp is just creating field and no more, yes it is possible add new opcode, but it useless fields actual used in other procs like _ReadField/_ReadFieldObj/... and need heavy patch it to support 64b fields
after i discovered "vista beta acpi.sys" anyone can add new opcode handlers to classic winxp acpi.sys, but only 32 bit integers betas is compatible with winxp. 1) copy bytes from existing acpi.sys 2) add relocs 3) create missing structs 4) add missing import or replace with internal impelemtation
that's how I made my acpi.sys but took the code from win7 x32 (converted back 64-int logic to 32-int)
in low memory available 2877+125 =3002Mb, in high pae 1012Mb, total 4014Mb ~ 4096Mb in my case bios set some hardware mapping(?) to translate cpu "physical adresses" above first 4G range to "low" ramchip physical lines, because ram is 4G and has relative 0x0-0xFFFF FFFF adressing only
Zitat von daniel_k im Beitrag #1929 3: 0x00000000-00100000 (0x00000000-3FF00000 ~ 1023 MB) 1 (Memory) 5: 0x00000000-40400000 (0x00000000-74F90000 ~ 1 GB) 1 (Memory) 8: 0x00000000-B5392000 (0x00000000-080CC000 ~ 128 MB) 1 (Memory) 14: 0x00000001-00000000 (0x00000003-3F000000 ~ 12 GB) 1 (Memory) Can't speak of the Z390, but the Z370 (where I ran the tools) is virtually the same as other 200 series chipsets.
total is 14.1, waste is about 2 gb ? this bios is not good, it doesnt advertise memory in region 0x8000 0000-0xFFFF FFFF (2G) and no extend this claimed region in high pae ranges (limited to 0x3 3F00 0000)
Zitat von daniel_k im Beitrag #1926 @diderius6, try both these, not sure if I following the logic correctly, so please try both. At least it didn't crash here!
still no reloc, after acpi.sys mapped to some adress in high memory, 0x0E record in opcodetable still be "90 D2 02 00", so pointed to 0x0002d290 => access violation err (
Zitat von daniel_k im Beitrag #1920@diderius6 If I understand correctly and if Mov AX, 0xDEAD gave us all the required steps to add support for qwords, try the acpi.sys (checked/debug version included) or apply the changes to yours
1 hook _parseintobj in place like "dec esi" (esi - opcode), comparing esi vs 0xe8 (given that the compiler has optimized the CASE statement in C Language and the esi is constantly decreasing), then restore original instruction and jmp back. I chose hook in instruction "sub esi, 0F3h" and replaced it to "jmp _QWordConst_check" 2 allocate free bytes in code section, add processing 0xe8 opcode (result.integer is just "+8") 3 add reloc to 0x2D368(0x1D368 RVA)
Zitat von diderius6 im Beitrag #1915 Have you tested, if this code overcomes the BSOD A5 during use of asl.exe with full acpi support uploading a modded DSDT
this patch to _ParteIntObj allow use 0x0E opcode(QWORD_OP) in dsdt code, no more A5-C0140001 error for x64 constants. for full functionality need set "0x0E record" in _OpcodeTable to _atDataObj (_atDataObj is record for integers types).