- Implement KiInitializeCpuFeatures amd call it early in the boot process
- fix KeProcessorArchitecture
- sumplify KiGetCpuVendor
- fix and enable __lldt
- remove some legacy code
svn path=/branches/ros-amd64-bringup/; revision=45095
- Fix a bug in the packet waiting code
- Display the IP address if getnameinfo fails
- tracert is actually useful now
svn path=/branches/aicom-network-branch/; revision=45094
- Move the TDI stuff from iphlpapi to a shared library called tdilib
[IP]
- Implement tcpip side of IP_HDRINCL
[PSDK, WSHTCPIP, WSHIRDA]
- Fix definition of WSHGetSocketInformation
[PSDK]
- Add AO_OPTION_* defines
[WSHTCPIP]
- Request notifications for bind also
- Implement WSHSetSocketInformation
[MSAFD]
- Implement event notifications (bonus: fixes a memory leak on socket closure due to unfreed helper context)
- Store TdiConnectionHandle the same way we store TdiAddressHandle
- Half-plement WSPSetSockOpt
- Fix WSPGetSockOpt
[TCPIP]
- Handle AO_OPTION_TTL, AO_OPTION_IP_DONTFRAGMENT (not working yet), AO_OPTION_BROADCAST (not working yet), and AO_OPTION_IP_HDRINCL
- Add new members of ADDRESS_FILE for the preceding AO options
[AFD]
- Return the connection handle in the Information of the IOSB (same as we do with the address file handle)
[GENERAL]
- Tracert works now
svn path=/branches/aicom-network-branch/; revision=45093
Patch by Jose Catena:
allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change
since esp was altered, but the definitions were not actually changed
See issue #5121 for more details.
svn path=/trunk/; revision=45088
- Switch to the new user handle manager. Added more handle types to win32k. One or two step to WND, desktop heap supported.
- Test with every application in my test suite. Needs more testing and clean up. Bleeding edge!
svn path=/trunk/; revision=45085
Implement InterruptDispatchTable, containing 256 dispatch stubs, that push the Vector on the stack and then jump to KiUnexpectedInterrupt. This way we have the vector as ErrorCode on the stack and we can report it with KeBugCheckWithTf.
svn path=/branches/ros-amd64-bringup/; revision=45082
34969 Some ULONG / SIZE_T fixes, handle amd64 in PspCreateThread
34986 Fix several 64 bit issues
35968 Fix Size parameter of CmpAllpcate (ULONG->SIZE_T).
35970 Fix pointer <-> ULONG cast
35971 Fix pointer <-> ULONG cast fixes
36332 fix 64 bit warnings
37435 Fix several ULONG/ULONG_PTR issues. Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength
39522 ExInitializeSystemlookasideList: Use InitializeSListHead instead of directly accessing the members. ExpAllocateLocallyUniqueId: use InterlockedCompareExchange64 instead of non-portable ExfInterlockedCompareExchange64
37433 fix InterlockedExchangePointer usage
38105 Use KeGetCurrentPrcb() instead of KeGetPcr()->Prcb / KeGetPcr()->CurrentPrcb
39160 Use wbinvd instruction for amd64, too.
svn path=/trunk/; revision=45066
[NTOS]: Optimize trap entry/exit by manually copying registers to the trap frame the correct way from the first time. Avoids conversion between PUSHA and KTRAP_FRAMEs and makes trap frames compatible the whole time (other than being slightly faster).
[NTOS]: Provide compiler with hints on likely code paths during trap entry and exit, which makes the code more linear and improves performance. The following assumptions (known to be true) are made: (1) Interrupts happen more often than system calls (per unit of time), so prioritize paths we take during interrupts. (2) The CPU spends most of its time in Ring 3, so prioritize traps from user-mode. (3) V8086 mode, debugging, 16-bit stacks, are uncommon, so de-prioritize them.
[NTOS]: Use KTRAP_FRAME offset names recommended by Timo instead of substraction which was confusing some people (still seems clearer to me).
svn path=/trunk/; revision=45064
KiExitV86Mode is supposed to return a pointer to the protected mode KTRAP_FRAME. Instead it was returning the value of TrapFrame->Edi, which would be identical to PmTrapFrame->Ebp, which doesn't have any particular meaning. Fix it by returning PmTrapFrame directly. Fixes 2nd stage boot.
svn path=/trunk/; revision=45062
[NTOS]: Add VDM debug spew to see why there's now an invalid opcode on Windows builds of VMWare and certain QEmu combinations. (Note: the double fault issue is fixed, this is a new issue).
svn path=/trunk/; revision=45057
__wine_push_frame and __wine_pop_frame are only used in x86 specific code in cppexcept.c. Move them there instead of trying to implement them for other architectures.
svn path=/branches/ros-amd64-bringup/; revision=45053