https://bugs.winehq.org/show_bug.cgi?id=30220
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebastian@fds-team.de
--- Comment #7 from Sebastian Lackner sebastian@fds-team.de --- @Stefan: The attached patch helps (no crash on this instruction anymore), but afterwards the driver immediately hits the next issue (fixmes added to simplify debugging):
``` trace:seh:call_vectored_handlers handler at 0x7ed2fcce returned ffffffff trace:seh:raise_exception code=c0000096 flags=0 addr=0x7ed55181 ip=7ed55181 tid=0018 trace:seh:raise_exception eax=0053e654 ebx=00000000 ecx=0053e594 edx=0053ef4c esi=00000000 edi=0053e654 trace:seh:raise_exception ebp=0053e678 esp=0053e59c cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010246 trace:seh:call_vectored_handlers calling handler at 0x7ed2fcce code=c0000096 flags=0 fixme:int:emulate_instruction emulate_instruction fixme:int:emulate_instruction instr[0] = 6e fixme:int:emulate_instruction instr[1] = 74 fixme:int:emulate_instruction instr[2] = 64 fixme:int:emulate_instruction instr[3] = 6c fixme:int:emulate_instruction instr[4] = 6c fixme:int:emulate_instruction instr[5] = 2e ```
This privileged instruction code corresponds to: ``` .data:0x00000000 6e outs dx,BYTE PTR ds:[esi] .data:0x00000001 7464 je 0x00000067 .data:0x00000003 6c ins BYTE PTR es:[edi],dx .data:0x00000004 6c ins BYTE PTR es:[edi],dx ```
These instructions will also need to be emulated as it seems like the driver tries to directly access IO ports via assembler instructions. Code to emulate outsb/insb already exists in krnl386.exe/instr.c, so a simple stub is pretty easy, but doesn't bring us further:
outsb is supposed to read data from ds:esi, but in this case esi = 0x0 ? Most likely some more things are going wrong here. ;)
$ du -sh mtben1610su.exe 93M mtben1610su.exe
$ sha1sum mtben1610su.exe f457d13475a783a0d2fff5566c0279640ba26bc6
$ git describe origin/master wine-1.7.29-133-g433df0d