While doing it after is a tiny optimization (no need to wait for esp to be ready) and would work with all real traps (which clear cli), it doesn't work with Zw calls that directly call KiSystemService with interrupts enabled. This caused random trap frame corruption when an interrupt fired after members of the trap frame have been set but before esp was adjusted. Should hopefully fix most random failures on real hardware and qemu.
svn path=/trunk/; revision=45598
- Reset play position when an audio stream is stopped
-- Fixes playback in looped mode (DirectSound) when a buffer is played&stopped more than once
svn path=/trunk/; revision=45585
- Setup a default format for the primary sound buffer
- Store last used write position and use it when checking current position
- Check if the buffer has already started to play
- Fill audio buffer with silence bytes when initializing the secondary sound buffer
-- Partialy makes graphedit work when building a simple render graph(FileAsync->WaveParser->AudioRenderer).
svn path=/trunk/; revision=45584
- Replace mixer / wave support code by mmixer library
[MMIXER]
- Compare device name from 2 character onwards as there are difference in paths in user mode / kernel mode
- Invoke create pin callback if the caller provides it
[WDMAUD.DRV]
- Apply changes from mmixer library
-- Tested in Vbox with Winamp / ReactOS mplay32
svn path=/trunk/; revision=45579
[NTOS]: Map the ARM3 PFN database as well, now.
[NTOS]: Start initializing the ARM3 PFN database entries, right now for pages that have been mapped directly through PTE/PDE manipulation.
svn path=/trunk/; revision=45569
[NTOS]: Refactor the mapping of the PTEs for the PFN database into MiMapPfnDatabase and move the code to portable directory.
[NTOS]: Move and refactor some other definitions, and make some numbers more portable by defining arch-specific subvalues.
[NTOS]: Make the PFN database actually 2 PFN Databases: MmPfnDatabase[0] which is the ReactOS mapping of PHYSICAL_PAGE structures, and MmPfnDatabase[1] which will be the ARM3 mapping of MMPFN structures. The latter is as-of-yet unused, but memory for it is now being reserved.
svn path=/trunk/; revision=45566
[NTOS/HAL] Move trap entry points from C into a GAS/ML compatile assembly file (might need fine tuning for ML). The entries are generated by a shared assembly macro TRAP_ENTRY. Removed KiTrapStub, KiIsV8086TrapSafe, KiIsUserTrapSafe, KiSetSaneSegments, removed segment handling from KiEnter*Trap.
[NTOS] Make KiFastCallEntryHandler and KiSystemServiceHandler FASTCALL and pass the systemcall number in TrapFrame->Eax
[HAL] Use _setjmp/longjmp instead of saving a trapframe in HalpBiosCall
svn path=/trunk/; revision=45565
- Major improvements in the msvc backend
- Create a .vsprops file for every configuration in the root folder. This lets us make vcproj files a lot smaller
- When building with our headers actually use all of our headers and not a mix of our sdks and the headers of the crt that comes with msvc
- Add a rule to build .s files based on the idea by jcatena
- Add a rule for .spec and .pspec files. pspec doesn't work well yet
- Various fixes
- Please note the the above are aplied only to the vcproj files and not to the vcxrpoj files
The above let us compile large parts of trunk with the generated visual studio projects
svn path=/trunk/; revision=45564
[NTOS]: Fix SecondaryColor computations. If the KPCR has no deta, use the default colors of 8, not just 1. Also handle cases where there is more L2 cache than we'd like -- set the secondary colors to a maximum of 1024 in that case. Finally, if the colors are not a power of two, or there are not enough (due to a registry setting), use the default of 8.
svn path=/trunk/; revision=45557
[NTOS]: Factor out computations of NP sizes and limits into MiComputeNonPagedPoolVa.
[NTOS]: Fix NP size/limit calculations to use the amount of FREE RAM, not the amount of INSTALLED RAM.
[NTOS]: Use Windows 2003's algorithm for NP size on machines with more than 512MB of FREE RAM.
[NTOS]: Partly handle the case of machines with NP over 128MB.
svn path=/trunk/; revision=45556
- Remove WorkItem code as its not needed. UsbHub driver polls the hubs for device connects.
- Register USB Host Controller Device Interface during AddDevice.- Implement more URB's USB_DEVICE_DESCRIPTOR_TYPE, USB_CONFIGURATION_DESCRIPTOR_TYPE, URB_FUNCTION_SELECT_CONFIGURATION, URB_FUNCTION_CLASS_DEVICE/USB_DEVICE_CLASS_HUB.
- Implement returning generic UsbdDeviceHandle in URB struct.
svn path=/trunk/; revision=45554
- Define Device and Configuration Descriptors for RootHub20.
- Queue all USB_SUBMIT_URBs and create a separate thread to handle them.
- For PNP START_DEVICE, Create the internal RootHub usb device and register usb hub device interface.
- Fill in direct call interface for USB_BUS_INTERFACE_USBDI_V2 and USB_BUS_INTERFACE_HUB_V5.
- Implement Direct Call Interface function GetExtendedHubInformation.
- Remove duplicate structures that are already defined in USB Headers. Some reorganization.
svn path=/trunk/; revision=45552
[NTOS]: Define the template PTE/PDE statically, instead of doing it in code. It's faster, and saves us the trouble of not being able to use the template from point 0. Move the template setup into ARM3 instead of page.c.
svn path=/trunk/; revision=45549
[NTOS]: Separate out platform-specific parts of ARM3 initialization instead of having everything in an arch-specific file.
No functional code changes.
svn path=/trunk/; revision=45547
[NTOS]: Move HYPER_SPACE to 0xC0500000 since it must be on its own PDE. We need to revisit some FreeLDR Mm decisions later.
[NTOS]: Move certain arch-specific definitions from mm.h to the arch-specific mm.h
[NTOS]: Fix certain parts of ARM3 which made the assumption that a PDE shares the same structure as a PTE. This is true on all architectures except ARM. We now define a new MMPDE type specifically for PDEs. On x86 it is defined to MMPTE with no changes.
svn path=/trunk/; revision=45542
- Set the minimum GCC version to 4.4.0 and minimum Binutils version to 20091016.
- Remove the -fno-unit-at-a-time hacks.
- Remove dgorbachev's temporary hacks for user-mode C++ applications.
- Merge ntoskrnl's "precomp.h" and "ntoskrnl.h" again, the PCH issues have been fixed.
- Use our "ofmt_stub.a" to be compatible with newer MinGW Runtime versions.
- Use LD's new -exclude-all-symbols option to not auto-export all symbols in case no DEF file or __declspec(dllexport) was specified.
We used to patch our LD version to work around this problem.
- Use LD's --start-group and --end-group parameters to allow a more flexible linking order.
- Use GCC's -fno-set-stack-executable for amd64 and i386 targets to disable adding the __enable_execute_stack code.
- Change the makefile's name to "makefile-$(ARCH).auto" for all architectures.
- Remove some -Wno-error flags.
See issue #4810 for more details.
svn path=/trunk/; revision=45535