- Simplify CurrentDirectories array usage.
- We can directly use a pointer to a DOS_DATA structure stored in the guest memory.
- Use the DOS data structures for CurrentDrive (in DOS_DATA) and LastDrive (this is in fact NumLocalDrives in the SYSVARS list).
- Use ANSI versions of GetLocaleInfo where applicable.
svn path=/trunk/; revision=67750
Bring in initiated work on IRPs in NTFS (and complete it).
This simplifies the way IRPs and their context are handled in the driver.
Only VfatDispatchRequest() is responsible of completing IRPs (if required), freeing the IRP context (if required), and queueing the IRP for later completion (if required).
This allows removing duplicated code, hacks, and so on. It might help reducing IRP leaks, or memory leaks.
By default, VfatDispatchRequest() will complete the IRP and delete the IRP context.
In case you don't want it to complete the IRP (because you passed it down, for instance), remove the IRPCONTEXT_COMPLETE flag. See for instance: VfatDeviceControl().
In case you want to queue the IRP (you previously called: VfatQueueRequest()), call the newly introduced VfatMarkIrpContextForQueue() function that will prepare it.
svn path=/trunk/; revision=67743
- Separate C++ exports per architecture, add ARM exports (that again have different mangling)
- Add symbol aliases for ARM C++ exports
- Compile in/out functions only on x86
- Add some missing exports for non-x86
svn path=/trunk/; revision=67730
setjmp is a macro expanding to _setjmp or _setjmpex. In soviet russia and on ARM builds, the compiler will convert invocation of _setjmp back into a call to setjmp. The compiler handles _setjmp and _setjmpex in the same way, generating code where r0 points to the jump_buf and r1 points to the current functions stack frame (sp on function entry). So make setjmp and _setjmp aliases to _setjmpex and make the latter use r1.
svn path=/trunk/; revision=67729
- Add some early "return" after calls to EmulatorTerminate()
- Some VDDs rely on the fact that NTVDM calls ExitProcess on Windows when it is going to quit, so let's do the same.
- Put port 61h (and 62h) support in ppi.c (programmable-peripheral-interface).
svn path=/trunk/; revision=67726
Create the "Hardware Profiles\0000" key as part of the registry setup. This must be done at this point because the "Hardware Profiles\Current" link will only be created, if the "Hardware Profiles\0000" key exists.
svn path=/trunk/; revision=67725
Partly revert previous changes, bringing back copysignf. Add global defines copysignf=_copysignf, since we have that now.
svn path=/trunk/; revision=67723